From 739b945f23cc48e4272ecaf0a3bb772b452bc344 Mon Sep 17 00:00:00 2001 From: Sergejs Kostjucenko Date: Sat, 14 Oct 2023 00:49:33 +0200 Subject: [PATCH] optimize ci --- .github/workflows/ci.yml | 110 ++++++++++++++++++++------------------- 1 file changed, 56 insertions(+), 54 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6969efda..960f1554 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,11 +7,18 @@ on: tags: - v* paths-ignore: - - 'README.md' - - '.gitlab-ci.yml' + - '**.gitignore' + - '.images/**' + - '**README.md' + pull_request: branches: - main + paths-ignore: + - '**.gitignore' + - '.images/**' + - '**README.md' + jobs: check: @@ -19,22 +26,45 @@ jobs: strategy: matrix: platform: - - ubuntu_20_64_core + - ubuntu-latest - macos-latest toolchain: - stable - job: - - contract build - - test + contract: + - basic-contract-caller + - call-runtime + - conditional-compilation + - contract-terminate + - custom-allocator + - custom-environment + - dns + - e2e-call-runtime + - erc20 + - erc721 + - erc1155 + - flipper + - incrementer + - multi-contract-caller + - multi-contract-caller/accumulator + - multi-contract-caller/adder + - multi-contract-caller/subber + - multisig + - payment-channel + - psp22-extension + - rand-extension + - trait-dyn-cross-contract-calls + - trait-erc20 + - trait-flipper + - trait-incrementer + - upgradeable-contracts/delegator + - upgradeable-contracts/set-code-hash + - vesting runs-on: ${{ matrix.platform }} env: - MULTI_CONTRACT_CALLER_SUBCONTRACTS: "accumulator adder subber" - UPGRADEABLE_CONTRACTS: "delegator set-code-hash" RUST_BACKTRACE: full steps: - - name: Checkout sources & submodules - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 1 submodules: recursive @@ -49,22 +79,27 @@ jobs: override: true - name: Rust Cache - uses: Swatinem/rust-cache@v2.2.0 + uses: Swatinem/rust-cache@v2.7.0 + with: + cache-on-failure: true + workspaces: ${{ matrix.contract }} + key: ${{ matrix.contract }} - name: Install `cargo-contract` `main` - uses: actions-rs/cargo@v1 + uses: baptiste0928/cargo-install@21a18ba3bf4a184d1804e8b759930d3471b1c941 # v2.2.0 with: - command: install - args: --git https://github.com/paritytech/cargo-contract.git + crate: cargo-contract + git: https://github.com/paritytech/cargo-contract.git + cache-key: ${{ matrix.platform }} - name: Install cargo-dylint - uses: baptiste0928/cargo-install@bf6758885262d0e6f61089a9d8c8790d3ac3368f # v1.3.0 + uses: baptiste0928/cargo-install@21a18ba3bf4a184d1804e8b759930d3471b1c941 # v2.2.0 with: crate: cargo-dylint version: 1 - name: Install dylint-link - uses: baptiste0928/cargo-install@bf6758885262d0e6f61089a9d8c8790d3ac3368f # v1.3.0 + uses: baptiste0928/cargo-install@21a18ba3bf4a184d1804e8b759930d3471b1c941 # v2.2.0 with: crate: dylint-link version: 1 @@ -96,43 +131,10 @@ jobs: cargo -vV cargo contract --version - - name: ${{ matrix.job }} examples on ${{ matrix.platform }}-${{ matrix.toolchain }} - if: runner.os == 'Windows' - run: | - $multi_contract_caller_subcontracts = "accumulator","adder","subber" - foreach ($contract in $multi_contract_caller_subcontracts) { - echo "Processing multi-contract-caller contract: $contract"; - cargo ${{ matrix.job }} --verbose --manifest-path multi-contract-caller/${contract}/Cargo.toml; - } - - $upgradeable_contracts = "delegator","set-code-hash" - foreach ($contract in $upgradeable_contracts) { - echo "Processing upgradeable contract: $contract"; - cargo ${{ matrix.job }} --verbose --manifest-path upgradeable-contracts/${contract}/Cargo.toml; - } - - foreach ($example in Get-ChildItem -Directory "\*") { - if ($example -Match 'artifacts') { continue } - echo "Processing example: $example"; - cargo ${{ matrix.job }} --verbose --manifest-path=$example/Cargo.toml; - cargo clean --manifest-path=$example/Cargo.toml; - } - - - name: ${{ matrix.job }} examples on ${{ matrix.platform }}-${{ matrix.toolchain }} + - name: Build ${{ matrix.contract }} on ${{ matrix.platform }}-${{ matrix.toolchain }} if: runner.os != 'Windows' - run: | - for contract in ${MULTI_CONTRACT_CALLER_SUBCONTRACTS}; do - echo "Processing multi-contract-caller contract: $contract"; - cargo ${{ matrix.job }} --verbose --manifest-path multi-contract-caller/${contract}/Cargo.toml; - done - - for contract in ${UPGRADEABLE_CONTRACTS}; do - echo "Processing upgradeable contract: $contract"; - cargo ${{ matrix.job }} --verbose --manifest-path=upgradeable-contracts/$contract/Cargo.toml; - done + run: cargo contract build --verbose --manifest-path=${{ matrix.contract }}/Cargo.toml; - for example in ./*/; do - if [ "$example" = "./artifacts/" ] || [ "$example" = "./upgradeable-contracts/" ]; then continue; fi; - echo "Processing example: $example"; - cargo ${{ matrix.job }} --verbose --manifest-path=$example/Cargo.toml; - done + - name: Test ${{ matrix.contract }} on ${{ matrix.platform }}-${{ matrix.toolchain }} + if: runner.os != 'Windows' + run: cargo test --verbose --manifest-path=${{ matrix.contract }}/Cargo.toml; \ No newline at end of file