From c160a49908482e91b175e67201736dc9bc952261 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Tue, 21 Nov 2023 00:58:41 +0200 Subject: [PATCH] .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. --- .github/workflows/main.yml | 87 +++++++++++++++++++++++--------------- 1 file changed, 53 insertions(+), 34 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 8e1c95f62..7e0113b44 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -33,17 +33,53 @@ jobs: uses: actions/setup-go@v4 with: go-version: 1.21.4 - check-latest: true - cache: true + cache: false - - 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: | - make install-golangci-lint make check-all git diff --exit-code - test: + build: 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: matrix: scenario: ["test-full", "test-pure", "test-full-386"] @@ -57,39 +93,22 @@ jobs: uses: actions/setup-go@v4 with: go-version: 1.21.4 - check-latest: true - cache: true + 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 }}-${{ matrix.scenario }}-${{ hashFiles('go.sum') }} + restore-keys: go-artifacts-${{ runner.os }}-${{ matrix.scenario }}- - name: run tests - run: | - make ${{ matrix.scenario}} + run: make ${{ matrix.scenario}} - name: Publish coverage uses: codecov/codecov-action@v3 with: 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