Skip to content

Commit

Permalink
ci: use cosmwasm/optimizer to build and include 'Cargo.lock' (#27)
Browse files Browse the repository at this point in the history
* imp: updated '.gitignore'

* imp: using optimizer image to build

* ci: simplified ci
  • Loading branch information
srdtrk authored Apr 22, 2024
1 parent dac50db commit 36ed788
Show file tree
Hide file tree
Showing 6 changed files with 1,742 additions and 121 deletions.
4 changes: 4 additions & 0 deletions .cargo/config
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[alias]
wasm = "build --release --lib --target wasm32-unknown-unknown"
unit-test = "test --lib"
schema = "run --bin schema"
171 changes: 67 additions & 104 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
@@ -1,131 +1,94 @@
name: Rust
# Based on https://github.com/actions-rs/example/blob/master/.github/workflows/quickstart.yml
name: rust

on:
pull_request:
paths:
- .github/workflows/rust.yml
- Cargo.toml
- Cargo.lock
- clients/**
- modules/**
- mocks/**
push:
branches: main
paths:
- .github/workflows/rust.yml
- Cargo.toml
- Cargo.lock
- clients/**
- modules/**
- mocks/**

env:
CARGO_INCREMENTAL: 0
CARGO_PROFILE_DEV_DEBUG: 1
CARGO_PROFILE_RELEASE_DEBUG: 1
RUST_BACKTRACE: short
CARGO_NET_RETRY: 10
RUSTUP_MAX_RETRIES: 10
branches: [main]
pull_request:
paths-ignore:
- '**/*.md'
- '**/*.go'

jobs:
cleanup-runs:
unit-test:
name: Unit Tests
runs-on: ubuntu-latest
steps:
- uses: rokroskar/workflow-run-cleanup-action@master
env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
if: ${{ !startsWith(github.ref, 'refs/tags/') && github.ref != 'refs/heads/main' }}
- name: Checkout sources
uses: actions/checkout@v4

fmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions-rs/toolchain@v1
- name: Install stable toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: nightly # Since fmt uses unstable features for organizing imports
components: rustfmt
profile: minimal
toolchain: 1.77.2
target: wasm32-unknown-unknown
override: true
- uses: Swatinem/rust-cache@v2
- uses: actions-rs/cargo@v1
with:
command: fmt
args: --all -- --check

doc_all_features:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Git credentials
run:
git config --global --replace-all "url.https://${{ secrets.AUTH_TOKEN }}@github.com.insteadOf" ssh://[email protected]
- uses: arduino/setup-protoc@v2
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
- uses: Swatinem/rust-cache@v2
- uses: actions-rs/cargo@v1
- name: Run unit tests
uses: actions-rs/cargo@v1
with:
command: doc
args: --all-features --no-deps --release
command: unit-test
args: --locked
env:
RUST_BACKTRACE: 1

clippy_all_features:
build-wasm:
name: Build Wasm
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Git credentials
run:
git config --global --replace-all "url.https://${{ secrets.AUTH_TOKEN }}@github.com.insteadOf" ssh://[email protected]
- uses: arduino/setup-protoc@v2
- uses: actions-rs/toolchain@v1
- name: Checkout sources
uses: actions/checkout@v4

- name: Install stable toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
components: clippy
profile: minimal
toolchain: 1.77.2
target: wasm32-unknown-unknown
override: true
- uses: Swatinem/rust-cache@v2
- uses: actions-rs/clippy-check@v1

- name: Compile WASM contract
uses: actions-rs/cargo@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
args: --all-features --all-targets
command: wasm
args: --locked
env:
RUSTFLAGS: "-C link-arg=-s"

clippy_no_default_features:
lints:
name: Lint Contract
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Git credentials
run:
git config --global --replace-all "url.https://${{ secrets.AUTH_TOKEN }}@github.com.insteadOf" ssh://[email protected]
- uses: arduino/setup-protoc@v2
- uses: actions-rs/toolchain@v1
- name: Checkout sources
uses: actions/checkout@v4

- name: Install stable toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
components: clippy
profile: minimal
toolchain: 1.77.2
override: true
- uses: Swatinem/rust-cache@v2
- uses: actions-rs/clippy-check@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
args: --no-default-features
components: rustfmt, clippy

test-stable:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- name: Set up Git credentials
run:
git config --global --replace-all "url.https://${{ secrets.AUTH_TOKEN }}@github.com.insteadOf" ssh://[email protected]
- uses: arduino/setup-protoc@v2
- uses: actions-rs/toolchain@v1
- name: Run cargo fmt
uses: actions-rs/cargo@v1
with:
toolchain: stable
override: true
- uses: Swatinem/rust-cache@v2
- uses: actions-rs/cargo@v1
command: fmt
args: --all -- --check

- name: Run cargo clippy
uses: actions-rs/cargo@v1
with:
command: test
args: --all-features --no-fail-fast --no-run
- uses: actions-rs/cargo@v1
command: clippy
args: -- -D warnings

- name: Generate Schema
uses: actions-rs/cargo@v1
with:
command: test
args: --all-features --no-fail-fast --workspace -- --nocapture
command: schema
args: --locked

- name: Schema Changes
# fails if any changes not committed
run: git diff --exit-code schema
7 changes: 2 additions & 5 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,7 @@
debug/
target/
schema/

# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries
# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
Cargo.lock
artifacts/

# These are backup files generated by rustfmt
**/*.rs.bk
Expand All @@ -21,4 +18,4 @@ Cargo.lock
*.iml
.idea
.editorconfig
.vscode
.vscode
Loading

0 comments on commit 36ed788

Please sign in to comment.