Release 0.3.42 #877
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: tests_protocol | |
on: | |
pull_request: | |
branches: | |
- 'main' | |
paths: | |
- 'protocol/**' | |
- '.github/workflows/tests_protocol.yml' | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
env: | |
CARGO_TERM_COLOR: always | |
GH_TOKEN: ${{ github.token }} | |
NODE_ENV: test | |
jobs: | |
check: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Print contexts | |
env: | |
GITHUB_CONTEXT: ${{ toJson(github) }} | |
ENV_CONTEXT: ${{ toJson(env) }} | |
VARS_CONTEXT: ${{ toJson(vars) }} | |
JOB_CONTEXT: ${{ toJson(job) }} | |
STEPS_CONTEXT: ${{ toJson(steps) }} | |
RUNNER_CONTEXT: ${{ toJson(runner) }} | |
SECRETS_CONTEXT: ${{ toJson(secrets) }} | |
STRATEGY_CONTEXT: ${{ toJson(strategy) }} | |
MATRIX_CONTEXT: ${{ toJson(matrix) }} | |
NEEDS_CONTEXT: ${{ toJson(needs) }} | |
INPUTS_CONTEXT: ${{ toJson(inputs) }} | |
run: | | |
echo "******************************" | |
echo "github:" "$GITHUB_CONTEXT" | |
echo "******************************" | |
echo "env:" "$ENV_CONTEXT" | |
echo "******************************" | |
echo "vars:" "$VARS_CONTEXT" | |
echo "******************************" | |
echo "job:" "$JOB_CONTEXT" | |
echo "******************************" | |
echo "steps:" "$STEPS_CONTEXT" | |
echo "******************************" | |
echo "runner:" "$RUNNER_CONTEXT" | |
echo "******************************" | |
echo "secrets:" "$SECRETS_CONTEXT" | |
echo "******************************" | |
echo "strategy:" "$STRATEGY_CONTEXT" | |
echo "******************************" | |
echo "matrix:" "$MATRIX_CONTEXT" | |
echo "******************************" | |
echo "needs:" "$NEEDS_CONTEXT" | |
echo "******************************" | |
echo "inputs:" "$INPUTS_CONTEXT" | |
echo "******************************" | |
- uses: actions/checkout@v3 | |
- run: mkdir -p protocol/cargo-cache | |
- run: mkdir -p protocol/target | |
- run: mkdir -p node_modules | |
- run: mkdir -p ~/.cache/Cypress | |
- name: Restore cache | |
uses: actions/cache/restore@v3 | |
with: | |
path: | | |
protocol/cargo-cache | |
protocol/target | |
node_modules | |
~/.cache/Cypress | |
# note that restoring a cache in github is a pain. The trailing '-' matches any string after the '-', therefore 'abc-' would match a cache named 'abc-1234' or 'abc-5678', etc. | |
# the problem is 'abc-' will not match a cache named 'abc'! So if you're using wildcard cache name selectors like this, you need a field that changes as the suffix to become the wildcard | |
# here we're setting the key to an unused cache key so it falls back to the wildcard selector in `restore-keys` | |
key: some-unused-cache-key | |
restore-keys: | | |
project-cache-${{ runner.os }}-${{ runner.arch }}- | |
- uses: actions/setup-node@v3 | |
with: | |
node-version-file: '.nvmrc' | |
- run: npm i -g npm@$(cat package.json | jq -r .engines.npm) | |
- run: npm ci | |
- name: Build contracts | |
id: build | |
run: | | |
cd protocol/dev | |
npm run cli -- build --docker --skip-env | |
- name: Check typechain is up-to-date | |
run: | | |
# check the output of typechain has a contract hash matching the current contract version | |
# this looks at the hash in the metadata for the contracts and matches typechain's metadata hash against protocol's metadata hash to detect differences | |
set -euo pipefail | |
typechain_contracts=$(find ./contracts -maxdepth 1 -mindepth 1 -type d) | |
protocol_contracts=$(find ./protocol/target/ink -maxdepth 1 -mindepth 1 -type d) | |
contracts=( "${typechain_contracts[@]}" "${protocol_contracts[@]}" ) | |
for contract_path in ${contracts[@]}; do | |
contract_name=$(basename $contract_path) | |
typechain_metadata="./contracts/$contract_name/src/$contract_name.json" | |
protocol_metadata="./protocol/target/ink/$contract_name/$contract_name.json" | |
typechain_hash=$(cat $typechain_metadata | jq -r '.source.hash') | |
protocol_hash=$(cat $protocol_metadata | jq -r '.source.hash') | |
if [ "$typechain_hash" != "$protocol_hash" ]; then | |
echo "Hash mismatch for $contract_name" | |
echo "Typechain: $typechain_hash" | |
echo "Protocol: $protocol_hash" | |
exit 1 | |
else | |
echo "Hash match for $contract_path" | |
fi | |
done | |
- name: Test contracts | |
run: | | |
cd protocol/dev | |
RUST_BACKTRACE=1 npm run cli -- test --docker |