]> Sergey Matveev's repositories - btrtrc.git/blobdiff - .github/actions/go-common/action.yml
Fix and add caching to gotip CI actions
[btrtrc.git] / .github / actions / go-common / action.yml
index 5dfb32b3cca3a5eb5905f07cc78d662cf54eaf59..29780b04f6a3ed5400f1c4720ef5412fef1debc8 100644 (file)
@@ -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