Skip to content

Move CI tasks to Taskfile.yml #1610

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 20 commits into from
Jul 4, 2025
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
dabb987
Move CI tasks to Takefile.yml
JonathanOppenheimer Jun 26, 2025
d5df1ed
Force bash shell on Windows tests
JonathanOppenheimer Jun 26, 2025
01ae4a2
Instead, set shell to bash for all tasks
JonathanOppenheimer Jun 26, 2025
2bbfcff
Move bash shell directly to the tests, rather than run task
JonathanOppenheimer Jun 26, 2025
4bde723
Change to direct bash calls in the taskfile
JonathanOppenheimer Jun 26, 2025
db65042
Remove logs folder
JonathanOppenheimer Jun 26, 2025
40e7d07
Remove Windows tests, consolidate tests
JonathanOppenheimer Jun 27, 2025
11cd2c0
remove runtime import
JonathanOppenheimer Jun 27, 2025
42415e3
revert windows change, fix env
JonathanOppenheimer Jun 27, 2025
7b58e10
warp environment
JonathanOppenheimer Jun 27, 2025
af47f57
fix antithesis order from consolidtion
JonathanOppenheimer Jun 27, 2025
b116e28
Clarify default env vars
JonathanOppenheimer Jun 30, 2025
a1ed580
Consolidate testing further into tasks
JonathanOppenheimer Jul 1, 2025
f5f008b
Restore run_env to comply with written test
JonathanOppenheimer Jul 1, 2025
eb7130a
restore env variables for avalanchego release
JonathanOppenheimer Jul 1, 2025
72fe798
Add more verbose task descriptions, and move contract commands to a task
JonathanOppenheimer Jul 1, 2025
a2e21b5
make env explicitly clear for precompiles
JonathanOppenheimer Jul 1, 2025
8f671f1
globalize environment variables
JonathanOppenheimer Jul 1, 2025
7ce3b10
Further consolidate tasks and move from .sh
JonathanOppenheimer Jul 3, 2025
c4777b2
Merge branch 'master' into move-ci-tasks
ceyonur Jul 3, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/bench.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,5 @@ jobs:
go-version-file: "go.mod"
- run: go mod download
shell: bash
- run: ./scripts/build_bench_precompiles.sh
- run: ./scripts/run_task.sh build-bench-precompiles
shell: bash
2 changes: 1 addition & 1 deletion .github/workflows/publish_antithesis_images.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
password: ${{ secrets.ANTITHESIS_GAR_JSON_KEY }}

- name: Build and publish images
run: bash -x ./scripts/build_antithesis_images.sh
run: ./scripts/run_task.sh build-antithesis-images-avalanchego
env:
IMAGE_PREFIX: ${{ env.REGISTRY }}/${{ env.REPOSITORY }}
IMAGE_TAG: latest
2 changes: 1 addition & 1 deletion .github/workflows/publish_docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,4 @@ jobs:
PLATFORMS: "linux/amd64,linux/arm64"
AVALANCHE_VERSION: ${{ inputs.avalanche_version }}
ALLOW_TAG_LATEST: ${{ github.event_name != 'workflow_dispatch' || inputs.allow_tag_latest }}
run: scripts/build_docker_image.sh
run: ./scripts/run_task.sh build-docker-image
42 changes: 18 additions & 24 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: ./scripts/lint_allowed_eth_imports.sh
- run: ./scripts/run_task.sh lint_allowed_eth_imports
shell: bash
- uses: actions/setup-go@v5
with:
Expand All @@ -30,18 +30,18 @@ jobs:
skip-pkg-cache: true
- name: Run shellcheck
shell: bash
run: scripts/shellcheck.sh
run: ./scripts/run_task.sh shellcheck
- name: Run actionlint
shell: bash
run: scripts/actionlint.sh
run: ./scripts/run_task.sh actionlint
- name: go mod tidy
run: |
go mod tidy
git diff --exit-code
- name: Ensure consistent avalanchego version
shell: bash
run: |
bash -x ./scripts/update_avalanchego_version.sh
./scripts/run_task.sh update_avalanchego_version
git diff --exit-code

unit_test:
Expand Down Expand Up @@ -75,13 +75,13 @@ jobs:
go generate -run "go.uber.org/mock/mockgen" ./...
git add --intent-to-add --all
git diff --exit-code
- run: ./scripts/build.sh
- run: ./scripts/run_task.sh build
shell: bash
- run: ./scripts/build_test.sh
- run: ./scripts/run_task.sh build-test
env:
TIMEOUT: ${{ env.TIMEOUT }}
shell: bash
- run: ./scripts/coverage.sh
- run: ./scripts/run_task.sh coverage
shell: bash

