Skip to content

Commit

Permalink
ci: update makefile and workflows
Browse files Browse the repository at this point in the history
  • Loading branch information
apollo-sturdy committed Feb 6, 2024
1 parent f9b1d51 commit fd6b0e4
Show file tree
Hide file tree
Showing 6 changed files with 113 additions and 59 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/cc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@ jobs:
uses: actions/checkout@v3

- name: Check all commit messages for adherence
uses: webiny/action-conventional-commits@v1.1.0
uses: bilalshaikh42/action-conventional-commits@v2.0.1
13 changes: 8 additions & 5 deletions .github/workflows/check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,11 @@ jobs:
- name: Checkout sources
uses: actions/checkout@v3

- name: Run cargo check
uses: actions-rs/cargo@v1
with:
command: check
args: --all-features
- name: Install cargo make
uses: davidB/rust-cargo-make@v1

- name: Install stable Rust
run: cargo make install-stable

- name: Check
run: cargo make check
10 changes: 4 additions & 6 deletions .github/workflows/licenses.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,11 @@ jobs:
- name: Checkout sources
uses: actions/checkout@v3

- name: Install cargo make
uses: davidB/rust-cargo-make@v1

- name: Install stable toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: 1.59.0
target: wasm32-unknown-unknown
override: true
run: cargo make install-stable

- name: run cargo deny
uses: EmbarkStudios/cargo-deny-action@v1
Expand Down
33 changes: 8 additions & 25 deletions .github/workflows/lint-format.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,37 +14,20 @@ jobs:
- name: Checkout sources
uses: actions/checkout@v3

- name: Install cargo make
uses: davidB/rust-cargo-make@v1

- name: Install nightly toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: nightly
components: rustfmt, clippy

- name: Install cargo-machete
uses: actions-rs/cargo@v1
with:
command: install
args: cargo-machete
run: cargo make install-nightly

- name: Run cargo clippy
uses: actions-rs/cargo@v1
with:
toolchain: nightly
command: clippy
args: --all-features -- -D warnings
run: cargo make clippy-check

- name: Run cargo fmt
uses: actions-rs/cargo@v1
with:
toolchain: nightly
command: fmt
args: --all -- --check --verbose
run: cargo make format-check

- name: Run cargo machete
uses: actions-rs/cargo@v1
with:
command: machete
run: cargo make machete-check

- name: Lint todo comments
run: ./scripts/todo-lint.sh
run: cargo make todo-check
1 change: 1 addition & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ on:

env:
RUSTFLAGS: -D warnings
TEST_RUNNER: osmosis-test-tube

jobs:
test:
Expand Down
113 changes: 91 additions & 22 deletions Makefile.toml
Original file line number Diff line number Diff line change
@@ -1,42 +1,81 @@
[config]
default_to_workspace = false
skip_core_tasks = true

[env]
# If you bump this version, verify RUST_VERSION correctness
RUST_OPTIMIZER_VERSION = "0.13.0"
# Use rust version from rust-optimizer Dockerfile (see https://github.com/CosmWasm/rust-optimizer/blob/main/Dockerfile#L1)
# to be sure that we compile / test against the same version
RUST_VERSION = "1.69.0"
NIGHTLY_VERSION = "nightly-2023-08-29"

[tasks.install-stable]
script = '''
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain ${RUST_VERSION}
rustup target add wasm32-unknown-unknown --toolchain ${RUST_VERSION}
rustup component add rustfmt --toolchain ${RUST_VERSION}
rustup component add clippy --toolchain ${RUST_VERSION}
rustup component add llvm-tools-preview --toolchain ${RUST_VERSION}
'''

[tasks.install-nightly]
script = '''
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain ${NIGHTLY_VERSION}
rustup target add wasm32-unknown-unknown --toolchain ${NIGHTLY_VERSION}
rustup component add rustfmt --toolchain ${NIGHTLY_VERSION}
rustup component add clippy --toolchain ${NIGHTLY_VERSION}
'''

[tasks.rust-optimizer]
cwd = "${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}"
script = """
if [[ $(arch) == "arm64" ]]; then
image="cosmwasm/workspace-optimizer-arm64:${RUST_OPTIMIZER_VERSION}"
else
image="cosmwasm/workspace-optimizer:${RUST_OPTIMIZER_VERSION}"
fi
docker run --rm -v "$(pwd)":/code \
--mount type=volume,source="$(basename "$(pwd)")_cache",target=/code/target \
--mount type=volume,source=registry_cache,target=/usr/local/cargo/registry \
${image}
"""

