From 3a57995bfcc6dc7f09b7c49e66b7d8b213248344 Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Thu, 10 Feb 2022 15:04:53 +1100 Subject: [PATCH] Fix and add caching to gotip CI actions Fix and add caching to gotip CI actions --- .github/actions/go-common/action.yml | 36 ++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/.github/actions/go-common/action.yml b/.github/actions/go-common/action.yml index 5dfb32b3..29780b04 100644 --- a/.github/actions/go-common/action.yml +++ b/.github/actions/go-common/action.yml @@ -4,6 +4,7 @@ runs: using: "composite" steps: - name: Set up Go + if: matrix.go-version != 'tip' uses: actions/setup-go@v2 with: go-version: ${{ matrix.go-version }} @@ -22,4 +23,39 @@ runs: ${{ runner.os }}-go-${{ matrix.go-version }}-${{ github.job }}- ${{ runner.os }}-go-${{ matrix.go-version }}- ${{ runner.os }}-go- + - run: | + echo GOTIP_REVISION="`git ls-remote https://github.com/golang/go refs/heads/master | cut -f1`" >> "$GITHUB_ENV" + echo GOTIP_PATH="$HOME/gotip" >> "$GITHUB_ENV" + if: matrix.go-version == 'tip' + shell: bash + - uses: actions/cache@v2 + if: matrix.go-version == 'tip' + with: + path: | + ${{ env.GOTIP_PATH }} + # The build varies by OS (and arch, but I haven't bothered to add that yet.) We always want + # the latest snapshot that works for us, the revision is only used to store differentiate + # builds. + key: gotip-ls-remote-${{ runner.os }}-${{ env.GOTIP_REVISION }} + restore-keys: | + gotip-ls-remote-${{ runner.os }}-${{ env.GOTIP_REVISION }} + gotip-ls-remote-${{ runner.os }}- + gotip-env-home-${{ runner.os }}- + gotip-${{ runner.os }}- + - name: Install gotip + if: matrix.go-version == 'tip' + run: | + git clone --depth=1 https://go.googlesource.com/go "$GOTIP_PATH" || true + cd "$GOTIP_PATH" + git pull + echo "GOROOT=$GOTIP_PATH" >> "$GITHUB_ENV" + echo "$(go env GOPATH)/bin:$PATH" >> "$GITHUB_PATH" + echo "$GOTIP_PATH/bin:$PATH" >> "$GITHUB_PATH" + echo "anacrolix.built:" $(cat anacrolix.built) + [[ -x bin/go && `git rev-parse HEAD` == `cat anacrolix.built` ]] && exit + cd src + ./make.bash || exit + git rev-parse HEAD > ../anacrolix.built + env + shell: bash