name: ci on: push: branches: [main] pull_request: permissions: contents: read jobs: js: runs-on: ubuntu-24.04 timeout-minutes: 5 steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0 with: node-version: "22" - name: Tests run: npm test contract: runs-on: ubuntu-24.04 timeout-minutes: 30 env: CARGO_NEAR_VERSION: "0.22.0" steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: | ~/.cargo/registry ~/.cargo/git target key: cargo-${{ runner.os }}-${{ hashFiles('Cargo.lock', '**/Cargo.toml') }} restore-keys: cargo-${{ runner.os }}- - name: Toolchain run: | channel=$(sed -n 's/^channel = "\(.*\)"$/\1/p' rust-toolchain.toml) rustup toolchain install "$channel" --profile minimal --target wasm32-unknown-unknown -c rustfmt rustup default "$channel" - name: cargo-near (checksum verified release) run: | base="https://github.com/near/cargo-near/releases/download/cargo-near-v${CARGO_NEAR_VERSION}" file="cargo-near-x86_64-unknown-linux-gnu.tar.gz" curl -fsSLO "$base/$file" curl -fsSLO "$base/$file.sha256" sha256sum -c "$file.sha256" tar xzf "$file" --strip-components=1 -C ~/.cargo/bin --wildcards '*/cargo-near' - name: Unit tests run: cargo test -p duly-contract --locked - name: Build contract run: cd contract && cargo near build non-reproducible-wasm --locked - name: Build test token run: cd mock-usdc && cargo near build non-reproducible-wasm --locked - name: Sizes and hashes run: | ls -l target/near/*/*.wasm sha256sum target/near/*/*.wasm | tee wasm.sha256 - uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2 with: name: wasm path: | target/near/duly_contract/duly_contract.wasm target/near/duly_mock_usdc/duly_mock_usdc.wasm wasm.sha256 retention-days: 30