name: nightly on: schedule: - cron: '0 0 * * *' # every day at midnight workflow_dispatch: 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 jobs: release: name: build release binaries runs-on: [ubuntu-ghcloud] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # Pin v4.1.1 - name: cargo build uses: actions-rs/cargo@ae10961054e4aa8b4aa7dffede299aaf087aa33b # pin@v1.0.3 with: command: build args: --all-targets --all-features --release --profile=release # This job seems to be consistently producing false-positives, lets disable for now # cargo-udeps: # runs-on: [ubuntu-ghcloud] # steps: # - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # Pin v4.1.1 # # Enable caching of the 'librocksdb-sys' crate by additionally caching the # # 'librocksdb-sys' src directory which is managed by cargo # - uses: bmwill/rust-cache@v1 # Fork of 'Swatinem/rust-cache' which allows caching additional paths # with: # path: ~/.cargo/registry/src/**/librocksdb-sys-* # - name: Install cargo-udeps, and cache the binary # uses: baptiste0928/cargo-install@1cd874a5478fdca35d868ccc74640c5aabbb8f1b # pin@v3.0.0 # with: # crate: cargo-udeps # locked: true # - name: Install cargo-hakari, and cache the binary # uses: baptiste0928/cargo-install@1cd874a5478fdca35d868ccc74640c5aabbb8f1b # pin@v3.0.0 # with: # crate: cargo-hakari # locked: true # # Normally running cargo-udeps requires use of a nightly compiler # # In order to have a more stable and less noisy experience, lets instead # # opt to use the stable toolchain specified via the 'rust-toolchain' file # # and instead enable nightly features via 'RUSTC_BOOTSTRAP' # - name: run cargo-udeps # run: | # # First we need to disable the workspace-hack package # cargo hakari disable # cargo hakari remove-deps -y # RUSTC_BOOTSTRAP=1 cargo udeps report-status: name: Report Status runs-on: ubuntu-latest if: always() needs: [release] steps: - uses: technote-space/workflow-conclusion-action@45ce8e0eb155657ab8ccf346ade734257fd196a5 # Pin v4.1.1 - name: Post to slack uses: slackapi/slack-github-action@v1.24.0 env: SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }} if: env.WORKFLOW_CONCLUSION == 'failure' # notify only if failure with: channel-id: 'build-failures-sui' payload: | { "text": "Workflow *${{ github.workflow }}* failed", "blocks": [ { "type": "section", "text": { "type": "mrkdwn", "text": "Workflow *${{ github.workflow }}* failed" } }, { "type": "divider" }, { "type": "section", "text": { "type": "mrkdwn", "text": "Logs are here: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" } } ] }