-
Notifications
You must be signed in to change notification settings - Fork 35
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #419 from Concordium/template-releases
Added CI job for releasing templates
- Loading branch information
Showing
2 changed files
with
338 additions
and
302 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -133,308 +133,6 @@ jobs: | |
sudo mv /tmp/cargo-concordium /usr/bin/cargo-concordium | ||
cargo concordium test --only-unit-tests -- --features internal-wasm-test | ||
# All templates are generated with the `cargo-generate` command and it is checked that the 'cargo test' command | ||
# can be executed without errors on the generated smart contracts. | ||
cargo-generate-templates: | ||
name: Smart contract template generation | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
crates: | ||
- templates/default | ||
- templates/cis2-nft | ||
env: | ||
PROJECT_NAME: my-project | ||
|
||
steps: | ||
- name: Checkout sources | ||
uses: actions/checkout@v3 | ||
with: | ||
submodules: recursive | ||
|
||
- name: Run cargo-generate | ||
# we use v0.17.5 here because the minimal supported version is 0.17.0 and the closest | ||
# available version of `cargo-generate-action` is 0.17.5 | ||
uses: cargo-generate/[email protected] | ||
with: | ||
name: ${{ env.PROJECT_NAME }} | ||
template: ${{ matrix.crates }} | ||
other: "-d description=myProject -d tokenMetadataBaseURL=https://some.example/token/" | ||
|
||
- name: Install toolchain | ||
uses: actions-rs/toolchain@v1 | ||
with: | ||
toolchain: ${{ env.RUST_VERSION_TESTING_LIBRARY }} | ||
|
||
- name: Install Wasm target | ||
run: rustup target install wasm32-unknown-unknown | ||
|
||
# we need to move the generated project to a temp folder, away from the template project | ||
# otherwise `cargo` runs would fail | ||
# see https://github.com/rust-lang/cargo/issues/9922 | ||
# Run all tests, including doc tests. | ||
- name: Run cargo test | ||
run: | | ||
curl -L https://github.com/Concordium/concordium-smart-contract-tools/releases/download/releases/cargo-concordium/${CARGO_CONCORDIUM_VERSION}/cargo-concordium-linux-amd64 -o /tmp/cargo-concordium | ||
chmod +x /tmp/cargo-concordium | ||
sudo mv /tmp/cargo-concordium /usr/bin/cargo-concordium | ||
mv $PROJECT_NAME ${{ runner.temp }}/ | ||
cd ${{ runner.temp }}/$PROJECT_NAME | ||
cargo concordium test --out "./concordium-out/module.wasm.v1" | ||
# The credential registry template is used to generate code for all combinations of parameters | ||
# with the `cargo-generate` and it is checked that the 'cargo test' command can be executed | ||
# without errors on the generated smart contracts. | ||
cargo-generate-credential-registry-template: | ||
name: Credential registry template tests | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
restorable: ["true", "false"] | ||
revocable_by_others: ["true", "false"] | ||
env: | ||
PROJECT_NAME: my-project | ||
|
||
steps: | ||
- name: Checkout sources | ||
uses: actions/checkout@v3 | ||
with: | ||
submodules: recursive | ||
|
||
- name: Run cargo-generate | ||
# we use v0.17.5 here because the minimal supported version is 0.17.0 and the closest | ||
# available version of `cargo-generate-action` is 0.17.5 | ||
uses: cargo-generate/[email protected] | ||
with: | ||
name: ${{ env.PROJECT_NAME }} | ||
template: templates/credential-registry | ||
other: "-d description=myProject -d template_type=custom -d restorable=${{ matrix.restorable }} -d revocable_by_others=${{ matrix.revocable_by_others }}" | ||
|
||
- name: Install toolchain | ||
uses: actions-rs/toolchain@v1 | ||
with: | ||
toolchain: ${{ env.RUST_VERSION_TESTING_LIBRARY }} | ||
|
||
- name: Install Wasm target | ||
run: rustup target install wasm32-unknown-unknown | ||
|
||
# we need to move the generated project to a temp folder, away from the template project | ||
# otherwise `cargo` runs would fail | ||
# see https://github.com/rust-lang/cargo/issues/9922 | ||
# Run all tests, including doc tests. | ||
- name: Run cargo test | ||
run: | | ||
curl -L https://github.com/Concordium/concordium-smart-contract-tools/releases/download/releases/cargo-concordium/${CARGO_CONCORDIUM_VERSION}/cargo-concordium-linux-amd64 -o /tmp/cargo-concordium | ||
chmod +x /tmp/cargo-concordium | ||
sudo mv /tmp/cargo-concordium /usr/bin/cargo-concordium | ||
mv $PROJECT_NAME ${{ runner.temp }}/ | ||
cd ${{ runner.temp }}/$PROJECT_NAME | ||
cargo concordium test --out "./concordium-out/module.wasm.v1" | ||
# All templates are generated with the `cargo-generate` command | ||
# and it is checked that the schemas can be built as part of the 'clippy' command. | ||
clippy-template: | ||
name: Clippy on smart contract templates | ||
runs-on: ubuntu-latest | ||
needs: rustfmt | ||
strategy: | ||
matrix: | ||
target: | ||
- wasm32-unknown-unknown | ||
|
||
crates: | ||
- templates/default | ||
- templates/cis2-nft | ||
- templates/credential-registry | ||
|
||
env: | ||
PROJECT_NAME: my-project | ||
|
||
steps: | ||
- name: Checkout sources | ||
uses: actions/checkout@v3 | ||
with: | ||
submodules: recursive | ||
|
||
- name: Run cargo-generate | ||
# we use v0.17.5 here because the minimal supported version is 0.17.0 and the closest | ||
# available version of `cargo-generate-action` is 0.17.5 | ||
uses: cargo-generate/[email protected] | ||
with: | ||
name: ${{ env.PROJECT_NAME }} | ||
template: ${{ matrix.crates }} | ||
other: "-d description=myProject -d tokenMetadataBaseURL=https://some.example/token/ -d template_type=full" | ||
|
||
- name: Install toolchain with clippy available | ||
uses: actions-rs/toolchain@v1 | ||
with: | ||
profile: minimal | ||
toolchain: ${{ env.RUST_VERSION }} | ||
target: ${{ matrix.target }} | ||
override: true | ||
components: clippy | ||
|
||
# we need to move the generated project to a temp folder, away from the template project | ||
# otherwise `cargo` runs would fail | ||
# see https://github.com/rust-lang/cargo/issues/9922 | ||
- name: Run clippy with build-schema | ||
run: | | ||
mv $PROJECT_NAME ${{ runner.temp }}/ | ||
cd ${{ runner.temp }}/$PROJECT_NAME | ||
rustup target add wasm32-unknown-unknown | ||
cargo clippy --manifest-path ./Cargo.toml --target=${{ matrix.target }} --features concordium-std/build-schema -- -D warnings | ||
# The credential registry template is used to generate code for all combinations of parameters | ||
# with the `cargo-generate` command and it is checked that the schemas can be built as part | ||
# of the 'clippy' command. | ||
clippy-credential-registry-template: | ||
name: Clippy on credential registry template | ||
runs-on: ubuntu-latest | ||
needs: rustfmt | ||
strategy: | ||
matrix: | ||
target: | ||
- wasm32-unknown-unknown | ||
|
||
restorable: ["true", "false"] | ||
revocable_by_others: ["true", "false"] | ||
|
||
env: | ||
PROJECT_NAME: my-project | ||
|
||
steps: | ||
- name: Checkout sources | ||
uses: actions/checkout@v3 | ||
with: | ||
submodules: recursive | ||
|
||
- name: Run cargo-generate | ||
# we use v0.17.5 here because the minimal supported version is 0.17.0 and the closest | ||
# available version of `cargo-generate-action` is 0.17.5 | ||
uses: cargo-generate/[email protected] | ||
with: | ||
name: ${{ env.PROJECT_NAME }} | ||
template: templates/credential-registry | ||
other: "-d description=myProject -d template_type=custom -d restorable=${{ matrix.restorable }} -d revocable_by_others=${{ matrix.revocable_by_others }}" | ||
|
||
- name: Install toolchain with clippy available | ||
uses: actions-rs/toolchain@v1 | ||
with: | ||
profile: minimal | ||
toolchain: ${{ env.RUST_VERSION }} | ||
target: ${{ matrix.target }} | ||
override: true | ||
components: clippy | ||
|
||
# we need to move the generated project to a temp folder, away from the template project | ||
# otherwise `cargo` runs would fail | ||
# see https://github.com/rust-lang/cargo/issues/9922 | ||
- name: Run clippy with build-schema | ||
run: | | ||
mv $PROJECT_NAME ${{ runner.temp }}/ | ||
cd ${{ runner.temp }}/$PROJECT_NAME | ||
rustup target add wasm32-unknown-unknown | ||
cargo clippy --manifest-path ./Cargo.toml --target=${{ matrix.target }} --features concordium-std/build-schema -- -D warnings | ||
# The cis2-nft template is generated with the `cargo-generate` command | ||
# and it is checked that the code is equivalent to the cis2-nft smart contract in the example folder. | ||
cargo-generate-cis2-nft-template-comparison: | ||
name: Cis2-nft smart contract template comparison | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
crates: | ||
- templates/cis2-nft | ||
env: | ||
PROJECT_NAME: cis2-nft | ||
|
||
steps: | ||
- name: Checkout sources | ||
uses: actions/checkout@v3 | ||
with: | ||
submodules: recursive | ||
|
||
- name: Run cargo-generate | ||
# we use v0.17.5 here because the minimal supported version is 0.17.0 and the closest | ||
# available version of `cargo-generate-action` is 0.17.5 | ||
uses: cargo-generate/[email protected] | ||
with: | ||
name: ${{ env.PROJECT_NAME }} | ||
template: ${{ matrix.crates }} | ||
other: "-d description=cis2-nft-project -d tokenMetadataBaseURL=https://some.example/token/" | ||
|
||
- name: Install toolchain | ||
uses: actions-rs/toolchain@v1 | ||
with: | ||
toolchain: ${{ env.RUST_VERSION }} | ||
|
||
# Run diff to check if there are any differences between the generated smart contracts | ||
# and the example smart contracts. The templates have hardcoded versions of `concordium-std` | ||
# and `concordium-cis2` which need to be replaced with the paths used in the smart contract example folder. | ||
# This CI pipeline uses `root` as the author which needs to be replaced with the author | ||
# `Concordium <[email protected]>` of the smart contract examples. | ||
- name: Run diff | ||
run: | | ||
mv $PROJECT_NAME ${{ runner.temp }}/ | ||
sed -i "s/root/Concordium <[email protected]>/g" ${{ runner.temp }}/$PROJECT_NAME/Cargo.toml | ||
sed -i "s/{version = \"10.0\", default-features = false}/{path = \"..\/..\/concordium-std\", default-features = false}/g" ${{ runner.temp }}/$PROJECT_NAME/Cargo.toml | ||
sed -i "s/{version = \"6.1\", default-features = false}/{path = \"..\/..\/concordium-cis2\", default-features = false}/g" ${{ runner.temp }}/$PROJECT_NAME/Cargo.toml | ||
sed -i "s/concordium-smart-contract-testing = \"4.2\"/concordium-smart-contract-testing = {path = \"..\/..\/contract-testing\"}/g" ${{ runner.temp }}/$PROJECT_NAME/Cargo.toml | ||
sed -i "s/concordium-std-derive = \"6.0\"/concordium-std-derive = {path = \"..\/..\/concordium-std-derive\"}/g" ${{ runner.temp }}/$PROJECT_NAME/Cargo.toml | ||
diff ${{ runner.temp }}/$PROJECT_NAME/Cargo.toml examples/cis2-nft/Cargo.toml | ||
diff ${{ runner.temp }}/$PROJECT_NAME/src/lib.rs examples/cis2-nft/src/lib.rs | ||
diff ${{ runner.temp }}/$PROJECT_NAME/tests/tests.rs examples/cis2-nft/tests/tests.rs | ||
# The credential-registry template is generated with the `cargo-generate` command | ||
# and it is checked that the code is equivalent to the credential-registry smart contract in the example folder. | ||
cargo-generate-credential-registry-template-comparison: | ||
name: Credential registry smart contract template comparison | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
crates: | ||
- templates/credential-registry | ||
env: | ||
PROJECT_NAME: credential-registry | ||
|
||
steps: | ||
- name: Checkout sources | ||
uses: actions/checkout@v3 | ||
with: | ||
submodules: recursive | ||
|
||
- name: Run cargo-generate | ||
# at least version 0.17.0 is required for the rhai pre-script to work correctly; | ||
# the closest available version of `cargo-generate-action` is 0.17.5 | ||
uses: cargo-generate/[email protected] | ||
with: | ||
name: ${{ env.PROJECT_NAME }} | ||
template: ${{ matrix.crates }} | ||
other: "-d description=Example-credential-registry -d template_type=full" | ||
|
||
- name: Install toolchain | ||
uses: actions-rs/toolchain@v1 | ||
with: | ||
toolchain: ${{ env.RUST_VERSION }} | ||
|
||
# Run diff to check if there are any differences between the generated smart contract | ||
# and the example smart contract. The template have hardcoded versions of `concordium-std` | ||
# which needs to be replaced with the path used in the smart contract example folder. | ||
# This CI pipeline uses `root` as the author which needs to be replaced with the author | ||
# `Concordium <[email protected]>` of the smart contract examples. | ||
- name: Run diff | ||
run: | | ||
mv $PROJECT_NAME ${{ runner.temp }}/ | ||
sed -i "s/root/Concordium <[email protected]>/g" ${{ runner.temp }}/$PROJECT_NAME/Cargo.toml | ||
sed -i "s/version = \"10.0\", default-features = false/path = \"..\/..\/concordium-std\", version = \"10.0\", default-features = false/g" ${{ runner.temp }}/$PROJECT_NAME/Cargo.toml | ||
sed -i "s/version = \"6.1\", default-features = false/path = \"..\/..\/concordium-cis2\", version = \"6.1\", default-features = false/g" ${{ runner.temp }}/$PROJECT_NAME/Cargo.toml | ||
sed -i "s/concordium-smart-contract-testing = \"4.2\"/concordium-smart-contract-testing = {path = \"..\/..\/contract-testing\"}/g" ${{ runner.temp }}/$PROJECT_NAME/Cargo.toml | ||
sed -i "s/concordium-std-derive = \"6.0\"/concordium-std-derive = {path = \"..\/..\/concordium-std-derive\"}/g" ${{ runner.temp }}/$PROJECT_NAME/Cargo.toml | ||
diff ${{ runner.temp }}/$PROJECT_NAME/Cargo.toml examples/credential-registry/Cargo.toml | ||
diff ${{ runner.temp }}/$PROJECT_NAME/src/lib.rs examples/credential-registry/src/lib.rs | ||
diff ${{ runner.temp }}/$PROJECT_NAME/tests/tests.rs examples/credential-registry/tests/tests.rs | ||
diff ${{ runner.temp }}/$PROJECT_NAME/README.md examples/credential-registry/README.md | ||
clippy-cis2: | ||
name: Clippy | ||
runs-on: ubuntu-latest | ||
|
Oops, something went wrong.