[tasks.format]
toolchain = "nightly"
toolchain = "${NIGHTLY_VERSION}"
install_crate = { crate_name = "rustfmt-nightly", rustup_component_name = "rustfmt-preview", binary = "rustfmt", test_arg = "--help" }
command = "cargo"
args = ["fmt", "--all", "--", "--emit=files","--verbose"]
[tasks.format-check]
toolchain = "nightly"
toolchain = "${NIGHTLY_VERSION}"
install_crate = { crate_name = "rustfmt-nightly", rustup_component_name = "rustfmt-preview", binary = "rustfmt", test_arg = "--help" }
command = "cargo"
args = ["fmt", "--all", "--","--verbose", "--check"]

# This task requires the `cargo-udeps` package: https://crates.io/crates/cargo-udeps
[tasks.udeps]
toolchain = "nightly"
command = "cargo"
args = ["udeps"]

[tasks.deny]
command = "cargo"
args = ["deny", "check"]

[tasks.check]
toolchain = "${RUST_VERSION}"
command = "cargo"
args = ["check"]

[tasks.clippy-check]
toolchain = "nightly"
toolchain = "${NIGHTLY_VERSION}"
command = "cargo"
args = ["clippy","--all-features","--","-D","warnings"]
[tasks.clippy-fix]
toolchain = "nightly"
toolchain = "${NIGHTLY_VERSION}"
command = "cargo"
args = ["clippy","--all-features","--fix","--allow-staged","--","-D","warnings"]
args = ["clippy","--all-features", "--fix","--allow-staged", "--allow-dirty", "--","-D","warnings"]

[tasks.todo-check]
script = { file = "${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/scripts/todo-lint.sh", absolute_path = true }

# This task requires the `cargo-tarpaulin` package: https://crates.io/crates/cargo-tarpaulin
[tasks.cov]
toolchain = "${RUST_VERSION}"
command = "cargo"
args = [
"tarpaulin",
Expand All @@ -48,6 +87,7 @@ args = [
]

[tasks.docs]
toolchain = "${RUST_VERSION}"
command = "cargo"
args = [
"doc",
Expand All @@ -66,23 +106,17 @@ args = [

# This task requires the `cargo-machete` package: https://crates.io/crates/cargo-machete
[tasks.machete-check]
toolchain = "${NIGHTLY_VERSION}"
command = "cargo"
args = ["machete"]
[tasks.machete-fix]
command = "cargo"
args = ["machete", "--fix"]

# Run automatically on "cargo make". This is the default task. We keep all the
# default tasks and add our own "custom" task.
[tasks.dev-test-flow]
run_task = "custom-default"

# Custom tasks to run on "cargo make"
[tasks.custom-default]
dependencies = ["deny", "clippy-fix", "docs", "machete-fix"]

# Wasm build of test contract
# Unoptimized Wasm build of contract for testing
[tasks.wasm]
toolchain = "${RUST_VERSION}"
command = "cargo"
args = [
"build",
Expand All @@ -96,9 +130,44 @@ args = [
"astroport-test-contract"
]

[tasks.build]
# Run all tests
[tasks.test]
toolchain = "${RUST_VERSION}"
command = "cargo"
args = ["test", "--locked"]

# Run unit tests
[tasks.unit-test]
toolchain = "${RUST_VERSION}"
command = "cargo"
args = [
"test",
"--lib"
]

# Run integration tests
[tasks.integration-test]
env = { TEST_RUNNER = "osmosis-test-tube" }
cwd = "${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}"
dependencies = ["wasm"]
toolchain = "${RUST_VERSION}"
command = "cargo"
args = [
"test",
"--features",
"osmosis-test-tube",
"--test",
"*",
]

# Run automatically on "cargo make". This is the default task.
[tasks.default]
alias = "custom-default"

# Custom tasks to run on "cargo make"
[tasks.custom-default]
dependencies = ["format", "clippy-fix", "deny", "machete-fix", "unit-test", "integration-test"]

# Docs and Test coverage are not run by default. Can run all with "cargo make all".
[tasks.all]
dependencies = ["dev-test-flow", "custom-default", "cov"]
dependencies = ["custom-default", "cov"]

0 comments on commit fd6b0e4

Please sign in to comment.