Skip to content

Run scheduled test #996

Run scheduled test

Run scheduled test #996

Workflow file for this run

name: Run scheduled test
on:
workflow_dispatch:
schedule:
- cron: '0 1 * * *'
permissions:
contents: write
actions: read
concurrency:
group: "scheduled-test"
cancel-in-progress: false
jobs:
get_tests:
name: "Load Tests"
runs-on: ubuntu-latest
outputs:
test_configs: ${{ steps.tests.outputs.test_configs }}
kurtosis_versions: ${{ steps.tests.outputs.kurtosis_versions }}
steps:
- name: Checkout Repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: "Clean up stagger tags from previous runs"
shell: bash
env:
GH_TOKEN: ${{ github.token }}
run: |
gh api repos/${{ github.repository }}/git/matching-refs/stagger/ --paginate -q '.[].ref' | while read ref; do
gh api -X DELETE "repos/${{ github.repository }}/git/refs/${ref#refs/}" || true
done
- name: "Load test configurations from tests.yaml"
id: tests
shell: bash
run: |
tests_file="tests.yaml"
test_configs="$(cat $tests_file | yq -o json | jq '.tests' | jq -c 'map(select(.schedule == true))')"
kurtosis_versions="$(echo "$test_configs" | jq -c "[.[] | select(.backend == \"docker\") | .kurtosis_version // \"latest\"] | unique")"
if [ $(echo "$kurtosis_versions" | jq -c ".[] | select(. == \"latest\")" | wc -l) -gt 0 ]; then
# get latest kurtosis version
echo "deb [trusted=yes] https://sdk.kurtosis.com/kurtosis-cli-release-artifacts/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list
sudo apt-get update -o Dir::Etc::sourcelist="sources.list.d/kurtosis.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"
latest_kurtosis_version=$(apt show kurtosis-cli | grep Version | awk '{print $2}')
test_configs=$(echo "$test_configs" | jq -c --arg latest_kurtosis_version "$latest_kurtosis_version" \
'map(if ((.kurtosis_version == "latest") or (.kurtosis_version == null)) and .backend == "docker" then .kurtosis_version = $latest_kurtosis_version else . end)')
kurtosis_versions=$(echo "$kurtosis_versions" | jq -c ". + [\"$latest_kurtosis_version\"] | [.[] | select(. != \"latest\")] | unique")
fi
echo "test_configs<<EOF" >> $GITHUB_OUTPUT
echo "$test_configs" >> $GITHUB_OUTPUT
echo "$(echo "$test_configs" | jq)"
echo "EOF" >> $GITHUB_OUTPUT
echo "kurtosis_versions<<EOF" >> $GITHUB_OUTPUT
echo "$kurtosis_versions" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
prepare_cache:
needs: get_tests
name: "Warmup docker cache"
runs-on: ubuntu-latest
if: ${{ needs.get_tests.outputs.kurtosis_versions != '[]' }}
strategy:
fail-fast: false
matrix:
version: ${{ fromJson(needs.get_tests.outputs.kurtosis_versions) }}
steps:
- name: Warmup kurtosis docker cache (${{ matrix.version }})
continue-on-error: true
id: cache
uses: ethpandaops/kurtosis-cache-github-action@b3a3a41c254f630a921605b808f1dc66919c69da # v1.0.2
with:
kurtosis_version: ${{ matrix.version }}
warmup_cache: true
warmup_only: true
cache_prefix: "kurtosis-docker"
s3_access_key: ${{ secrets.S3CACHE_ACCESS_KEY }}
s3_secret_key: ${{ secrets.S3CACHE_ACCESS_SECRET }}
s3_bucket: ${{ vars.S3CACHE_BUCKET }}
s3_endpoint: ${{ vars.S3CACHE_ENDPOINT }}
run_tests:
needs: [get_tests, prepare_cache]
if: ${{ !cancelled() && needs.get_tests.outputs.test_configs != '[]' }}
uses: ./.github/workflows/_shared-run.yaml
name: "${{ matrix.config.name }}"
strategy:
fail-fast: false
matrix:
config: ${{ fromJson(needs.get_tests.outputs.test_configs) }}
with:
config: ${{ toJSON(matrix.config) }}
stagger_seconds: "60"
send_notification: "true"
use_chatgpt: "true"
s3_bucket: ${{ vars.S3CACHE_BUCKET }}
s3_endpoint: ${{ vars.S3CACHE_ENDPOINT }}
secrets:
RANCHER_URL: ${{ secrets.RANCHER_URL }}
RANCHER_TOKEN: ${{ secrets.RANCHER_TOKEN }}
DISCORD_HOOK: ${{ secrets.DISCORD_WEBHOOK }}
CHATGPT_KEY: ${{ secrets.CHATGPT_KEY }}
OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
S3_ACCESS_KEY: ${{ secrets.S3CACHE_ACCESS_KEY }}
S3_SECRET_KEY: ${{ secrets.S3CACHE_ACCESS_SECRET }}