e2e_precompile:
Expand Down Expand Up @@ -109,15 +109,9 @@ jobs:
- name: Hardhat Compile
run: npx hardhat compile
working-directory: ./contracts
- name: Install AvalancheGo Release
shell: bash
run: BASEDIR=/tmp/e2e-test AVALANCHEGO_BUILD_PATH=/tmp/e2e-test/avalanchego ./scripts/install_avalanchego_release.sh
- name: Build Subnet-EVM Plugin Binary
shell: bash
run: ./scripts/build.sh
- name: Run E2E Precompile Tests
shell: bash
run: AVALANCHEGO_BUILD_PATH=/tmp/e2e-test/avalanchego DATA_DIR=/tmp/e2e-test/precompile-data ./scripts/run_ginkgo_precompile.sh
run: ./scripts/run_task.sh test-e2e-precompile-ci
- name: Upload Artifact
if: always()
uses: actions/upload-artifact@v4
Expand Down Expand Up @@ -152,14 +146,14 @@ jobs:
working-directory: ./contracts
- name: Install AvalancheGo Release
shell: bash
run: BASEDIR=/tmp/e2e-test AVALANCHEGO_BUILD_PATH=/tmp/e2e-test/avalanchego ./scripts/install_avalanchego_release.sh
run: ./scripts/run_task.sh install-avalanchego-release
- name: Build Subnet-EVM Plugin Binary
shell: bash
run: ./scripts/build.sh
run: ./scripts/run_task.sh build
- name: Run Warp E2E Tests
uses: ava-labs/avalanchego/.github/actions/run-monitored-tmpnet-cmd@092cf182dd92b66a8ab882b657d3ae52b174c913
with:
run: ./scripts/run_ginkgo_warp.sh
run: ./scripts/run_task.sh test-e2e-warp
run_env: AVALANCHEGO_BUILD_PATH=/tmp/e2e-test/avalanchego
artifact_prefix: warp
prometheus_username: ${{ secrets.PROMETHEUS_ID || '' }}
Expand All @@ -180,14 +174,14 @@ jobs:
go-version-file: "go.mod"
- name: Install AvalancheGo Release
shell: bash
run: BASEDIR=/tmp/e2e-test AVALANCHEGO_BUILD_PATH=/tmp/e2e-test/avalanchego ./scripts/install_avalanchego_release.sh
run: ./scripts/run_task.sh install-avalanchego-release
- name: Build Subnet-EVM Plugin Binary
shell: bash
run: ./scripts/build.sh
run: ./scripts/run_task.sh build
- name: Run E2E Load Tests
uses: ava-labs/avalanchego/.github/actions/run-monitored-tmpnet-cmd@092cf182dd92b66a8ab882b657d3ae52b174c913
with:
run: ./scripts/run_ginkgo_load.sh
run: ./scripts/run_task.sh test-e2e-load
run_env: AVALANCHEGO_BUILD_PATH=/tmp/e2e-test/avalanchego
artifact_prefix: load
prometheus_username: ${{ secrets.PROMETHEUS_ID || '' }}
Expand All @@ -205,7 +199,7 @@ jobs:
sudo apt -y install qemu-system qemu-user-static
- name: Check image build
shell: bash
run: bash -x scripts/tests.build_docker_image.sh
run: ./scripts/run_task.sh test-build-image
test_build_antithesis_images:
name: Build Antithesis images
runs-on: ubuntu-latest
Expand All @@ -216,13 +210,13 @@ jobs:
go-version-file: "go.mod"
- name: Install AvalancheGo Release
shell: bash
run: BASEDIR=/tmp/e2e-test AVALANCHEGO_BUILD_PATH=/tmp/e2e-test/avalanchego ./scripts/install_avalanchego_release.sh
run: ./scripts/run_task.sh install-avalanchego-release
- name: Build Subnet-EVM Plugin Binary
shell: bash
run: ./scripts/build.sh
run: ./scripts/run_task.sh build
- name: Check that the antithesis workload is sane
shell: bash
run: go run ./tests/antithesis --avalanchego-path=/tmp/e2e-test/avalanchego/avalanchego --duration=60s
- name: Check antithesis image build
shell: bash
run: bash -x scripts/tests.build_antithesis_images.sh
run: ./scripts/run_task.sh test-build-antithesis-images
89 changes: 89 additions & 0 deletions Taskfile.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
# https://taskfile.dev
# To run on a system without task installed, `./scripts/run_task.sh` will execute it with `go run`.
# If in the nix dev shell, `task` is available.

