123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- test_task:
- env:
- ELVISH_TEST_TIME_SCALE: 20
- TEST_FLAG: -race
- go_modules_cache:
- fingerprint_script: cat go.sum
- folder: ~/go/pkg/mod
- go_build_cache:
- folder: ~/.cache/go-build
- matrix:
- # Re-enable gccgo when it supports Go 1.18.
- #- name: Test on gccgo
- # container:
- # image: debian:unstable-slim
- # setup_script:
- # - apt-get -y update
- # - apt-get -y install ca-certificates gccgo-12 git
- # - ln -sf /usr/bin/go-12 /usr/local/bin/go
- # env:
- # # gccgo doesn't support race test
- # TEST_FLAG: ""
- - name: Test on Linux ARM64
- arm_container:
- # The Alpine image has segmentation faults when running test -race, so
- # use Debian instead.
- image: golang:1.19.3-bullseye
- - name: Test on FreeBSD
- freebsd_instance:
- image_family: freebsd-13-1
- env:
- PATH: /usr/local/go/bin:$PATH
- GO_VERSION: 1.19.3
- go_toolchain_cache:
- fingerprint_key: $GO_VERSION
- folder: /usr/local/go
- populate_script: |
- pkg install -y curl
- curl -L -o go.tar.gz https://go.dev/dl/go$GO_VERSION.freebsd-amd64.tar.gz
- tar -C /usr/local -xf go.tar.gz
- - name: Test on NetBSD
- compute_engine_instance:
- image_project: pg-ci-images
- image: family/pg-ci-netbsd-vanilla-9-2
- platform: netbsd
- env:
- GO_PKG: go118
- PATH: /usr/pkg/$GO_PKG/bin:$PATH
- go_pkg_cache:
- fingerprint_key: $GO_PKG
- folder: /usr/pkg/$GO_PKG
- populate_script: pkgin -y install $GO_PKG
- - name: Test on OpenBSD
- compute_engine_instance:
- image_project: pg-ci-images
- image: family/pg-ci-openbsd-vanilla-7-2
- platform: openbsd
- env:
- PATH: /usr/local/go/bin:$PATH
- go_pkg_cache:
- fingerprint_key: 1.19.1p0
- folder: /usr/local/go
- populate_script: pkg_add go
- go_version_script: go version
- test_script: go test $TEST_FLAG ./...
- build_binaries_task:
- name: Build binaries
- only_if: $CIRRUS_BRANCH == 'master'
- alias: binaries
- env:
- CGO_ENABLED: 0
- container:
- image: golang:1.19.3-alpine
- go_modules_cache:
- fingerprint_script: cat go.sum
- folder: ~/go/pkg/mod
- go_build_cache:
- folder: ~/.cache/go-build
- # Git is not required for building the binaries, but we need to include for Go
- # to include VCS information in the binary.
- setup_script: apk add zip git
- # _bin is in .gitignore, so Git won't consider the repo dirty. This will
- # impact the binary, which encodes VCS information.
- build_binaries_script: |
- ELVISH_BUILD_VARIANT=official ./tools/buildall.sh . _bin HEAD
- binaries_artifacts:
- path: _bin/**
- binary_checksums_artifacts:
- path: _bin/*/elvish-HEAD.sha256sum
- check_binary_checksums_task:
- name: Check binary checksums ($HOST)
- only_if: $CIRRUS_BRANCH == 'master'
- container:
- image: golang:1.19.3-alpine
- depends_on: binaries
- matrix:
- - env:
- HOST: cdg
- - env:
- HOST: hkg
- setup_script: apk add git curl
- # Enable auto cancellation - if there is another push, only the task to
- # compare the website against the newer commit should continue.
- auto_cancellation: true
- wait_website_update_script: |
- ts=$(git show -s --format=%ct HEAD)
- wait=10
- while true; do
- website_ts=$(curl -sS https://$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) >= CI ($ts)"
- exit 0
- else
- echo "website ($website_ts) < CI ($ts)"
- fi
- sleep $wait
- test $wait -lt 96 && wait=`echo "$wait * 2" | bc`
- done
- check_binary_checksums_script: |
- curl -o checksums.zip https://api.cirrus-ci.com/v1/artifact/build/$CIRRUS_BUILD_ID/binaries/binary_checksums.zip
- unzip checksums.zip
- cd _bin
- ret=0
- for f in */elvish-HEAD.sha256sum; do
- website_sum=$(curl -sS https://$HOST.dl.elv.sh/$f | awk '{print $1}')
- ci_sum=$(cat $f | awk '{print $1}')
- if test "$website_sum" = "$ci_sum"; then
- echo "$f: website == CI ($ci_sum)"
- else
- echo "$f: website ($website_sum) != CI ($ci_sum)"
- ret=1
- fi
- done
- exit $ret
|