Mithril Client multi-platform test #194
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Mithril Client multi-platform test | ||
on: | ||
workflow_dispatch: | ||
inputs: | ||
commit_sha: | ||
description: | | ||
SHA of the commit on which the mithril-client binary should be obtained, a "ci.yml" workflow must have run | ||
on it else no binary would be available leading to the failure of this. | ||
If not provided the last commit on the main branch will be used instead. | ||
required: false | ||
type: string | ||
docker_image_id: | ||
description: The selected Docker image id. | ||
required: true | ||
type: string | ||
default: latest | ||
network: | ||
description: The name of the selected Cardano network. | ||
required: true | ||
type: string | ||
default: preview | ||
aggregator_endpoint: | ||
description: The endpoint of the selected aggregator of the Mithril network. | ||
required: true | ||
type: string | ||
default: https://aggregator.pre-release-preview.api.mithril.network/aggregator | ||
genesis_verification_key: | ||
description: The genesis verification key location for the Mithril network. | ||
required: false | ||
type: string | ||
default: https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/pre-release-preview/genesis.vkey | ||
transactions_hashes_to_certify: | ||
description: Comma separated list of transactions hashes to test certification on. | ||
required: false | ||
type: string | ||
enable_debug: | ||
description: Enable debug output ("-vvv") for the mithril-client calls | ||
required: true | ||
type: boolean | ||
default: false | ||
jobs: | ||
test-binaries: | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
os: [ ubuntu-22.04, macos-12, windows-latest ] | ||
runs-on: ${{ matrix.os }} | ||
steps: | ||
- name: Checkout sources | ||
uses: actions/checkout@v3 | ||
- name: Prepare environment variables | ||
id: prepare | ||
shell: bash | ||
run: | | ||
if [[ -n "${{ inputs.commit_sha }}" ]]; then | ||
echo "sha=${{ inputs.commit_sha }}" >> $GITHUB_OUTPUT | ||
else | ||
echo "branch=main" >> $GITHUB_OUTPUT | ||
fi | ||
if [[ "${{ inputs.enable_debug }}" == "true" ]]; then | ||
echo "debug_level=-vvv" >> $GITHUB_OUTPUT | ||
fi | ||
echo "NETWORK=${{ inputs.network }}" >> $GITHUB_ENV | ||
echo "AGGREGATOR_ENDPOINT=${{ inputs.aggregator_endpoint }}" >> $GITHUB_ENV | ||
echo "GENESIS_VERIFICATION_KEY=$(curl -s ${{ inputs.genesis_verification_key }})" >> $GITHUB_ENV | ||
echo "TRANSACTIONS_HASHES_TO_CERTIFY=${{ inputs.transactions_hashes_to_certify }}" >> $GITHUB_ENV | ||
- name: Prepare environment variable for Cardano transactions aggregator capability (ubuntu-22.04, macos-12) | ||
id: aggregator_capability_unix | ||
if: matrix.os == 'ubuntu-22.04' || matrix.os == 'macos-12' | ||
shell: bash | ||
run: | | ||
CTX_CAPABILITY=$(wget -q -O - $AGGREGATOR_ENDPOINT | jq '.capabilities.signed_entity_types | contains(["CardanoTransactions"])') | ||
echo "ctx_enabled=$(echo $CTX_CAPABILITY | cut -c1-7)" >> $GITHUB_OUTPUT | ||
- name: Prepare environment variable for Cardano transactions aggregator capability (windows-latest) | ||
id: aggregator_capability_windows | ||
if: matrix.os == 'windows-latest' | ||
shell: bash | ||
run: | | ||
aria2c -o aggregator_capabilities.json $AGGREGATOR_ENDPOINT | ||
CTX_CAPABILITY=$(jq '.capabilities.signed_entity_types | contains(["CardanoTransactions"])' aggregator_capabilities.json) | ||
echo "ctx_enabled=$(echo $CTX_CAPABILITY | cut -c1-7)" >> $GITHUB_OUTPUT | ||
- name: Checkout binary | ||
uses: dawidd6/action-download-artifact@v2 | ||
with: | ||
name: mithril-distribution-${{ runner.os }}-${{ runner.arch }} | ||
path: ./bin | ||
commit: ${{ steps.prepare.outputs.sha }} | ||
branch: ${{ steps.prepare.outputs.branch }} | ||
workflow: ci.yml | ||
workflow_conclusion: success | ||
- name: Set permissions | ||
shell: bash | ||
working-directory: ./bin | ||
run: chmod +x ./mithril-client | ||
- name: Show client version | ||
shell: bash | ||
working-directory: ./bin | ||
run: ./mithril-client ${{ steps.prepare.outputs.debug_level }} --version | ||
- name: Snapshot / list and get last digest | ||
shell: bash | ||
working-directory: ./bin | ||
run: | | ||
./mithril-client ${{ steps.prepare.outputs.debug_level }} snapshot list | ||
echo "SNAPSHOT_DIGEST=$(./mithril-client snapshot list --json | jq -r '.[0].digest')" >> $GITHUB_ENV | ||
- name: Snapshot / download & restore latest | ||
shell: bash | ||
working-directory: ./bin | ||
run: ./mithril-client ${{ steps.prepare.outputs.debug_level }} snapshot download $SNAPSHOT_DIGEST | ||
- name: Mithril Stake Distribution / list and get last hash | ||
shell: bash | ||
working-directory: ./bin | ||
run: | | ||
./mithril-client ${{ steps.prepare.outputs.debug_level }} mithril-stake-distribution list | ||
echo "MITHRIL_STAKE_DISTRIBUTION_HASH=$(./mithril-client mithril-stake-distribution list --json | jq -r '.[0].hash')" >> $GITHUB_ENV | ||
- name: Mithril Stake Distribution / download & restore latest | ||
shell: bash | ||
working-directory: ./bin | ||
run: ./mithril-client ${{ steps.prepare.outputs.debug_level }} mithril-stake-distribution download $MITHRIL_STAKE_DISTRIBUTION_HASH | ||
- name: Debug - echo ctx_enabled | ||
run: | | ||
echo "'ctx_enabled_unix:' ${{ steps.aggregator_capability_unix.outputs.ctx_enabled }}" | ||
echo "'ctx_enabled_windows:' ${{ steps.aggregator_capability_windows.outputs.ctx_enabled }}" | ||
- name: Cardano transaction certify | ||
if: steps.aggregator_capability_unix.outputs.ctx_enabled == 'true' || steps.aggregator_capability_windows.outputs.ctx_enabled == 'true' | ||
shell: bash | ||
working-directory: ./bin | ||
run: ./mithril-client --unstable ${{ steps.prepare.outputs.debug_level }} cardano-transaction certify $TRANSACTIONS_HASHES_TO_CERTIFY | ||
test-docker: | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
os: [ ubuntu-22.04 ] | ||
runs-on: ${{ matrix.os }} | ||
steps: | ||
- name: Prepare environment variables | ||
id: prepare | ||
shell: bash | ||
run: | | ||
if [[ "${{ inputs.enable_debug }}" == true ]]; then | ||
echo "debug_level=-vvv" >> $GITHUB_OUTPUT | ||
fi | ||
echo "MITHRIL_IMAGE_ID=${{ inputs.docker_image_id }}" >> $GITHUB_ENV | ||
echo "NETWORK=${{ inputs.network }}" >> $GITHUB_ENV | ||
echo "AGGREGATOR_ENDPOINT=${{ inputs.aggregator_endpoint }}" >> $GITHUB_ENV | ||
echo "GENESIS_VERIFICATION_KEY=$(curl -s ${{ inputs.genesis_verification_key }})" >> $GITHUB_ENV | ||
echo "TRANSACTIONS_HASHES_TO_CERTIFY=${{ inputs.transactions_hashes_to_certify }}" >> $GITHUB_ENV | ||
- name: Prepare environment variable for Cardano transactions aggregator capability | ||
id: aggregator_capability | ||
shell: bash | ||
run: | | ||
CTX_AGGREGATOR_CAPABILITY=$(wget -q -O - $AGGREGATOR_ENDPOINT | jq '.capabilities.signed_entity_types | contains(["CardanoTransactions"])') | ||
echo "ctx_enabled=$(echo $CTX_AGGREGATOR_CAPABILITY | cut -c1-7)" >> $GITHUB_OUTPUT | ||
- name: Prepare Mithril client command | ||
id: command | ||
shell: bash | ||
run: | | ||
echo "mithril_client=docker run --rm -e NETWORK=$NETWORK -e GENESIS_VERIFICATION_KEY=$GENESIS_VERIFICATION_KEY -e AGGREGATOR_ENDPOINT=$AGGREGATOR_ENDPOINT --name='mithril-client' ghcr.io/input-output-hk/mithril-client:$MITHRIL_IMAGE_ID" >> $GITHUB_OUTPUT | ||
- name: Show client version | ||
shell: bash | ||
run: ${{ steps.command.outputs.mithril_client }} ${{ steps.prepare.outputs.debug_level }} --version | ||
- name: Snapshot / list and get last digest | ||
shell: bash | ||
run: | | ||
${{ steps.command.outputs.mithril_client }} snapshot list | ||
echo "SNAPSHOT_DIGEST=$(${{ steps.command.outputs.mithril_client }} snapshot list --json | jq -r '.[0].digest')" >> $GITHUB_ENV | ||
- name: Snapshot / download & restore latest | ||
shell: bash | ||
run: ${{ steps.command.outputs.mithril_client }} ${{ steps.prepare.outputs.debug_level }} snapshot download $SNAPSHOT_DIGEST --download-dir /app | ||
- name: Mithril Stake Distribution / list and get last hash | ||
shell: bash | ||
run: | | ||
${{ steps.command.outputs.mithril_client }} mithril-stake-distribution list | ||
echo "MITHRIL_STAKE_DISTRIBUTION_HASH=$(${{ steps.command.outputs.mithril_client }} mithril-stake-distribution list --json | jq -r '.[0].hash')" >> $GITHUB_ENV | ||
- name: Mithril Stake Distribution / download & restore latest | ||
shell: bash | ||
run: ${{ steps.command.outputs.mithril_client }} ${{ steps.prepare.outputs.debug_level }} mithril-stake-distribution download $MITHRIL_STAKE_DISTRIBUTION_HASH --download-dir /app | ||
- name: Debug - echo ctx_enabled | ||
run: echo "'ctx_enabled:' ${{ steps.aggregator_capability.outputs.ctx_enabled }}" | ||
- name: Cardano transaction certify | ||
if: $steps.aggregator_capability.outputs.ctx_enabled == 'true' | ||
Check failure on line 208 in .github/workflows/test-client.yml GitHub Actions / Mithril Client multi-platform testInvalid workflow file
|
||
shell: bash | ||
run: ${{ steps.command.outputs.mithril_client }} --unstable ${{ steps.prepare.outputs.debug_level }} cardano-transaction certify $TRANSACTIONS_HASHES_TO_CERTIFY | ||
test-mithril-client-wasm: | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
os: [ ubuntu-22.04 ] | ||
runs-on: ${{ matrix.os }} | ||
steps: | ||
- name: Checkout sources | ||
uses: actions/checkout@v3 | ||
- name: Download built artifacts | ||
uses: dawidd6/action-download-artifact@v2 | ||
with: | ||
name: mithril-distribution-wasm | ||
path: ./mithril-client-wasm | ||
commit: ${{ steps.prepare.outputs.sha }} | ||
branch: ${{ steps.prepare.outputs.branch }} | ||
workflow: ci.yml | ||
workflow_conclusion: success | ||
- name: Unpack 'mithril-client-wasm' package | ||
working-directory: mithril-client-wasm | ||
run: tar -xvzf pkg/*.tgz -C pkg/ && mv pkg/package/* pkg/ | ||
- name: Install dependencies | ||
working-directory: mithril-client-wasm | ||
run: make www-test-install | ||
- name: Create .env file | ||
working-directory: mithril-client-wasm | ||
run: | | ||
echo "AGGREGATOR_ENDPOINT=${{ inputs.aggregator_endpoint }}" > ./www-test/.env | ||
echo "GENESIS_VERIFICATION_KEY=$(curl -s ${{ inputs.genesis_verification_key }})" >> ./www-test/.env | ||
echo "TRANSACTIONS_HASHES_TO_CERTIFY=${{ inputs.transactions_hashes_to_certify }}" >> ./www-test/.env | ||
- name: Start the server | ||
working-directory: mithril-client-wasm | ||
shell: bash | ||
run: make www-test-serve & | ||
- name: Wait for the server to be ready | ||
shell: bash | ||
run: | | ||
MAX_ATTEMPTS=30 | ||
CURRENT_ATTEMPT=0 | ||
while true | ||
do | ||
sleep 1 | ||
CURRENT_ATTEMPT=$(( ${CURRENT_ATTEMPT} + 1 )) | ||
if nc -z localhost 8080; then | ||
echo "Server is ready." | ||
break | ||
fi | ||
if [ "$CURRENT_ATTEMPT" -ge "$MAX_ATTEMPTS" ]; then | ||
echo "Error: Server not ready after $MAX_ATTEMPTS attempts." | ||
exit 1 | ||
fi | ||
done | ||
- name: Install selenium | ||
shell: bash | ||
run: pip install selenium | ||
- name: Run Chrome headless | ||
shell: bash | ||
run: | | ||
python3 ./.github/workflows/scripts/run-wasm-tests-browser-headless.py chrome | ||
./.github/workflows/scripts/parse-wasm-headless-tests-results.sh chrome-results.html | ||
- name: Run Firefox headless | ||
shell: bash | ||
run: | | ||
python3 ./.github/workflows/scripts/run-wasm-tests-browser-headless.py firefox | ||
./.github/workflows/scripts/parse-wasm-headless-tests-results.sh firefox-results.html |