version: '3'

tasks:
default: ./scripts/run_task.sh --list

actionlint:
desc: Run the actionlint.sh
cmd: bash ./scripts/actionlint.sh # tests.yml

build:
desc: Run the build.sh
cmd: bash ./scripts/build.sh # tests.yml

build-antithesis-images-avalanchego:
desc: Build the antithesis images for the avalanchego test setup
cmd: bash -x ./scripts/build_antithesis_images.sh # publish_antithesis_images.yml

build-bench-precompiles:
desc: Build the benchmark precompiles
cmd: bash ./scripts/build_bench_precompiles.sh # bench.yml

build-docker-image:
desc: Build the docker image
cmd: bash ./scripts/build_docker_image.sh # publish_docker.yml

build-test:
desc: Run the build_test.sh
cmd: bash ./scripts/build_test.sh # tests.yml

coverage:
desc: Run the coverage.sh
cmd: bash ./scripts/coverage.sh # tests.yml

install-avalanchego-release:
desc: Install AvalancheGo release for testing
env:
BASEDIR: /tmp/e2e-test
AVALANCHEGO_BUILD_PATH: /tmp/e2e-test/avalanchego
cmd: bash ./scripts/install_avalanchego_release.sh # tests.yml

lint_allowed_eth_imports:
desc: Run the lint_allowed_eth_imports.sh
cmd: bash ./scripts/lint_allowed_eth_imports.sh # tests.yml

shellcheck:
desc: Run the shellcheck.sh
cmd: bash ./scripts/shellcheck.sh # tests.yml

test-build-antithesis-images:
desc: Test antithesis images build
cmd: bash -x scripts/tests.build_antithesis_images.sh

test-build-image:
desc: Test docker image build
cmd: bash -x scripts/tests.build_docker_image.sh # tests.yml

test-e2e-load:
desc: Run E2E load tests
env:
AVALANCHEGO_BUILD_PATH: /tmp/e2e-test/avalanchego
cmd: bash ./scripts/run_ginkgo_load.sh # tests.yml

test-e2e-precompile:
desc: Run E2E precompile tests
env:
AVALANCHEGO_BUILD_PATH: /tmp/e2e-test/avalanchego
DATA_DIR: /tmp/e2e-test/precompile-data
cmd: bash ./scripts/run_ginkgo_precompile.sh # tests.yml

test-e2e-precompile-ci: # consolidated test-e2e-precompile
desc: Run E2E precompile tests with CI setup
cmds:
- task: install-avalanchego-release
- task: build
- task: test-e2e-precompile

test-e2e-warp:
desc: Run E2E warp tests
env:
AVALANCHEGO_BUILD_PATH: /tmp/e2e-test/avalanchego
cmd: bash ./scripts/run_ginkgo_warp.sh # tests.yml

update_avalanchego_version:
desc: Run the update_avalanchego_version.sh
cmd: bash ./scripts/update_avalanchego_version.sh # tests.yml
19 changes: 19 additions & 0 deletions scripts/actionlint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,22 @@
set -euo pipefail

go run github.com/rhysd/actionlint/cmd/[email protected] "${@}"

echo "Checking use of scripts/* in GitHub Actions workflows..."
SCRIPT_USAGE=
for file in .github/workflows/*.{yml,yaml}; do
# Skip if no matches found (in case one of the extensions doesn't exist)
[[ -f "$file" ]] || continue

# Search for scripts/* except for scripts/run_task.sh
MATCHES=$(grep -H -n -p "scripts/(?!run_task\.sh)" "$file" || true)
if [[ -n "${MATCHES}" ]]; then
echo "${MATCHES}"
SCRIPT_USAGE=1
fi
done

if [[ -n "${SCRIPT_USAGE}" ]]; then
echo "Error: the lines listed above must be converted to use scripts/run_task.sh to ensure local reproducibility."
exit 1
fi
10 changes: 10 additions & 0 deletions scripts/run_task.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#!/usr/bin/env bash

set -euo pipefail

# Assume the system-installed task is compatible with the taskfile version
if command -v task > /dev/null 2>&1; then
exec task "${@}"
else
go run github.com/go-task/task/v3/cmd/[email protected] "${@}"
fi
Loading