123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- name: Check website
- on:
- push:
- branches:
- - master
- jobs:
- check_freshness:
- name: Check freshness
- if: github.repository == 'elves/elvish'
- runs-on: ubuntu-latest
- strategy:
- matrix:
- host: [cdg, hkg]
- steps:
- - name: Checkout code
- uses: actions/checkout@v2
- - name: Compare timestamp
- timeout-minutes: 30
- run: |
- ts=$(git show -s --format=%ct HEAD)
- wait=10
- while true; do
- website_ts=$(curl -sS https://${{ matrix.host }}.elv.sh/commit-ts.txt)
- if test -z "$website_ts"; then
- echo "website has no commit-ts.txt yet"
- elif test "$website_ts" -ge "$ts"; then
- echo "website ($website_ts) >= current ($ts)"
- exit 0
- else
- echo "website ($website_ts) < current ($ts)"
- fi
- sleep $wait
- test $wait -lt 96 && wait=`echo "$wait * 2" | bc`
- done
- build_binaries:
- name: Build binaries
- runs-on: ubuntu-latest
- steps:
- - name: Checkout code
- uses: actions/checkout@v2
- - name: Set up cache
- uses: actions/cache@v2
- with:
- path: |
- ~/go/pkg/mod
- ~/.cache/go-build
- key: buildall/${{ matrix.os }}/1.19.x/${{ hashFiles('go.sum') }}/${{ github.sha }}
- restore-keys: buildall/${{ matrix.os }}/1.19.x/${{ hashFiles('go.sum') }}
- - name: Set up Go
- uses: actions/setup-go@v2
- with:
- # Keep this in sync with
- # https://github.com/elves/up/blob/master/Dockerfile
- go-version: 1.19.3
- - name: Build binaries
- run: ELVISH_BUILD_VARIANT=official ./tools/buildall.sh . ~/elvish-bin HEAD
- - name: Upload binaries
- uses: actions/upload-artifact@v2
- with:
- name: bin
- path: ~/elvish-bin/**/*
- - name: Upload binary checksums
- uses: actions/upload-artifact@v2
- with:
- name: bin-checksums
- path: ~/elvish-bin/**/elvish-HEAD.sha256sum
- check_binary_checksums:
- name: Check binary checksums
- needs: [check_freshness, build_binaries]
- strategy:
- matrix:
- host: [cdg, hkg]
- runs-on: ubuntu-latest
- steps:
- - name: Download binary checksums
- uses: actions/download-artifact@v2
- with:
- name: bin-checksums
- path: elvish-bin
- - name: Check binary checksums
- working-directory: elvish-bin
- run: |
- ret=0
- for f in */elvish-HEAD.sha256sum; do
- website_sum=$(curl -sS https://${{ matrix.host }}.dl.elv.sh/$f | awk '{print $1}')
- github_sum=$(cat $f | awk '{print $1}')
- if test "$website_sum" = "$github_sum"; then
- echo "$f: website == github ($github_sum)"
- else
- echo "$f: website ($website_sum) != github ($github_sum)"
- ret=1
- fi
- done
- if test $ret != 0; then
- latest_sha=$(curl -sS -H 'Authorization: token ${{ secrets.GITHUB_TOKEN }}' -H 'Accept: application/vnd.github.VERSION.sha' https://api.github.com/repos/elves/elvish/commits/master)
- if test ${{ github.sha }} != "$latest_sha"; then
- echo "Ignoring the mismatch since there is a newer commit now"
- ret=0
- fi
- fi
- exit $ret
|