name : rust_push on : workflow_call : inputs : manifest_path : required : true type : string module_name : required : true type : string commit_message : required : true type : string with_smoke : required : false type : string default : true commiter_username: type: string default: true required: false concurrency : group : standard_rust_push_${{ inputs.module_name }}_${{ github.ref }}_ ${{ contains( inputs.commit_message, '+test' ) || inputs.commiter_username == 'web-flow' || startsWith( inputs.commit_message, 'merge' ) }} cancel-in-progress : ${{ contains( inputs.commit_message, '+test' ) || inputs.commiter_username == 'web-flow' }} env : RUST_BACKTRACE : 1 CARGO_TERM_COLOR : always WITH_SMOKE : ${{ inputs.with_smoke }} jobs : checkmate: if : contains( inputs.commit_message, '+test' ) || inputs.commiter_username == 'web-flow' || startsWith( inputs.commit_message, 'merge' ) runs-on: ubuntu-latest steps: - name: Install latest nightly toolchain uses: Wandalen/wretry.action/main@master with: action: actions-rs/toolchain@v1 with: | toolchain : nightly override : true components : clippy attempt_limit: 3 attempt_delay: 10000 - uses: actions/checkout@v3 - name: Install cargo-audit run: cargo install cargo-audit - name: Install cargo-udeps run: cargo install cargo-udeps --locked - name: Set MANIFEST_ROOT_PATH id: rootpath run: echo "::set-output name=path::$(dirname ${{ inputs.manifest_path }})" - name: Build module run: cd ${{ steps.rootpath.outputs.path }} && cargo build && cd - - name: Audit the modules id: audit run: make audit continue-on-error: true - name: Generate documentation for the modules id: documentation run: make doc open=no manifest_path=${{ inputs.manifest_path }} continue-on-error: true - name: Lint the modules id: lint run: make lint manifest_path=${{ inputs.manifest_path }} warnings=no continue-on-error: true - name: Check the modules id: check run: make check manifest_path=${{ inputs.manifest_path }} continue-on-error: true - name: Check the modules dependencies id: udeps run: cargo +nightly udeps --all-targets --manifest-path ${{ inputs.manifest_path }} continue-on-error: true # Added IDs for each step in the test job: This allows referencing the result of each step later. # # "Check for errors" step: Now checks the outcome status for each step. # If any of them have a value of 'failure', this step will fail the job by returning exit 1. - name: Check for errors if: steps.audit.outcome != 'success' || steps.documentation.outcome != 'success' || steps.lint.outcome != 'success' || steps.check.outcome != 'success' || steps.udeps.outcome != 'success' run: exit 1 # release: # if: contains( inputs.commit_message, '+test' ) || contains( inputs.commit_message, 'merge' ) # strategy: # fail-fast: false # matrix: # os: [ ubuntu-latest, windows-latest, macos-latest ] # runs-on: ${{ matrix.os }} # steps: # - name: Install latest stable toolchain # uses: Wandalen/wretry.action@master # with: # action: actions-rs/toolchain@v1 # with: | # toolchain : stable # override : true # attempt_limit: 3 # attempt_delay: 10000 # - uses: actions/checkout@v3 # with: # ref: alpha # # - name: Make release build # run: cargo build --manifest-path ${{ inputs.manifest_path }} --release # miri: # if: contains( inputs.commit_message, '+test' ) || contains( inputs.commit_message, 'merge' ) # runs-on: ubuntu-latest # steps: # - name: Install latest nightly toolchain # uses: Wandalen/wretry.action@master # with: # action: actions-rs/toolchain@v1 # with: | # toolchain : nightly # override : true # components : miri # attempt_limit: 3 # attempt_delay: 10000 # - uses: actions/checkout@v3 # with: # ref: alpha # - name: Test with miri # run: cargo miri test --manifest-path ${{ inputs.manifest_path }} will_test : # This section ensures that `job` `will_test` will only be executed after `checkmate` and if `checkmate` fails, no tests will be run. needs : - checkmate if : contains( inputs.commit_message, '+test' ) || inputs.commiter_username == 'web-flow' || startsWith( inputs.commit_message, 'merge' ) concurrency : group : standard_rust_push_${{ inputs.module_name }}_${{ github.ref }}_${{ matrix.os }} cancel-in-progress : true strategy : fail-fast : false matrix : os : [ ubuntu-latest, windows-latest, macos-latest ] runs-on : ${{ matrix.os }} steps : - name : Install latest stable toolchain uses : Wandalen/wretry.action/main@master with : action : actions-rs/toolchain@v1 with : | toolchain : stable override : true attempt_limit : 3 attempt_delay: 10000 - name: Install latest nightly toolchain uses: Wandalen/wretry.action/main@master with: action: actions-rs/toolchain@v1 with: | toolchain : nightly override : true attempt_limit: 3 attempt_delay: 10000 - uses: actions/checkout@v3 - name: Install will run: cargo install willbe - name: Set MANIFEST_ROOT_PATH id: rootpath run: echo "::set-output name=path::$(dirname ${{ inputs.manifest_path }})" - name: Run tests with each feature run: will .test ${{ steps.rootpath.outputs.path }}/ dry:0 exclude:'' with_all_features:1 with_debug:1 with_nightly:1 with_none_features:1 with_release:1 with_stable:1