Skip to content

Commit 2c5a00c

Browse files
committed
add strict kurtosis versioning
1 parent db4009e commit 2c5a00c

6 files changed

Lines changed: 62 additions & 42 deletions

File tree

.github/workflows/_shared-prepare-docker-cache.yaml

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,23 @@
11

22
on:
33
workflow_call:
4-
outputs:
4+
inputs:
55
kurtosis_version:
6-
description: "The latest version of the kurtosis cli (used as caching key)."
7-
value: ${{ jobs.run_prepare.outputs.kurtosis_version }}
6+
type: string
7+
description: "The kurtosis version to use."
8+
default: ""
89

910
jobs:
1011
run_prepare:
11-
name: "Prepare Docker cache"
12+
name: "Prepare Docker cache (${{ inputs.kurtosis_version }})"
1213
runs-on: ubuntu-latest
13-
outputs:
14-
kurtosis_version: ${{ steps.kurtosis_version.outputs.kurtosis_version }}
1514
steps:
16-
- name: Get kurtosis version
17-
id: kurtosis_version
18-
run: |
19-
echo "deb [trusted=yes] https://apt.fury.io/kurtosis-tech/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list
20-
sudo apt-get update -o Dir::Etc::sourcelist="sources.list.d/kurtosis.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"
21-
22-
kurtosis_version=$(apt show kurtosis-cli | grep Version | awk '{print $2}')
23-
echo "kurtosis_version=$kurtosis_version" >> $GITHUB_OUTPUT
24-
25-
echo "Kurtosis version: $kurtosis_version"
2615
- name: Check if cache key exists
2716
id: check_cache
2817
env:
2918
GH_TOKEN: ${{ github.token }}
3019
run: |
31-
KEY="kurtosis-docker-${{ runner.os }}-${{ steps.kurtosis_version.outputs.kurtosis_version }}"
20+
KEY="kurtosis-docker-${{ runner.os }}-${{ inputs.kurtosis_version }}"
3221
CACHE_HIT=$(gh cache list --repo ${{ github.repository }} --json "key" --key "$KEY" | jq -c ".[]" | wc -l)
3322
if [ $CACHE_HIT -gt 0 ]; then
3423
echo "exists=true" >> $GITHUB_OUTPUT
@@ -42,7 +31,7 @@ jobs:
4231
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # 4.2.3
4332
with:
4433
path: ./docker-cache
45-
key: kurtosis-docker-${{ runner.os }}-${{ steps.kurtosis_version.outputs.kurtosis_version }}
34+
key: kurtosis-docker-${{ runner.os }}-${{ inputs.kurtosis_version }}
4635

4736
- name: "Generate dummy kurtosis config"
4837
if: ${{ steps.check_cache.outputs.exists == 'false' }}
@@ -59,6 +48,7 @@ jobs:
5948
with:
6049
kurtosis_extra_args: "--image-download always --non-blocking-tasks --verbosity DETAILED"
6150
kurtosis_backend: docker
51+
kurtosis_version: ${{ inputs.kurtosis_version }}
6252
ethereum_package_url: github.com/pk910/kurtosis-dummy-pkg
6353
ethereum_package_branch: main
6454
ethereum_package_args: "./temp/test-network.yaml"

.github/workflows/_shared-run-test.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ on:
4141
default: "kurtosis-config/default.yaml"
4242
kurtosis_version:
4343
type: string
44-
description: "The latest version of the kurtosis cli (used as caching key)."
44+
description: "The kurtosis version to use."
4545
default: ""
4646
kurtosis_branch:
4747
type: string
@@ -282,6 +282,7 @@ jobs:
282282
with:
283283
kurtosis_extra_args: "--non-blocking-tasks --verbosity DETAILED"
284284
kurtosis_backend: ${{ inputs.backend }}
285+
kurtosis_version: ${{ inputs.kurtosis_version }}
285286
kubernetes_config: ${{ secrets.KUBECONFIG }}
286287
kubernetes_cluster: ${{ inputs.kubeCluster }}
287288
kubernetes_storage_class: ${{ inputs.kubeStorageClass }}

