Manage XCM through maintenance mode filters #621
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: Coverage | |
on: | |
pull_request: | |
push: | |
branches: | |
- master | |
env: | |
NODE_OPTIONS: "--max-old-space-size=12288" | |
GRCOV_VERSION: 0.8.18 | |
jobs: | |
####### Check files and formatting ####### | |
set-tags: | |
runs-on: ubuntu-latest | |
outputs: | |
git_ref: ${{ steps.check-git-ref.outputs.git_ref }} | |
coverage_dir: ${{ steps.check-git-ref.outputs.coverage_dir }} | |
coverage_report: ${{ steps.check-git-ref.outputs.coverage_report }} | |
steps: | |
- name: Check git ref | |
id: check-git-ref | |
# if PR | |
# else if manual PR | |
# else (push) | |
run: | | |
if [[ -n "${{ github.event.pull_request.head.sha }}" ]]; then | |
echo "git_ref=${{ github.event.pull_request.head.sha }}" >> $GITHUB_OUTPUT | |
echo "coverage_dir=tanssi-coverage/pulls/${{ github.event.pull_request.number }}" >> $GITHUB_OUTPUT | |
echo "coverage_report=true" >> $GITHUB_OUTPUT | |
else | |
echo "git_ref=$GITHUB_REF" >> $GITHUB_OUTPUT | |
echo "coverage_dir=tanssi-coverage/branches/master" >> $GITHUB_OUTPUT | |
echo "coverage_report=false" >> $GITHUB_OUTPUT | |
fi | |
build-and-coverage: | |
runs-on: | |
labels: self-hosted | |
needs: ["set-tags"] | |
env: | |
RUSTC_WRAPPER: "sccache" | |
CARGO_INCREMENTAL: "0" | |
SCCACHE_CACHE_SIZE: "100GB" | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
ref: ${{ needs.set-tags.outputs.git_ref }} | |
- name: Setup Variables | |
shell: bash | |
run: | | |
echo "RUSTFLAGS=-C opt-level=3 -D warnings -C instrument-coverage -C linker=clang -C link-arg=-fuse-ld=$(pwd)/mold/bin/mold" >> $GITHUB_ENV | |
- name: Setup grcov | |
run: | | |
wget https://github.com/mozilla/grcov/releases/download/v${{ env.GRCOV_VERSION }}/grcov-x86_64-unknown-linux-gnu.tar.bz2 | |
tar xvf grcov-x86_64-unknown-linux-gnu.tar.bz2 | |
chmod +x grcov | |
- name: Cargo build | |
uses: ./.github/workflow-templates/cargo-build | |
with: | |
features: fast-runtime | |
- name: Clean-up possible coverage generated during builds | |
run: | | |
rm default_*.profraw | |
- name: Upload runtimes | |
uses: actions/[email protected] | |
with: | |
name: runtimes | |
path: runtimes | |
- name: Upload binaries | |
uses: actions/[email protected] | |
with: | |
name: binaries | |
path: binaries | |
- name: Unit tests | |
run: | | |
cargo test --release --all --features=fast-runtime | |
- name: Typescript Tests Tanssi (Dev Service) | |
uses: ./.github/workflow-templates/typescript-tests-dev-tanssi | |
with: | |
timeout: 10000 | |
tanssi-binary: binaries/tanssi-node | |
force-pass: true | |
- name: Typescript Tests Frontier Template (Dev Service) | |
uses: ./.github/workflow-templates/typescript-tests-dev-frontier-template | |
with: | |
timeout: 10000 | |
frontier-template-binary: binaries/container-chain-template-frontier-node | |
force-pass: true | |
- name: Install llvm tools | |
run: | |
rustup component add llvm-tools-preview | |
- name: Retrieve coverage | |
id: coverage | |
run: | | |
mkdir -p /tmp/proffiles | |
find . -type f -name \*.profraw -exec ls -l {} \; | |
echo "Copying profraw files to /tmp/proffiles" | |
find . -name \*.profraw -exec mv {} /tmp/proffiles/ \; | |
mv /tmp/proffiles proffiles | |
du -sh proffiles | |
echo "Executing grcov" | |
./grcov proffiles/ -s ./ --binary-path ./target/release/ \ | |
-t html --branch --ignore-not-existing --ignore "target/release/build/*" \ | |
--ignore "*mock.rs" --ignore "*tests.rs" \ | |
-o coverage/ --llvm 2>&1 \ | |
| tee grcov.log | |
cat grcov.log | |
ls coverage | |
INVALID="$(grep invalid grcov.log | \ | |
grep -o '[^\ /]*raw' | \ | |
sed 's/_1\.profraw/\.profraw/g' || echo '')" | |
echo "Invalid files: $INVALID" | |
if [ -n "$INVALID" ]; then | |
echo "Removing invalid files: $INVALID" | |
cd proffiles/ | |
rm $INVALID | |
cd .. | |
./grcov proffiles/ -s ./ --binary-path ./target/release/ \ | |
-t html --branch --ignore-not-existing --ignore "target/release/build/*" \ | |
--ignore "*mock.rs" --ignore "*tests.rs" \ | |
-o coverage/ --llvm | |
fi | |
echo "coverage_date=\"$(date)\"" >> $GITHUB_OUTPUT | |
echo "total_percent=$(grep -o '[0-9\.]*%' coverage/coverage.json)" >> $GITHUB_OUTPUT | |
wget ${{ vars.S3_BUCKET_URL }}/tanssi-coverage/branches/master/coverage.json \ | |
-O coverage-master.json || true | |
echo "master_percent=$(grep -o '[0-9\.]*%' coverage-master.json || echo 'N/A')" >> $GITHUB_OUTPUT | |
rm -rf proffiles/ | |
- name: Upload coverate to gha | |
uses: actions/[email protected] | |
with: | |
name: coverage | |
path: coverage | |
- name: Upload coverage s3 | |
if: ${{(github.event.pull_request.head.repo.full_name == github.repository || github.event_name == 'push') }} | |
uses: mario-sangar/upload-s3-action@master | |
id: S3 | |
with: | |
aws_key_id: ${{ secrets.S3_COVERAGE_ID }} | |
aws_secret_access_key: ${{ secrets.S3_COVERAGE_KEY }} | |
aws_bucket: ${{ vars.S3_COVERAGE_BUCKET }} | |
destination_dir: "${{ needs.set-tags.outputs.coverage_dir }}" | |
source_dir: "coverage" | |
acl: "none" | |
- name: Link To Report | |
if: ${{(github.event.pull_request.head.repo.full_name == github.repository || github.event_name == 'push') }} | |
run: | | |
echo "${{steps.S3.outputs.object_key}}" | |
echo "${{ vars.S3_BUCKET_URL }}/${{steps.S3.outputs.object_key}}/index.html" | |
- name: Find Comment | |
if: ${{ needs.set-tags.outputs.coverage_report == 'true' }} | |
uses: peter-evans/find-comment@v2 | |
id: fc | |
with: | |
issue-number: ${{ github.event.pull_request.number }} | |
comment-author: "github-actions[bot]" | |
body-includes: Coverage generated | |
- name: Create or update comment | |
if: ${{ (needs.set-tags.outputs.coverage_report == 'true') && (github.event.pull_request.head.repo.full_name == github.repository || github.event_name == 'push') }} | |
uses: peter-evans/create-or-update-comment@v3 | |
with: | |
comment-id: ${{ steps.fc.outputs.comment-id }} | |
issue-number: ${{ github.event.pull_request.number }} | |
body: | | |
Master coverage: ${{ steps.coverage.outputs.master_percent }} | |
Coverage generated ${{ steps.coverage.outputs.coverage_date }}: | |
${{ vars.S3_BUCKET_URL }}/${{steps.S3.outputs.object_key}}/index.html | |
Pull coverage: ${{ steps.coverage.outputs.total_percent }} | |
edit-mode: replace |