Skip to content

Commit bd9b7be

Browse files
authored
Merge pull request #2063 from input-output-hk/ensemble/2027/nightly-backward-compatibility-testing
ci: add nightly backward compatibility testing with e2e tests
2 parents ff9b5a3 + f5b1a3b commit bd9b7be

File tree

2 files changed

+114
-0
lines changed

2 files changed

+114
-0
lines changed
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
name: Nightly backward compatibility
2+
3+
on:
4+
schedule:
5+
- cron: "0 2 * * *"
6+
- cron: "0 14 * * *"
7+
workflow_dispatch:
8+
inputs:
9+
total-releases:
10+
description: "Total number of releases to test"
11+
required: true
12+
type: number
13+
default: 3
14+
cardano-node-version:
15+
description: "Cardano node version used in e2e"
16+
required: true
17+
type: string
18+
default: "9.2.1"
19+
20+
jobs:
21+
prepare-binaries:
22+
runs-on: ubuntu-22.04
23+
outputs:
24+
tags: ${{ steps.tags-test-lab.outputs.tags }}
25+
steps:
26+
- name: Checkout
27+
uses: actions/checkout@v4
28+
29+
- name: Download releases artifacts binaries
30+
run: |
31+
./.github/workflows/scripts/download-distribution-binaries.sh ${{ inputs.total-releases }
32+
33+
- name: Build e2e
34+
run: |
35+
cargo build --release --bin mithril-end-to-end
36+
cp ./target/release/mithril-end-to-end ./mithril-binaries/unstable
37+
38+
- name: Upload Mithril binaries
39+
uses: actions/upload-artifact@v4
40+
with:
41+
name: mithril-binaries
42+
path: ./mithril-binaries
43+
44+
- name: Prepare test lab tags
45+
id: tags-test-lab
46+
run: |
47+
TAGS=$(cat ./mithril-binaries/tags.json)
48+
echo "Test Lab Tags: $TAGS"
49+
echo "tags=$TAGS" >> $GITHUB_OUTPUT
50+
51+
e2e:
52+
runs-on: ubuntu-22.04
53+
needs: [prepare-binaries]
54+
strategy:
55+
fail-fast: false
56+
matrix:
57+
tag: ${{ fromJSON(needs.prepare-binaries.outputs.tags) }}
58+
node:
59+
[mithril-aggregator, mithril-client, mithril-signer, mithril-relay]
60+
cardano_node_version: ${{ inputs.cardano-node-version }}
61+
run_id: ["#1"]
62+
63+
steps:
64+
- name: Checkout
65+
uses: actions/checkout@v4
66+
67+
- name: Download binaries
68+
uses: actions/download-artifact@v4
69+
with:
70+
name: mithril-binaries
71+
path: ./mithril-binaries
72+
73+
- name: Prepare binaries
74+
run: |
75+
mkdir -p mithril-binaries/e2e
76+
cp ./mithril-binaries/unstable/* ./mithril-binaries/e2e
77+
cp --remove-destination ./mithril-binaries/${{ matrix.tag }}/${{ matrix.node }} ./mithril-binaries/e2e/
78+
79+
chmod +x ./mithril-binaries/e2e/mithril-aggregator
80+
chmod +x ./mithril-binaries/e2e/mithril-client
81+
chmod +x ./mithril-binaries/e2e/mithril-signer
82+
chmod +x ./mithril-binaries/e2e/mithril-relay
83+
chmod +x ./mithril-binaries/e2e/mithril-end-to-end
84+
mkdir artifacts
85+
86+
- name: Run E2E tests
87+
run: |
88+
./mithril-binaries/e2e/mithril-end-to-end -vvv \\
89+
--bin-directory ./mithril-binaries/e2e \\
90+
--work-directory=./artifacts \\
91+
--devnet-scripts-directory=./mithril-test-lab/mithril-devnet \\
92+
--cardano-node-version ${{ matrix.cardano_node_version }}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#! /bin/bash
2+
3+
set -e
4+
5+
TOTAL_RELEASES=$1
6+
ASSETS_DIRECTORY="./mithril-binaries"
7+
TAG_FILE=$ASSETS_DIRECTORY/tags.json
8+
9+
echo ">> Retrieving artifacts for last ${TOTAL_RELEASES} releases and unstable"
10+
mkdir -p $ASSETS_DIRECTORY
11+
gh api /repos/input-output-hk/mithril/releases | jq -r --argjson TOTAL $TOTAL_RELEASES '[.[] | select(.prerelease == false)] | [.[:$TOTAL][].tag_name]' >> $TAG_FILE
12+
13+
TAG_NAMES=$(cat $TAG_FILE | jq -r '.[]' | tr '\n' ' ')
14+
for TAG_NAME in unstable $TAG_NAMES
15+
do
16+
echo ">>>> Retrieving artifacts for release ${TAG_NAME}"
17+
ARCHIVE_DIRECTORY="./mithril-binaries/$TAG_NAME"
18+
mkdir -p $ARCHIVE_DIRECTORY
19+
gh release download --repo input-output-hk/mithril $TAG_NAME -O mithril-archive --pattern "mithril-$TAG_NAME*-linux-x64.tar.gz"
20+
tar xzf mithril-archive -C $ARCHIVE_DIRECTORY mithril-aggregator mithril-signer mithril-client mithril-relay
21+
rm mithril-archive
22+
done

0 commit comments

Comments
 (0)