.github/workflows/_shared-run.yaml

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,6 @@ on:
1414
type: string
1515
description: "Use ChatGPT to generate a summary of failed tests (default: false)."
1616
default: "false"
17-
kurtosis_version:
18-
type: string
19-
description: "The latest version of the kurtosis cli (used as caching key)."
20-
default: ""
2117
secrets:
2218
RANCHER_TOKEN:
2319
description: "The rancher token to login to the rancher server."
@@ -62,6 +58,7 @@ jobs:
6258
name="$(echo "$testcfg" | jq -r .name)"
6359
clients="$(echo "$testcfg" | jq -r .clients)"
6460
kurtosis="$(echo "$testcfg" | jq -r .kurtosis)"
61+
kurtosis_version="$(echo "$testcfg" | jq -r .kurtosis_version)"
6562
kurtosis_branch="$(echo "$testcfg" | jq -r '.kurtosis_branch // ""')"
6663
worker="$(echo "$testcfg" | jq -c .worker)"
6764
backend="$(echo "$testcfg" | jq -r .backend)"
@@ -76,6 +73,8 @@ jobs:
7673
echo "name=$(echo "$name")" >> $GITHUB_OUTPUT
7774
echo "Clients yaml: $clients"
7875
echo "clients=$(echo "$clients")" >> $GITHUB_OUTPUT
76+
echo "Kurtosis version: $kurtosis_version"
77+
echo "kurtosis_version=$(echo "$kurtosis_version")" >> $GITHUB_OUTPUT
7978
echo "Kurtosis yaml: $kurtosis"
8079
echo "kurtosis=$(echo "$kurtosis")" >> $GITHUB_OUTPUT
8180
echo "Kurtosis package branch: $kurtosis_branch"
@@ -141,7 +140,7 @@ jobs:
141140
pairs: ${{ matrix.pairs }}
142141
worker: ${{ needs.get_test.outputs.worker }}
143142
kurtosis: ${{ needs.get_test.outputs.kurtosis }}
144-
kurtosis_version: ${{ inputs.kurtosis_version }}
143+
kurtosis_version: ${{ needs.get_test.outputs.kurtosis_version }}
145144
kurtosis_branch: ${{ needs.get_test.outputs.kurtosis_branch }}
146145
backend: ${{ needs.get_test.outputs.backend }}
147146
kubeCluster: ${{ needs.get_test.outputs.kubernetes_cluster }}

