feat: Update to provwasm v2; improve developer experience #258
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: Build and Release | |
on: | |
push: | |
branches: [ main ] | |
pull_request: | |
branches: [ main ] | |
env: | |
CARGO_TERM_COLOR: always | |
jobs: | |
check: | |
name: Check Project Integrity | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
default: true | |
components: clippy, rustfmt | |
- name: Cargo Format | |
uses: actions-rs/cargo@v1 | |
with: | |
command: fmt | |
args: --all -- --check | |
- name: Cargo Clippy | |
uses: actions-rs/cargo@v1 | |
with: | |
command: clippy | |
- name: Cargo Tarpaulin XML Report | |
uses: actions-rs/[email protected] | |
with: | |
version: '0.19.1' | |
out-type: Xml | |
args: '--ignore-config --ignore-tests' | |
- name: Archive Code Coverage Results | |
uses: actions/upload-artifact@v4 | |
with: | |
name: code-coverage-report | |
path: cobertura.xml | |
release: | |
name: Release Project Files | |
needs: check | |
runs-on: ubuntu-latest | |
if: ${{ github.ref == 'refs/heads/main' }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Get Release Version | |
run: | | |
APP_VERSION=$(cargo metadata | jq -r '.packages[] | select(.name == "asset-classification-smart-contract") | .version') | |
echo "Using application version v$APP_VERSION for release" | |
echo "RELEASE_VERSION=v$APP_VERSION" >> $GITHUB_ENV | |
- name: Check Release is New Version | |
run: | | |
TAG_EXISTS=$((git show-ref --tags "$RELEASE_VERSION") || echo "") | |
if [ $TAG_EXISTS ]; then | |
echo "Found existing Github tag [$RELEASE_VERSION]. Skipping release."; | |
else | |
echo "Tag [$RELEASE_VERSION] has not yet been used. Continuing with release"; | |
fi | |
echo "TAG_EXISTS=$TAG_EXISTS" >> $GITHUB_ENV | |
- name: Generate Rust Docs | |
if: ${{ !env.TAG_EXISTS }} | |
uses: actions-rs/cargo@v1 | |
with: | |
command: doc | |
args: --no-deps | |
- name: Stage Cargo Docs | |
if: ${{ !env.TAG_EXISTS }} | |
run: | | |
# Add redirect page to inner doc index | |
echo "<meta http-equiv=\"refresh\" content=\"0; url=asset_classification_smart_contract\">" >> ./target/doc/index.html | |
# Create doc deployment location | |
mkdir ./pages-files | |
# Move documentation to its configured location in settings | |
cp -r target/doc ./pages-files/docs | |
- name: Deploy Docs to GitHub Pages | |
if: ${{ !env.TAG_EXISTS }} | |
uses: JamesIves/[email protected] | |
with: | |
branch: gh-pages | |
folder: pages-files | |
- name: Build and Optimize WASM | |
# No need to create the release WASM if the version hasn't changed and no new release will be made | |
if: ${{ !env.TAG_EXISTS }} | |
run: | | |
# Build the WASM output in the artifacts directory | |
make optimize | |
- name: Release WASM | |
uses: softprops/action-gh-release@v1 | |
# Only upload a new release if the attempted tag does not yet exist | |
if: ${{ !env.TAG_EXISTS }} | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
name: ${{ env.RELEASE_VERSION }} | |
tag_name: ${{ env.RELEASE_VERSION }} | |
files: | | |
artifacts/asset_classification_smart_contract.wasm | |
artifacts/checksums.txt |