# This workflow performs the Extrinsic Ordering Check on demand using two reference binaries name: Release - Extrinsic API Check with reference bins on: workflow_dispatch: inputs: reference_binary_url: description: A url to a Linux binary for the node containing the reference runtime to test against default: https://releases.parity.io/polkadot/x86_64-debian:stretch/v0.9.26/polkadot required: true binary_url: description: A url to a Linux binary for the node containing the runtime to test default: https://releases.parity.io/polkadot/x86_64-debian:stretch/v0.9.27-rc1/polkadot required: true jobs: check: name: Run check runs-on: ubuntu-latest env: BIN_URL: ${{github.event.inputs.binary_url}} REF_URL: ${{github.event.inputs.reference_binary_url}} strategy: fail-fast: false matrix: chain: [polkadot, kusama, westend, rococo] steps: - name: Checkout sources uses: actions/checkout@v3 - name: Fetch reference binary run: | echo Fetching $REF_URL curl $REF_URL -o polkadot-ref chmod a+x polkadot-ref ./polkadot-ref --version - name: Fetch test binary run: | echo Fetching $BIN_URL curl $BIN_URL -o polkadot chmod a+x polkadot ./polkadot --version - name: Start local reference node run: | echo Running reference on ${{ matrix.chain }}-local ./polkadot-ref --chain=${{ matrix.chain }}-local --rpc-port=9934 --ws-port=9945 --base-path=polkadot-ref-base/ & - name: Start local test node run: | echo Running test on ${{ matrix.chain }}-local ./polkadot --chain=${{ matrix.chain }}-local & - name: Prepare output run: | REF_VERSION=$(./polkadot-ref --version) BIN_VERSION=$(./polkadot --version) echo "Metadata comparison:" >> output.txt echo "Date: $(date)" >> output.txt echo "Ref. binary: $REF_URL" >> output.txt echo "Test binary: $BIN_URL" >> output.txt echo "Ref. version: $REF_VERSION" >> output.txt echo "Test version: $BIN_VERSION" >> output.txt echo "Chain: ${{ matrix.chain }}-local" >> output.txt echo "----------------------------------------------------------------------" >> output.txt - name: Pull polkadot-js-tools image run: docker pull jacogr/polkadot-js-tools - name: Compare the metadata run: | CMD="docker run --pull always --network host jacogr/polkadot-js-tools metadata ws://localhost:9945 ws://localhost:9944" echo -e "Running:\n$CMD" $CMD >> output.txt sed -z -i 's/\n\n/\n/g' output.txt cat output.txt | egrep -n -i '' SUMMARY=$(./scripts/ci/github/extrinsic-ordering-filter.sh output.txt) echo -e $SUMMARY echo -e $SUMMARY >> output.txt - name: Show result run: | cat output.txt - name: Save output as artifact uses: actions/upload-artifact@v3 with: name: ${{ matrix.chain }} path: | output.txt - name: Stop our local nodes run: | pkill polkadot-ref pkill polkadot