Skip to content

.github/workflows/nightly-kind-test.yml #198

.github/workflows/nightly-kind-test.yml

.github/workflows/nightly-kind-test.yml #198

name: KIND network tests
on:
workflow_dispatch:
schedule:
- cron: "00 08 * * 1-5"
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
DOCKERHUB_PASSWORD: "${{ secrets.DOCKERHUB_PASSWORD }}"
RUN_ID: ${{ github.run_id }}
RUN_ATTEMPT: ${{ github.run_attempt }}
USERNAME: ${{ github.event.pull_request.user.login || github.actor }}
GITHUB_TOKEN: ${{ github.token }}
GH_SELF_HOSTED_RUNNER_TOKEN: ${{ secrets.GH_SELF_HOSTED_RUNNER_TOKEN }}
LOG_ID: ${{ github.run_id }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
BUILD_INSTANCE_SSH_KEY: ${{ secrets.BUILD_INSTANCE_SSH_KEY }}
GIT_COMMIT: ${{ github.event.pull_request.head.sha || github.sha }}
EXTERNAL_ETHEREUM_HOST: "https://json-rpc.${{ secrets.SEPOLIA_EXTERNAL_HOST }}?key=${{ secrets.SEPOLIA_API_KEY }}"
EXTERNAL_ETHEREUM_CONSENSUS_HOST: "https://beacon.${{ secrets.SEPOLIA_EXTERNAL_HOST }}"
GCP_API_KEY_HEADER: "X-goog-api-key"
jobs:
setup:
uses: ./.github/workflows/setup-runner.yml
with:
username: ${{ github.actor }}
runner_type: builder-x86
secrets: inherit
find-image:
runs-on: ubuntu-latest
outputs:
image_tag: ${{ steps.find-tag.outputs.tag }}
commit: ${{ steps.find-tag.outputs.commit }}
steps:
- uses: actions/checkout@v4
with:
ref: "${{ env.GIT_COMMIT }}"
fetch-depth: 0
- name: Find latest available image tag
id: find-tag
run: |
set -x
COMMIT=${{ env.GIT_COMMIT }}
MAX_ATTEMPTS=10
for ((i=0; i<MAX_ATTEMPTS; i++)); do
if docker pull aztecprotocol/aztec:$COMMIT-amd64 >/dev/null 2>&1; then
echo "tag=$COMMIT-amd64" >> $GITHUB_OUTPUT
echo "commit=$COMMIT" >> $GITHUB_OUTPUT
exit 0
fi
# Get previous commit
COMMIT=$(git rev-parse "$COMMIT^")
done
echo "Error: Could not find a valid image tag after $MAX_ATTEMPTS attempts"
exit 1
test:
needs: [setup, find-image]
runs-on: ubuntu-latest
strategy:
matrix:
test:
- test-kind-transfer
# - test-kind-reorg
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: "${{ needs.find-image.outputs.commit }}"
- name: Setup
run: |
# Ensure we can SSH into the spot instances we request.
mkdir -p ~/.ssh
echo ${{ secrets.BUILD_INSTANCE_SSH_KEY }} | base64 --decode > ~/.ssh/build_instance_key
chmod 600 ~/.ssh/build_instance_key
- name: Run
timeout-minutes: 90
run: |
docker pull aztecprotocol/aztec:${{ needs.find-image.outputs.image_tag }}
AZTEC_DOCKER_TAG=${{ needs.find-image.outputs.image_tag }} FORCE_COLOR=1 INSTALL_METRICS=false ./ci3/bootstrap_ec2 "./spartan/bootstrap.sh ${{ matrix.test }}"
# test:
# needs: [setup, find-image]
# runs-on: ubuntu-20.04
# strategy:
# matrix:
# test:
# - test-kind-transfer
# - test-kind-reorg
# steps:
# - uses: actions/checkout@v4
# with: { ref: "${{ needs.find-image.outputs.commit }}" }
# - uses: ./.github/ci-setup-action
# - name: Setup and Test
# uses: ./.github/ensure-tester
# timeout-minutes: 90
# with:
# runner_type: 16core-tester-x86
# ttl: 90
# run: |
# docker pull aztecprotocol/aztec:${{ needs.find-image.outputs.image_tag }}
# AZTEC_DOCKER_TAG=${{ needs.find-image.outputs.image_tag }} FORCE_COLOR=1 INSTALL_METRICS=false ./spartan/bootstrap.sh ${{ matrix.test }}
# proving-test:
# needs: [setup, find-image]
# runs-on: ubuntu-20.04
# timeout-minutes: 90
# steps:
# - uses: actions/checkout@v4
# with: { ref: "${{ env.GIT_COMMIT }}" }
# - uses: ./.github/ci-setup-action
# - name: Setup and Test
# uses: ./.github/ensure-tester
# timeout-minutes: 90
# with:
# runner_type: 128core-tester-x86
# ttl: 90
# run: |
# docker pull aztecprotocol/aztec:${{ needs.find-image.outputs.image_tag }}
# AZTEC_DOCKER_TAG=${{ needs.find-image.outputs.image_tag }} INSTALL_TIMEOUT=45m FORCE_COLOR=1 INSTALL_METRICS=false \
# ./spartan/scripts/test_kind.sh ./src/spartan/proving.test.ts 1-validator-with-proving || true
# kind-sepolia-test:
# needs: [setup, find-image]
# runs-on: ubuntu-latest
# strategy:
# fail-fast: false
# matrix:
# config:
# - test: 4epochs.test.ts
# values: ci-sepolia.yaml
# runner_type: 16core-tester-x86
# timeout: 40
# steps:
# - uses: actions/checkout@v4
# with: { ref: "${{ env.GIT_COMMIT }}" }
# - name: Setup and KIND Network Test against Sepolia
# timeout-minutes: ${{ matrix.config.timeout }}
# uses: ./.github/ensure-tester
# with:
# runner_type: ${{ matrix.config.runner_type }}
# spot_strategy: None # use on-demand machines
# ttl: ${{ matrix.config.timeout }}
# run: |
# until docker info &>/dev/null; do sleep 1; done
# export CI=1 NO_CACHE=0
# artifact="kind-network-${{matrix.config.test}}-$(./spartan/bootstrap.sh hash)"
# if ci3/test_should_run "$artifact"; then
# docker pull aztecprotocol/aztec:${{ needs.find-image.outputs.image_tag }}
# # Set the sepolia run variables
# export EXTERNAL_ETHEREUM_HOST=${{ env.EXTERNAL_ETHEREUM_HOST }}
# export EXTERNAL_ETHEREUM_CONSENSUS_HOST=${{ env.EXTERNAL_ETHEREUM_CONSENSUS_HOST }}
# export EXTERNAL_ETHEREUM_CONSENSUS_HOST_API_KEY=${{ secrets.SEPOLIA_API_KEY }}
# export EXTERNAL_ETHEREUM_CONSENSUS_HOST_API_KEY_HEADER=${{ env.GCP_API_KEY_HEADER }}
# export L1_DEPLOYMENT_PRIVATE_KEY=${{ secrets.SEPOLIA_L1_DEPLOYMENT_PRIVATE_KEY }}
# export L1_ACCOUNTS_MNEMONIC="${{ secrets.SEPOLIA_ACCOUNTS_MNEMONIC }}"
# AZTEC_DOCKER_TAG=${{ needs.find-image.outputs.image_tag }} SEPOLIA_RUN=true INSTALL_METRICS=false ./spartan/scripts/test_kind.sh "./src/spartan/${{ matrix.config.test }}" "${{ matrix.config.values }}"
# ci3/cache_upload_flag "$artifact"
# fi
# - name: Copy Network Logs
# if: always()
# run: scripts/copy_from_tester spartan/scripts/logs/test_kind.log test_kind.log || true
# - name: Upload Network Logs
# if: always()
# uses: actions/upload-artifact@v4
# with:
# name: kind-network-test-${{ matrix.config.values }}-${{ matrix.config.test }}.log
# path: test_kind.log
success-check:
runs-on: ubuntu-20.04
needs:
- test
# - proving-test
if: always()
steps:
- name: Report overall success
env:
# We treat any skipped or failing jobs as a failure for the workflow as a whole.
FAIL: ${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') }}
run: |
if [[ $FAIL == true ]]; then
echo "Test failed."
exit 1
fi
notify:
needs:
- success-check
runs-on: ubuntu-20.04
if: ${{ github.ref == 'refs/heads/master' && failure() }}
steps:
- name: Send notification to aztec3-ci channel if workflow failed on master
uses: slackapi/slack-github-action@v1.25.0
with:
payload: |
{
"url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}"
}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_NOTIFY_WORKFLOW_TRIGGER_URL }}