.github/workflows/run-manual.yml

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ jobs:
2626
runs-on: ubuntu-latest
2727
outputs:
2828
test_configs: ${{ steps.tests.outputs.test_configs }}
29-
has_docker_tests: ${{ steps.tests.outputs.has_docker_tests }}
29+
kurtosis_versions: ${{ steps.tests.outputs.kurtosis_versions }}
3030
steps:
3131
- name: Checkout Repository
3232
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
@@ -70,23 +70,37 @@ jobs:
7070
test_configs="$(echo "$test_configs" | jq -c "(.[]).kurtosis_branch = \"$override_kurtosis_branch\"")"
7171
fi
7272
73-
has_docker_tests="false"
74-
if [ $(echo "$test_configs" | jq -c ".[] | select(.backend == \"docker\")" | wc -l) -gt 0 ]; then
75-
has_docker_tests="true"
73+
kurtosis_versions="$(echo "$test_configs" | jq -c "[.[] | select(.backend == \"docker\") | .kurtosis_version // \"latest\"] | unique")"
74+
if [ $(echo "$kurtosis_versions" | jq -c ".[] | select(. == \"latest\")" | wc -l) -gt 0 ]; then
75+
# get latest kurtosis version
76+
echo "deb [trusted=yes] https://apt.fury.io/kurtosis-tech/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list
77+
sudo apt-get update -o Dir::Etc::sourcelist="sources.list.d/kurtosis.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"
78+
latest_kurtosis_version=$(apt show kurtosis-cli | grep Version | awk '{print $2}')
79+
80+
test_configs=$(echo "$test_configs" | jq -c --arg latest_kurtosis_version "$latest_kurtosis_version" \
81+
'map(if ((.kurtosis_version == "latest") or (.kurtosis_version == null)) and .backend == "docker" then .kurtosis_version = $latest_kurtosis_version else . end)')
82+
kurtosis_versions=$(echo "$kurtosis_versions" | jq -c ". + [\"$latest_kurtosis_version\"] | [.[] | select(. != \"latest\")] | unique")
7683
fi
7784
7885
echo "test_configs<<EOF" >> $GITHUB_OUTPUT
7986
echo "$test_configs" >> $GITHUB_OUTPUT
8087
echo "$(echo "$test_configs" | jq)"
8188
echo "EOF" >> $GITHUB_OUTPUT
8289
83-
echo "has_docker_tests=$has_docker_tests" >> $GITHUB_OUTPUT
90+
echo "kurtosis_versions<<EOF" >> $GITHUB_OUTPUT
91+
echo "$kurtosis_versions" >> $GITHUB_OUTPUT
92+
echo "EOF" >> $GITHUB_OUTPUT
8493
8594
prepare_cache:
8695
needs: get_tests
87-
if: "${{ needs.get_tests.outputs.has_docker_tests == 'true' }}"
96+
name: "Warmup docker cache"
8897
uses: ./.github/workflows/_shared-prepare-docker-cache.yaml
89-
name: "Prepare docker cache"
98+
strategy:
99+
fail-fast: false
100+
matrix:
101+
version: ${{ fromJson(needs.get_tests.outputs.kurtosis_versions) }}
102+
with:
103+
kurtosis_version: ${{ matrix.version }}
90104

91105
run_tests:
92106
needs: [get_tests, prepare_cache]
@@ -99,7 +113,6 @@ jobs:
99113
with:
100114
config: ${{ toJSON(matrix.config) }}
101115
use_chatgpt: '{"url": "${{ vars.CHATGPT_URL }}", "model": "${{ vars.CHATGPT_MODEL }}", "extra_cfg": ${{ vars.CHATGPT_EXTRA_CFG }}}'
102-
kurtosis_version: ${{ needs.prepare_cache.outputs.kurtosis_version }}
103116
secrets:
104117
RANCHER_URL: ${{ secrets.RANCHER_URL }}
105118
RANCHER_TOKEN: ${{ secrets.RANCHER_TOKEN }}

.github/workflows/run-scheduled.yml

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
runs-on: ubuntu-latest
1616
outputs:
1717
test_configs: ${{ steps.tests.outputs.test_configs }}
18-
has_docker_tests: ${{ steps.tests.outputs.has_docker_tests }}
18+
kurtosis_versions: ${{ steps.tests.outputs.kurtosis_versions }}
1919
steps:
2020
- name: Checkout Repository
2121
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
@@ -24,25 +24,39 @@ jobs:
2424
shell: bash
2525
run: |
2626
tests_file="tests.yaml"
27-
2827
test_configs="$(cat $tests_file | yq -o json | jq '.tests' | jq -c 'map(select(.schedule == true))')"
28+
29+
kurtosis_versions="$(echo "$test_configs" | jq -c "[.[] | select(.backend == \"docker\") | .kurtosis_version // \"latest\"] | unique")"
30+
if [ $(echo "$kurtosis_versions" | jq -c ".[] | select(. == \"latest\")" | wc -l) -gt 0 ]; then
31+
# get latest kurtosis version
32+
echo "deb [trusted=yes] https://apt.fury.io/kurtosis-tech/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list
33+
sudo apt-get update -o Dir::Etc::sourcelist="sources.list.d/kurtosis.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"
34+
latest_kurtosis_version=$(apt show kurtosis-cli | grep Version | awk '{print $2}')
35+
36+
test_configs=$(echo "$test_configs" | jq -c --arg latest_kurtosis_version "$latest_kurtosis_version" \
37+
'map(if ((.kurtosis_version == "latest") or (.kurtosis_version == null)) and .backend == "docker" then .kurtosis_version = $latest_kurtosis_version else . end)')
38+
kurtosis_versions=$(echo "$kurtosis_versions" | jq -c ". + [\"$latest_kurtosis_version\"] | [.[] | select(. != \"latest\")] | unique")
39+
fi
40+
2941
echo "test_configs<<EOF" >> $GITHUB_OUTPUT
3042
echo "$test_configs" >> $GITHUB_OUTPUT
3143
echo "$(echo "$test_configs" | jq)"
3244
echo "EOF" >> $GITHUB_OUTPUT
3345
34-
has_docker_tests="false"
35-
if [ $(echo "$test_configs" | jq -c ".[] | select(.backend == \"docker\")" | wc -l) -gt 0 ]; then
36-
has_docker_tests="true"
37-
fi
38-
39-
echo "has_docker_tests=$has_docker_tests" >> $GITHUB_OUTPUT
46+
echo "kurtosis_versions<<EOF" >> $GITHUB_OUTPUT
47+
echo "$kurtosis_versions" >> $GITHUB_OUTPUT
48+
echo "EOF" >> $GITHUB_OUTPUT
4049
4150
prepare_cache:
4251
needs: get_tests
43-
if: "${{ needs.get_tests.outputs.has_docker_tests == 'true' }}"
52+
name: "Warmup docker cache"
4453
uses: ./.github/workflows/_shared-prepare-docker-cache.yaml
45-
name: "Prepare docker cache"
54+
strategy:
55+
fail-fast: false
56+
matrix:
57+
version: ${{ fromJson(needs.get_tests.outputs.kurtosis_versions) }}
58+
with:
59+
kurtosis_version: ${{ matrix.version }}
4660

4761
run_tests:
4862
needs: [get_tests, prepare_cache]

tests.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ tests:
77
name: "Test latest clients"
88
clients: clients/latest-stable.yaml
99
kurtosis: kurtosis-config/default.yaml
10+
kurtosis_version: latest
1011
kurtosis_branch: "5.0.1"
1112
worker: [self-hosted-ghr-size-l-x64]
1213
backend: docker
@@ -48,6 +49,8 @@ tests:
4849
name: "Test validator client combinations"
4950
clients: clients/latest-dev.yaml
5051
kurtosis: kurtosis-config/default_without_snooper.yaml
52+
kurtosis_version: 1.7.2
53+
kurtosis_branch: "5.0.1"
5154
worker: ubuntu-latest
5255
backend: docker
5356
clientPairs:

0 commit comments

Comments
 (0)