.github/workflows/main.yml: try improving caching for Go artifacts

The default caching for Go artifacts from actions/setup-go@v4 uses the hash of go.sum file
as a cache key - see https://github.com/actions/cache/blob/main/examples.md#go---modules .
This isn't enough for VictoriaMetrics case, since different makefile actions build different the Go artifacts,
which need to be cached. So embed the action name in the cache key.
This commit is contained in:
Aliaksandr Valialkin 2023-11-21 00:58:41 +02:00
parent a007a5a8a4
commit c160a49908
No known key found for this signature in database
GPG key ID: 52C003EE2BCDB9EB

View file

@ -33,17 +33,53 @@ jobs:
uses: actions/setup-go@v4 uses: actions/setup-go@v4
with: with:
go-version: 1.21.4 go-version: 1.21.4
check-latest: true cache: false
cache: true
- name: Dependencies - name: Cache Go artifacts
uses: actions/cache@v3
with:
path: |
~/.cache/go-build
~/go/pkg/mod
~/go/bin
key: go-artifacts-${{ runner.os }}-check-all-${{ hashFiles('go.sum') }}
restore-keys: go-artifacts-${{ runner.os }}-check-all-
- name: Run check-all
run: | run: |
make install-golangci-lint
make check-all make check-all
git diff --exit-code git diff --exit-code
test: build:
needs: lint needs: lint
name: build
runs-on: ubuntu-latest
steps:
- name: Code checkout
uses: actions/checkout@v4
- name: Setup Go
id: go
uses: actions/setup-go@v4
with:
go-version: 1.21.4
cache: false
- name: Cache Go artifacts
uses: actions/cache@v3
with:
path: |
~/.cache/go-build
~/go/pkg/mod
~/go/bin
key: go-artifacts-${{ runner.os }}-crossbuild-${{ hashFiles('go.sum') }}
restore-keys: go-artifacts-${{ runner.os }}-crossbuild-
- name: Build
run: make crossbuild
test:
needs: build
strategy: strategy:
matrix: matrix:
scenario: ["test-full", "test-pure", "test-full-386"] scenario: ["test-full", "test-pure", "test-full-386"]
@ -57,39 +93,22 @@ jobs:
uses: actions/setup-go@v4 uses: actions/setup-go@v4
with: with:
go-version: 1.21.4 go-version: 1.21.4
check-latest: true cache: false
cache: true
- name: Cache Go artifacts
uses: actions/cache@v3
with:
path: |
~/.cache/go-build
~/go/pkg/mod
~/go/bin
key: go-artifacts-${{ runner.os }}-${{ matrix.scenario }}-${{ hashFiles('go.sum') }}
restore-keys: go-artifacts-${{ runner.os }}-${{ matrix.scenario }}-
- name: run tests - name: run tests
run: | run: make ${{ matrix.scenario}}
make ${{ matrix.scenario}}
- name: Publish coverage - name: Publish coverage
uses: codecov/codecov-action@v3 uses: codecov/codecov-action@v3
with: with:
file: ./coverage.txt file: ./coverage.txt
build:
needs: test
name: build
runs-on: ubuntu-latest
steps:
- name: Code checkout
uses: actions/checkout@v4
- name: Setup Go
id: go
uses: actions/setup-go@v4
with:
go-version: 1.21.4
check-latest: true
cache: true
- uses: actions/cache@v3
with:
path: gocache-for-docker
key: gocache-docker-${{ runner.os }}-${{ steps.go.outputs.go-version }}-${{ hashFiles('go.mod') }}
- name: Build
run: |
make crossbuild