feat: use gotoolchain #3134
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: tests | |
defaults: | |
run: | |
shell: bash | |
on: | |
pull_request: | |
push: | |
branches: | |
- main | |
- mainnet/main | |
tags: | |
- v* | |
jobs: | |
build-macos: | |
runs-on: macos-latest | |
steps: | |
- run: | | |
brew install bash direnv | |
sudo chsh -s /usr/local/bin/bash | |
- uses: actions/checkout@v3 | |
- run: git fetch --prune --unshallow | |
- name: set environment | |
run: direnv allow | |
- run: | | |
toolchain=$(cat go.mod | grep toolchain | cut -d ' ' -f 2 | sed 's/go*//') | |
echo "GOTOOLCHAIN=go${toolchain}" >> $GITHUB_ENV | |
echo "GOVERSION=${toolchain}" >> $GITHUB_ENV | |
echo "GOROOT=/Users/runner/hostedtoolcache/go/${toolchain}/x64" >> $GITHUB_ENV | |
- uses: actions/setup-go@v4 | |
with: | |
go-version: "${{ env.GOVERSION }}" | |
check-latest: true | |
- run: make bins | |
build-bins: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- run: git fetch --prune --unshallow | |
- name: set environment | |
uses: HatsuneMiku3939/direnv-action@v1 | |
- run: | | |
toolchain=$(cat go.mod | grep toolchain | cut -d ' ' -f 2 | sed 's/go*//') | |
echo "GOTOOLCHAIN=go${toolchain}" >> $GITHUB_ENV | |
echo "GOVERSION=${toolchain}" >> $GITHUB_ENV | |
echo "GOROOT=/opt/hostedtoolcache/go/${toolchain}/x64" >> $GITHUB_ENV | |
- uses: actions/setup-go@v4 | |
with: | |
go-version: "${{ env.GOVERSION }}" | |
check-latest: true | |
- run: make bins | |
- run: make docker-image | |
tests: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- run: git fetch --prune --unshallow | |
- name: set environment | |
uses: HatsuneMiku3939/direnv-action@v1 | |
- run: | | |
toolchain=$(cat go.mod | grep toolchain | cut -d ' ' -f 2 | sed 's/go*//') | |
echo "GOTOOLCHAIN=go${toolchain}" >> $GITHUB_ENV | |
echo "GOVERSION=${toolchain}" >> $GITHUB_ENV | |
echo "GOROOT=/opt/hostedtoolcache/go/${toolchain}/x64" >> $GITHUB_ENV | |
- uses: actions/setup-go@v4 | |
with: | |
go-version: "${{ env.GOVERSION }}" | |
- run: make test-full | |
coverage: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- run: git fetch --prune --unshallow | |
- name: set environment | |
uses: HatsuneMiku3939/direnv-action@v1 | |
- run: | | |
toolchain=$(cat go.mod | grep toolchain | cut -d ' ' -f 2 | sed 's/go*//') | |
echo "GOTOOLCHAIN=go${toolchain}" >> $GITHUB_ENV | |
echo "GOVERSION=${toolchain}" >> $GITHUB_ENV | |
echo "GOROOT=/opt/hostedtoolcache/go/${toolchain}/x64" >> $GITHUB_ENV | |
- uses: actions/setup-go@v4 | |
with: | |
go-version: "${{ env.GOVERSION }}" | |
- run: make test-coverage | |
- uses: codecov/codecov-action@v3 | |
lint: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- run: git fetch --prune --unshallow | |
- name: set environment | |
uses: HatsuneMiku3939/direnv-action@v1 | |
- run: | | |
toolchain=$(cat go.mod | grep toolchain | cut -d ' ' -f 2 | sed 's/go*//') | |
echo "GOTOOLCHAIN=go${toolchain}" >> $GITHUB_ENV | |
echo "GOVERSION=${toolchain}" >> $GITHUB_ENV | |
echo "GOROOT=/opt/hostedtoolcache/go/${toolchain}/x64" >> $GITHUB_ENV | |
- uses: actions/setup-go@v4 | |
with: | |
go-version: "${{ env.GOVERSION }}" | |
- run: make deps-tidy | |
- run: make build | |
- run: make test-vet | |
- name: lint all | |
run: make test-lint-all | |
- name: lint make-sublinters | |
run: make test-sublinters | |
shellcheck: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- run: git fetch --prune --unshallow | |
- name: set environment | |
uses: HatsuneMiku3939/direnv-action@v1 | |
- run: | | |
toolchain=$(cat go.mod | grep toolchain | cut -d ' ' -f 2 | sed 's/go*//') | |
echo "GOTOOLCHAIN=go${toolchain}" >> $GITHUB_ENV | |
echo "GOVERSION=${toolchain}" >> $GITHUB_ENV | |
echo "GOROOT=/opt/hostedtoolcache/go/${toolchain}/x64" >> $GITHUB_ENV | |
- uses: actions/setup-go@v4 | |
with: | |
go-version: "${{ env.GOVERSION }}" | |
- run: make shellcheck | |
sims: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: rokroskar/workflow-run-cleanup-action@master | |
env: | |
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" | |
- uses: actions/checkout@v3 | |
- name: set environment | |
uses: HatsuneMiku3939/direnv-action@v1 | |
- run: | | |
toolchain=$(cat go.mod | grep toolchain | cut -d ' ' -f 2 | sed 's/go*//') | |
echo "GOTOOLCHAIN=go${toolchain}" >> $GITHUB_ENV | |
echo "GOVERSION=${toolchain}" >> $GITHUB_ENV | |
echo "GOROOT=/opt/hostedtoolcache/go/${toolchain}/x64" >> $GITHUB_ENV | |
- uses: actions/setup-go@v4 | |
with: | |
go-version: "${{ env.GOVERSION }}" | |
- name: test-sim-nondeterminism | |
run: make test-sim-nondeterminism | |
- name: test-sim-import-export | |
run: make test-sim-import-export | |
- name: test-sim-after-import | |
run: make test-sim-after-import | |
- name: test-sim-fullapp | |
run: make test-sim-fullapp | |
release-dry-run: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- run: git fetch --prune --unshallow | |
- name: set environment | |
uses: HatsuneMiku3939/direnv-action@v1 | |
- run: | | |
toolchain=$(cat go.mod | grep toolchain | cut -d ' ' -f 2 | sed 's/go*//') | |
echo "GOTOOLCHAIN=go${toolchain}" >> $GITHUB_ENV | |
echo "GOVERSION=${toolchain}" >> $GITHUB_ENV | |
echo "GOROOT=/opt/hostedtoolcache/go/${toolchain}/x64" >> $GITHUB_ENV | |
- uses: actions/setup-go@v4 | |
with: | |
go-version: "${{ env.GOVERSION }}" | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v2 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v2 | |
- uses: fregante/setup-git-user@v1 | |
- name: configure git tag | |
run: echo "RELEASE_TAG=v$(./script/semver.sh bump patch $(git describe --tags $(git rev-list --tags --max-count=1)))" >> $GITHUB_ENV | |
- name: git tag | |
run: git tag -a ${{ env.RELEASE_TAG }} -m ${{ env.RELEASE_TAG }} | |
- name: release dry-run | |
run: make release | |
network-upgrade-names: | |
runs-on: upgrade-tester | |
steps: | |
- uses: actions/checkout@v3 | |
- run: git fetch --prune --unshallow | |
- name: set environment | |
uses: HatsuneMiku3939/direnv-action@v1 | |
- name: Ensure only directories exists in upgrades dir | |
run: | | |
dir=./upgrades/software | |
if [[ $(find "$dir" ! -path "$dir" -maxdepth 1 -type f | wc -c) -ne 0 ]]; then | |
echo "$dir must contain only directories" | |
exit 1 | |
fi | |
- name: Ensure names of upgrade dirs are semver compliant | |
run: | | |
dir=./upgrades/software | |
while read upgrade; do | |
./script/semver.sh validate "$upgrade" | |
done <<< $(find "$dir" ! -path "$dir" -maxdepth 1 -type d -exec basename {} \;) | |
network-upgrade: | |
runs-on: upgrade-tester | |
steps: | |
- uses: actions/checkout@v3 | |
- run: git fetch --prune --unshallow | |
- name: set environment | |
uses: HatsuneMiku3939/direnv-action@v1 | |
- run: | | |
toolchain=$(cat go.mod | grep toolchain | cut -d ' ' -f 2 | sed 's/go*//') | |
echo "GOTOOLCHAIN=go${toolchain}" >> $GITHUB_ENV | |
echo "GOVERSION=${toolchain}" >> $GITHUB_ENV | |
echo "GOROOT=/opt/hostedtoolcache/go/${toolchain}/x64" >> $GITHUB_ENV | |
- uses: actions/setup-go@v4 | |
with: | |
go-version: "${{ env.GOVERSION }}" | |
- name: configure variables | |
run: | | |
test_required=$(./script/upgrades.sh test-required ${{ github.ref }}) | |
echo "TEST_REQUIRED=$test_required" >> $GITHUB_ENV | |
- name: run test | |
id: test | |
if: env.TEST_REQUIRED == 'true' | |
run: | | |
cd tests/upgrade | |
make test | |
- name: dump stderr | |
if: always() && steps.test.outcome != 'skipped' | |
run: cat .cache/run/upgrade/stderr.log | |
- name: upload stderr | |
if: always() && steps.test.outcome != 'skipped' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: stderr.log | |
path: .cache/run/upgrade/stderr.log | |
- name: upload stdout | |
if: always() && steps.test.outcome != 'skipped' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: stdout.log | |
path: .cache/run/upgrade/stdout.log | |
dispatch-release: | |
runs-on: ubuntu-latest | |
if: startsWith(github.event.ref, 'refs/tags/v') | |
needs: | |
- build-macos | |
- build-bins | |
- tests | |
- coverage | |
- lint | |
- sims | |
- release-dry-run | |
- network-upgrade | |
- shellcheck | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: trigger release process | |
uses: benc-uk/workflow-dispatch@v1 | |
with: | |
workflow: release.yaml |