name: External crates on: push: branches: [main, extensions, devnet] pull_request: types: [opened, synchronize, reopened, ready_for_review] concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} env: CARGO_TERM_COLOR: always # Disable incremental compilation. # # Incremental compilation is useful as part of an edit-build-test-edit cycle, # as it lets the compiler avoid recompiling code that hasn't changed. However, # on CI, we're not making small edits; we're almost always building the entire # project from scratch. Thus, incremental compilation on CI actually # introduces *additional* overhead to support making future builds # faster...but no future builds will ever occur in any given CI environment. # # See https://matklad.github.io/2021/09/04/fast-rust-builds.html#ci-workflow # for details. CARGO_INCREMENTAL: 0 # Allow more retries for network requests in cargo (downloading crates) and # rustup (installing toolchains). This should help to reduce flaky CI failures # from transient network timeouts or other issues. CARGO_NET_RETRY: 10 RUSTUP_MAX_RETRIES: 10 # Don't emit giant backtraces in the CI logs. RUST_BACKTRACE: short # RUSTFLAGS: -D warnings RUSTDOCFLAGS: -D warnings jobs: diff: runs-on: [ubuntu-latest] outputs: isRust: ${{ steps.diff.outputs.isRust }} isMove: ${{ steps.diff.outputs.isMove }} steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # Pin v4.1.1 - name: Detect Changes uses: "./.github/actions/diffs" id: diff external-crates-test: needs: diff if: needs.diff.outputs.isRust == 'true' timeout-minutes: 45 env: # Tests written with #[sim_test] are often flaky if run as #[tokio::test] - this var # causes #[sim_test] to only run under the deterministic `simtest` job, and not the # non-deterministic `test` job. SUI_SKIP_SIMTESTS: 1 runs-on: ${{ matrix.os }} strategy: matrix: os: - [ubuntu-ghcloud] fail-fast: false steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # Pin v4.1.1 - uses: taiki-e/install-action@nextest - name: Set Swap Space uses: pierotofy/set-swap-space@master with: swap-size-gb: 256 - name: Install python dependencies run: | pip install pyopenssl --upgrade - name: External crates tests run: | cargo xtest # This is a no-op job that allows the resulting action names to line up when # there are no rust changes in a given PR/commit. This ensures that we can # continue to block on the rust tests passing in the case of rust changes and # otherwise not block pushes to main. external-crates-test-notrust: name: external-crates-test needs: diff if: needs.diff.outputs.isRust == 'false' runs-on: ${{ matrix.os }} strategy: matrix: os: - [ubuntu-ghcloud] - [windows-ghcloud] fail-fast: false steps: - run: 'echo "No build required" ' clippy: needs: diff if: needs.diff.outputs.isRust == 'true' runs-on: [ubuntu-ghcloud] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # Pin v4.1.1 - run: rustup component add clippy # See '.cargo/config' for list of enabled/disappled clippy lints - name: cargo move-clippy run: | cd external-crates/move cargo move-clippy -D warnings rustfmt: needs: diff if: needs.diff.outputs.isRust == 'true' runs-on: [ubuntu-latest] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # Pin v4.1.1 - run: rustup component add rustfmt - name: rustfmt uses: actions-rs/cargo@ae10961054e4aa8b4aa7dffede299aaf087aa33b # pin@v1.0.3 with: command: fmt args: --check cargo-deny: name: cargo-deny (advisories, licenses, bans, ...) needs: diff if: needs.diff.outputs.isRust == 'true' runs-on: [ubuntu-latest] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # Pin v4.1.1 - uses: mystenlabs/cargo-deny-action@main