]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Fix and add caching to gotip CI actions
authorMatt Joiner <anacrolix@gmail.com>
Thu, 10 Feb 2022 03:57:03 +0000 (14:57 +1100)
committerMatt Joiner <anacrolix@gmail.com>
Thu, 10 Feb 2022 03:57:03 +0000 (14:57 +1100)
.github/actions/go-common/action.yml
.github/workflows/go.yml

index af07fe265b25311549ab7320259a4491c68e98ea..29780b04f6a3ed5400f1c4720ef5412fef1debc8 100644 (file)
@@ -8,16 +8,6 @@ runs:
       uses: actions/setup-go@v2
       with:
         go-version: ${{ matrix.go-version }}
-    - name: Install gotip
-      if: matrix.go-version == 'tip'
-      run: |
-        git clone --depth=1 https://go.googlesource.com/go "$HOME/gotip"
-        cd "$HOME/gotip/src"
-        ./make.bash
-        echo "GOROOT=$HOME/gotip" >> "$GITHUB_ENV"
-        echo "$(go env GOPATH)/bin:$PATH" >> "$GITHUB_PATH"
-        echo "$HOME/gotip/bin:$PATH" >> "$GITHUB_PATH"
-        env
     - uses: actions/cache@v2
       with:
         path: |
@@ -33,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
           
index 988ade1707ad49e8da011213c8bc4bfa8b197d5b..6e5642e342434ca33dba4fd8049cdc7384d9c54c 100644 (file)
@@ -5,6 +5,7 @@ on: [push, pull_request]
 jobs:
 
   test:
+    timeout-minutes: 10
     runs-on: ubuntu-latest
     strategy:
       matrix: