From f662083cc1c03cb50b483f54cb07f83357cc5975 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Marcos=20P=2E=20Bezerra?= Date: Sun, 17 Nov 2024 17:30:05 -0300 Subject: [PATCH 1/7] CI: refac: reorganizing + renaming --- .github/workflows/build-and-test.yml | 91 ++++++++++++++-------------- 1 file changed, 44 insertions(+), 47 deletions(-) diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 752db329..9164d12d 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -1,4 +1,4 @@ -name: build-and-test +name: PR checks on: push: @@ -9,14 +9,54 @@ on: pull_request: jobs: - build: - name: build - runs-on: ${{ matrix.os }} + clippy-rustfmt: + name: clippy-rustfmt + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: "Cargo: clippy, fmt" + run: | + rustup toolchain install stable --profile minimal -c clippy + rustup toolchain install nightly --profile minimal -c rustfmt + cargo +stable clippy -- -D warnings + cargo +nightly fmt -- --check + + github-release: + name: github-release + runs-on: ubuntu-latest + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') + needs: build-and-test + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Download artifacts + uses: dawidd6/action-download-artifact@v3 + with: + path: artifacts + + - name: Package release assets + run: scripts/package-release-assets.sh + + - name: Create release + uses: softprops/action-gh-release@v2 + with: + draft: true + files: release/ouch-* + + build-and-test: + name: build-and-test + runs-on: ${{ matrix.os || 'ubuntu-latest' }} env: CARGO: cargo strategy: fail-fast: false matrix: + feature-use-zlib: [true, false] + feature-use-zstd-thin: [true, false] + feature-unrar: [true, false] target: # native - x86_64-unknown-linux-gnu @@ -30,13 +70,8 @@ jobs: - aarch64-unknown-linux-musl - armv7-unknown-linux-gnueabihf - armv7-unknown-linux-musleabihf - feature-use-zlib: [true, false] - feature-use-zstd-thin: [true, false] - feature-unrar: [true, false] include: - # default runner - - os: ubuntu-latest # runner overrides - target: x86_64-pc-windows-gnu os: windows-latest @@ -121,41 +156,3 @@ jobs: target/${{ matrix.target }}/release/ouch target/${{ matrix.target }}/release/ouch.exe artifacts/ - - clippy-rustfmt: - name: clippy-rustfmt - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: "Cargo: clippy, fmt" - run: | - rustup toolchain install stable --profile minimal -c clippy - rustup toolchain install nightly --profile minimal -c rustfmt - cargo +stable clippy -- -D warnings - cargo +stable clippy --tests -- -D warnings - cargo +nightly fmt -- --check - - github-release: - name: github-release - runs-on: ubuntu-latest - if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') - needs: build - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Download artifacts - uses: dawidd6/action-download-artifact@v3 - with: - path: artifacts - - - name: Package release assets - run: scripts/package-release-assets.sh - - - name: Create release - uses: softprops/action-gh-release@v2 - with: - draft: true - files: release/ouch-* From 0e93075a4db0f454c34091ff3f58ee77c3ca7f7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Marcos=20P=2E=20Bezerra?= Date: Sun, 17 Nov 2024 18:55:41 -0300 Subject: [PATCH 2/7] CI: enha: don't run if only `.md` was modified --- .github/workflows/build-and-test.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 9164d12d..177c02e9 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -7,6 +7,8 @@ on: tags: - "[0-9]+.[0-9]+.[0-9]+" pull_request: + paths-ignore: + - "*.md" jobs: clippy-rustfmt: From 402532c02de58bfd582cc1fb9bec2d32c2978e8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Marcos=20P=2E=20Bezerra?= Date: Sun, 17 Nov 2024 18:56:21 -0300 Subject: [PATCH 3/7] CI: tweak: don't run CI for all features --- .github/workflows/build-and-test.yml | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 177c02e9..cf75e4e0 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -56,9 +56,9 @@ jobs: strategy: fail-fast: false matrix: - feature-use-zlib: [true, false] - feature-use-zstd-thin: [true, false] - feature-unrar: [true, false] + feature-use-zlib: [false] + feature-use-zstd-thin: [false] + feature-unrar: [false] target: # native - x86_64-unknown-linux-gnu @@ -94,6 +94,13 @@ jobs: use-cross: true - target: armv7-unknown-linux-musleabihf use-cross: true + # features + - feature-use-zlib: true + target: x86_64-unknown-linux-gnu + - feature-use-zstd-thin: true + target: x86_64-unknown-linux-gnu + - feature-unrar: true + target: x86_64-unknown-linux-gnu steps: - name: Checkout @@ -114,9 +121,9 @@ jobs: shell: bash run: | FEATURES=() - if [[ ${{ matrix.feature-use-zlib }} == true ]]; then FEATURES+=(use_zlib); fi - if [[ ${{ matrix.feature-use-zstd-thin }} == true ]]; then FEATURES+=(use_zstd_thin); fi - if [[ ${{ matrix.feature-unrar }} == true ]]; then FEATURES+=(unrar); fi + if [[ "${{ matrix.feature-use-zlib }}" == true ]]; then FEATURES+=(use_zlib); fi + if [[ "${{ matrix.feature-use-zstd-thin }}" == true ]]; then FEATURES+=(use_zstd_thin); fi + if [[ "${{ matrix.feature-unrar }}" == true ]]; then FEATURES+=(unrar); fi IFS=',' echo "FEATURES=${FEATURES[*]}" >> $GITHUB_OUTPUT From 770e528a7710873cb70c7d931df09e567118d692 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Marcos=20P=2E=20Bezerra?= Date: Sun, 17 Nov 2024 18:59:34 -0300 Subject: [PATCH 4/7] CI: tweak: separate clippy and rustfmt jobs --- .github/workflows/build-and-test.yml | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index cf75e4e0..54eab73f 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -11,18 +11,28 @@ on: - "*.md" jobs: - clippy-rustfmt: - name: clippy-rustfmt + clippy-lints-check: + name: clippy-lints-check runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - - name: "Cargo: clippy, fmt" + - name: "Cargo: clippy" run: | rustup toolchain install stable --profile minimal -c clippy - rustup toolchain install nightly --profile minimal -c rustfmt cargo +stable clippy -- -D warnings + + rustfmt-check: + name: rustfmt-check + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: "Cargo: fmt" + run: | + rustup toolchain install nightly --profile minimal -c rustfmt cargo +nightly fmt -- --check github-release: From 8b8ae99ad5e9d9d7f0d649c2c555af3a63c3f755 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Marcos=20P=2E=20Bezerra?= Date: Sun, 17 Nov 2024 19:04:23 -0300 Subject: [PATCH 5/7] CI: chore: rename jobs and workflow files --- ...ifacts.yml => manual-trigger-draft-release.yml} | 9 ++++++--- .../{build-and-test.yml => pr-workflow.yml} | 14 +++++--------- 2 files changed, 11 insertions(+), 12 deletions(-) rename .github/workflows/{create-draft-release-with-artifacts.yml => manual-trigger-draft-release.yml} (73%) rename .github/workflows/{build-and-test.yml => pr-workflow.yml} (96%) diff --git a/.github/workflows/create-draft-release-with-artifacts.yml b/.github/workflows/manual-trigger-draft-release.yml similarity index 73% rename from .github/workflows/create-draft-release-with-artifacts.yml rename to .github/workflows/manual-trigger-draft-release.yml index 0b46fa69..530018f7 100644 --- a/.github/workflows/create-draft-release-with-artifacts.yml +++ b/.github/workflows/manual-trigger-draft-release.yml @@ -1,4 +1,8 @@ -name: create-draft-release-with-artifacts +# we have two workflows for releases, this is the manual one to be triggered +# in the Actions tab in the repository +# +# the automatic one runs in another workflow and checks for tag pushes +name: manual-trigger-draft-release on: workflow_dispatch: @@ -8,8 +12,7 @@ on: required: true jobs: - github-release: - name: github-release + create-draft-release-from-manual-trigger: runs-on: ubuntu-latest steps: - name: Checkout diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/pr-workflow.yml similarity index 96% rename from .github/workflows/build-and-test.yml rename to .github/workflows/pr-workflow.yml index 54eab73f..54c8fe3b 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/pr-workflow.yml @@ -1,4 +1,4 @@ -name: PR checks +name: PR workflow on: push: @@ -11,8 +11,7 @@ on: - "*.md" jobs: - clippy-lints-check: - name: clippy-lints-check + clippy-checks: runs-on: ubuntu-latest steps: - name: Checkout @@ -24,7 +23,6 @@ jobs: cargo +stable clippy -- -D warnings rustfmt-check: - name: rustfmt-check runs-on: ubuntu-latest steps: - name: Checkout @@ -35,11 +33,10 @@ jobs: rustup toolchain install nightly --profile minimal -c rustfmt cargo +nightly fmt -- --check - github-release: - name: github-release + automated-draft-release: runs-on: ubuntu-latest if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') - needs: build-and-test + needs: build-artifacts-and-run-tests steps: - name: Checkout uses: actions/checkout@v4 @@ -58,8 +55,7 @@ jobs: draft: true files: release/ouch-* - build-and-test: - name: build-and-test + build-artifacts-and-run-tests: runs-on: ${{ matrix.os || 'ubuntu-latest' }} env: CARGO: cargo From 31ed069e7b9147ae30903c6242f43b187505b3ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Marcos=20P=2E=20Bezerra?= Date: Sun, 17 Nov 2024 19:19:14 -0300 Subject: [PATCH 6/7] CI: tweak: make workflows reusable --- .github/workflows/all-tests-slow.yml | 17 ++ .../build-artifacts-and-run-tests.yml | 146 ++++++++++++++++ .../draft-release-automatic-trigger.yml | 35 ++++ ...e.yml => draft-release-manual-trigger.yml} | 6 +- .github/workflows/pr-workflow.yml | 156 +----------------- 5 files changed, 208 insertions(+), 152 deletions(-) create mode 100644 .github/workflows/all-tests-slow.yml create mode 100644 .github/workflows/build-artifacts-and-run-tests.yml create mode 100644 .github/workflows/draft-release-automatic-trigger.yml rename .github/workflows/{manual-trigger-draft-release.yml => draft-release-manual-trigger.yml} (78%) diff --git a/.github/workflows/all-tests-slow.yml b/.github/workflows/all-tests-slow.yml new file mode 100644 index 00000000..7a5a644c --- /dev/null +++ b/.github/workflows/all-tests-slow.yml @@ -0,0 +1,17 @@ +name: Run tests for all combinations + +on: + schedule: + - cron: "0 0 1,15 * *" # biweekly + push: + branches: + - main + paths-ignore: + - "*.md" + +jobs: + run-tests-for-all-combinations: + uses: ouch-org/ouch/.github/workflows/build-artifacts-and-run-tests.yml@main + with: + matrix_all_combinations: true + upload_artifacts: false diff --git a/.github/workflows/build-artifacts-and-run-tests.yml b/.github/workflows/build-artifacts-and-run-tests.yml new file mode 100644 index 00000000..788c7a1c --- /dev/null +++ b/.github/workflows/build-artifacts-and-run-tests.yml @@ -0,0 +1,146 @@ +# This is a reusable workflow + +name: Build artifacts and run tests + +on: + workflow_dispatch: + inputs: + matrix_all_combinations: + description: "if matrix should have all combinations of targets and features" + type: boolean + required: true + default: true + upload_artifacts: + description: "if built artifacts should be uploaded" + type: boolean + required: true + default: true + workflow_call: + inputs: + matrix_all_combinations: + description: "if matrix should have all combinations of targets and features" + type: boolean + required: true + upload_artifacts: + description: "if built artifacts should be uploaded" + type: boolean + required: true + +jobs: + build-artifacts-and-run-tests: + runs-on: ${{ matrix.os || 'ubuntu-latest' }} + env: + CARGO: cargo + strategy: + fail-fast: false + matrix: + feature-unrar: ${{ inputs.matrix_all_combinations && fromJSON('[true, false]') || fromJSON('[false]')}} + feature-use-zlib: ${{ inputs.matrix_all_combinations && fromJSON('[true, false]') || fromJSON('[false]')}} + feature-use-zstd-thin: ${{ inputs.matrix_all_combinations && fromJSON('[true, false]') || fromJSON('[false]')}} + target: + # native + - x86_64-unknown-linux-gnu + - x86_64-pc-windows-gnu + - x86_64-pc-windows-msvc + - aarch64-pc-windows-msvc + - x86_64-apple-darwin + # cross + - x86_64-unknown-linux-musl + - aarch64-unknown-linux-gnu + - aarch64-unknown-linux-musl + - armv7-unknown-linux-gnueabihf + - armv7-unknown-linux-musleabihf + + include: + # runner overrides + - target: x86_64-pc-windows-gnu + os: windows-latest + - target: x86_64-pc-windows-msvc + os: windows-latest + - target: aarch64-pc-windows-msvc + os: windows-latest + - target: x86_64-apple-darwin + os: macos-latest + # targets that use cross + - target: x86_64-unknown-linux-musl + use-cross: true + - target: aarch64-unknown-linux-gnu + use-cross: true + - target: aarch64-unknown-linux-musl + use-cross: true + - target: armv7-unknown-linux-gnueabihf + use-cross: true + - target: armv7-unknown-linux-musleabihf + use-cross: true + # features (unless `matrix_all_combinations` is true, we only run these on linux-gnu) + - feature-unrar: true + target: x86_64-unknown-linux-gnu + - feature-use-zlib: true + target: x86_64-unknown-linux-gnu + - feature-use-zstd-thin: true + target: x86_64-unknown-linux-gnu + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Install cross + if: matrix.use-cross + run: | + pushd "$(mktemp -d)" + wget https://github.com/cross-rs/cross/releases/download/v0.2.4/cross-x86_64-unknown-linux-musl.tar.gz + tar xf cross-x86_64-unknown-linux-musl.tar.gz + cp cross ~/.cargo/bin + popd + echo CARGO=cross >> $GITHUB_ENV + + - name: Concatenate features + id: concat-features + shell: bash + run: | + FEATURES=() + if [[ "${{ matrix.feature-use-zlib }}" == true ]]; then FEATURES+=(use_zlib); fi + if [[ "${{ matrix.feature-use-zstd-thin }}" == true ]]; then FEATURES+=(use_zstd_thin); fi + if [[ "${{ matrix.feature-unrar }}" == true ]]; then FEATURES+=(unrar); fi + IFS=',' + echo "FEATURES=${FEATURES[*]}" >> $GITHUB_OUTPUT + + - name: Set up extra cargo flags + env: + FEATURES: ${{steps.concat-features.outputs.FEATURES}} + shell: bash + run: | + FLAGS="--no-default-features" + if [[ -n "$FEATURES" ]]; then FLAGS+=" --features $FEATURES"; fi + echo "EXTRA_CARGO_FLAGS=$FLAGS" >> $GITHUB_ENV + + - name: Install Rust + run: | + rustup toolchain install stable nightly --profile minimal -t ${{ matrix.target }} + + - uses: Swatinem/rust-cache@v2 + with: + key: "${{ matrix.target }}-${{ matrix.feature-unrar }}-${{ matrix.feature-use-zstd-thin }}-${{ matrix.feature-unrar }}" + + - name: Test on stable + # there's no way to run tests for ARM64 Windows for now + if: matrix.target != 'aarch64-pc-windows-msvc' + run: | + ${{ env.CARGO }} +stable test --target ${{ matrix.target }} $EXTRA_CARGO_FLAGS + + - name: Release on nightly + run: | + ${{ env.CARGO }} +nightly build --release --target ${{ matrix.target }} $EXTRA_CARGO_FLAGS + env: + OUCH_ARTIFACTS_FOLDER: artifacts + RUSTFLAGS: -C strip=symbols + + - name: Upload artifacts + uses: actions/upload-artifact@v4 + if: ${{ inputs.upload_artifacts }} + with: + name: ouch-${{ matrix.target }}-${{ steps.concat-features.outputs.FEATURES }} + path: | + target/${{ matrix.target }}/release/ouch + target/${{ matrix.target }}/release/ouch.exe + artifacts/ diff --git a/.github/workflows/draft-release-automatic-trigger.yml b/.github/workflows/draft-release-automatic-trigger.yml new file mode 100644 index 00000000..531ccc70 --- /dev/null +++ b/.github/workflows/draft-release-automatic-trigger.yml @@ -0,0 +1,35 @@ +name: Automatic trigger draft release + +on: + push: + tags: + - "[0-9]+.[0-9]+.[0-9]+" + +jobs: + call-workflow-build-artifacts-and-run-tests: + uses: ouch-org/ouch/.github/workflows/build-artifacts-and-run-tests.yml@main + with: + matrix_all_combinations: true + upload_artifacts: true + + automated-draft-release: + runs-on: ubuntu-latest + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') + needs: build-artifacts-and-run-tests + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Download artifacts + uses: dawidd6/action-download-artifact@v3 + with: + path: artifacts + + - name: Package release assets + run: scripts/package-release-assets.sh + + - name: Create release + uses: softprops/action-gh-release@v2 + with: + draft: true + files: release/ouch-* diff --git a/.github/workflows/manual-trigger-draft-release.yml b/.github/workflows/draft-release-manual-trigger.yml similarity index 78% rename from .github/workflows/manual-trigger-draft-release.yml rename to .github/workflows/draft-release-manual-trigger.yml index 530018f7..6e296feb 100644 --- a/.github/workflows/manual-trigger-draft-release.yml +++ b/.github/workflows/draft-release-manual-trigger.yml @@ -1,8 +1,4 @@ -# we have two workflows for releases, this is the manual one to be triggered -# in the Actions tab in the repository -# -# the automatic one runs in another workflow and checks for tag pushes -name: manual-trigger-draft-release +name: Manual trigger draft release on: workflow_dispatch: diff --git a/.github/workflows/pr-workflow.yml b/.github/workflows/pr-workflow.yml index 54c8fe3b..f1d606ee 100644 --- a/.github/workflows/pr-workflow.yml +++ b/.github/workflows/pr-workflow.yml @@ -1,27 +1,11 @@ name: PR workflow on: - push: - branches: - - main - tags: - - "[0-9]+.[0-9]+.[0-9]+" pull_request: paths-ignore: - "*.md" jobs: - clippy-checks: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: "Cargo: clippy" - run: | - rustup toolchain install stable --profile minimal -c clippy - cargo +stable clippy -- -D warnings - rustfmt-check: runs-on: ubuntu-latest steps: @@ -33,141 +17,19 @@ jobs: rustup toolchain install nightly --profile minimal -c rustfmt cargo +nightly fmt -- --check - automated-draft-release: + clippy-checks: runs-on: ubuntu-latest - if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') - needs: build-artifacts-and-run-tests steps: - name: Checkout uses: actions/checkout@v4 - - name: Download artifacts - uses: dawidd6/action-download-artifact@v3 - with: - path: artifacts - - - name: Package release assets - run: scripts/package-release-assets.sh - - - name: Create release - uses: softprops/action-gh-release@v2 - with: - draft: true - files: release/ouch-* - - build-artifacts-and-run-tests: - runs-on: ${{ matrix.os || 'ubuntu-latest' }} - env: - CARGO: cargo - strategy: - fail-fast: false - matrix: - feature-use-zlib: [false] - feature-use-zstd-thin: [false] - feature-unrar: [false] - target: - # native - - x86_64-unknown-linux-gnu - - x86_64-pc-windows-gnu - - x86_64-pc-windows-msvc - - aarch64-pc-windows-msvc - - x86_64-apple-darwin - # cross - - x86_64-unknown-linux-musl - - aarch64-unknown-linux-gnu - - aarch64-unknown-linux-musl - - armv7-unknown-linux-gnueabihf - - armv7-unknown-linux-musleabihf - - include: - # runner overrides - - target: x86_64-pc-windows-gnu - os: windows-latest - - target: x86_64-pc-windows-msvc - os: windows-latest - - target: aarch64-pc-windows-msvc - os: windows-latest - - target: x86_64-apple-darwin - os: macos-latest - # targets that use cross - - target: x86_64-unknown-linux-musl - use-cross: true - - target: aarch64-unknown-linux-gnu - use-cross: true - - target: aarch64-unknown-linux-musl - use-cross: true - - target: armv7-unknown-linux-gnueabihf - use-cross: true - - target: armv7-unknown-linux-musleabihf - use-cross: true - # features - - feature-use-zlib: true - target: x86_64-unknown-linux-gnu - - feature-use-zstd-thin: true - target: x86_64-unknown-linux-gnu - - feature-unrar: true - target: x86_64-unknown-linux-gnu - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Install cross - if: matrix.use-cross - run: | - pushd "$(mktemp -d)" - wget https://github.com/cross-rs/cross/releases/download/v0.2.4/cross-x86_64-unknown-linux-musl.tar.gz - tar xf cross-x86_64-unknown-linux-musl.tar.gz - cp cross ~/.cargo/bin - popd - echo CARGO=cross >> $GITHUB_ENV - - - name: Concatenate features - id: concat-features - shell: bash - run: | - FEATURES=() - if [[ "${{ matrix.feature-use-zlib }}" == true ]]; then FEATURES+=(use_zlib); fi - if [[ "${{ matrix.feature-use-zstd-thin }}" == true ]]; then FEATURES+=(use_zstd_thin); fi - if [[ "${{ matrix.feature-unrar }}" == true ]]; then FEATURES+=(unrar); fi - IFS=',' - echo "FEATURES=${FEATURES[*]}" >> $GITHUB_OUTPUT - - - name: Set up extra cargo flags - env: - FEATURES: ${{steps.concat-features.outputs.FEATURES}} - shell: bash - run: | - FLAGS="--no-default-features" - if [[ -n "$FEATURES" ]]; then FLAGS+=" --features $FEATURES"; fi - echo "EXTRA_CARGO_FLAGS=$FLAGS" >> $GITHUB_ENV - - - name: Install Rust - run: | - rustup toolchain install stable nightly --profile minimal -t ${{ matrix.target }} - - - uses: Swatinem/rust-cache@v2 - with: - key: "${{ matrix.target }}-${{ matrix.feature-unrar }}-${{ matrix.feature-use-zstd-thin }}-${{ matrix.feature-unrar }}" - - - name: Test on stable - # there's no way to run tests for ARM64 Windows for now - if: matrix.target != 'aarch64-pc-windows-msvc' - run: | - ${{ env.CARGO }} +stable test --target ${{ matrix.target }} $EXTRA_CARGO_FLAGS - - - name: Release on nightly + - name: "Cargo: clippy" run: | - ${{ env.CARGO }} +nightly build --release --target ${{ matrix.target }} $EXTRA_CARGO_FLAGS - env: - OUCH_ARTIFACTS_FOLDER: artifacts - RUSTFLAGS: -C strip=symbols + rustup toolchain install stable --profile minimal -c clippy + cargo +stable clippy -- -D warnings - - name: Upload artifacts - uses: actions/upload-artifact@v4 - with: - name: ouch-${{ matrix.target }}-${{ steps.concat-features.outputs.FEATURES }} - path: | - target/${{ matrix.target }}/release/ouch - target/${{ matrix.target }}/release/ouch.exe - artifacts/ + build-and-test: + uses: ouch-org/ouch/.github/workflows/build-artifacts-and-run-tests.yml@main + with: + matrix_all_combinations: false + upload_artifacts: false From 73adea524afbddfb75c2afa4a644d3a15bf4e442 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Marcos=20P=2E=20Bezerra?= Date: Sun, 17 Nov 2024 20:36:08 -0300 Subject: [PATCH 7/7] CI: tweak: reference reusable workflow locally this allows non-main branches to run their own latest workflows, and helps with forks too --- .github/workflows/all-tests-slow.yml | 2 +- .github/workflows/draft-release-automatic-trigger.yml | 2 +- .github/workflows/pr-workflow.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/all-tests-slow.yml b/.github/workflows/all-tests-slow.yml index 7a5a644c..da08e150 100644 --- a/.github/workflows/all-tests-slow.yml +++ b/.github/workflows/all-tests-slow.yml @@ -11,7 +11,7 @@ on: jobs: run-tests-for-all-combinations: - uses: ouch-org/ouch/.github/workflows/build-artifacts-and-run-tests.yml@main + uses: ./.github/workflows/build-artifacts-and-run-tests.yml with: matrix_all_combinations: true upload_artifacts: false diff --git a/.github/workflows/draft-release-automatic-trigger.yml b/.github/workflows/draft-release-automatic-trigger.yml index 531ccc70..f007f803 100644 --- a/.github/workflows/draft-release-automatic-trigger.yml +++ b/.github/workflows/draft-release-automatic-trigger.yml @@ -7,7 +7,7 @@ on: jobs: call-workflow-build-artifacts-and-run-tests: - uses: ouch-org/ouch/.github/workflows/build-artifacts-and-run-tests.yml@main + uses: ./.github/workflows/build-artifacts-and-run-tests.yml with: matrix_all_combinations: true upload_artifacts: true diff --git a/.github/workflows/pr-workflow.yml b/.github/workflows/pr-workflow.yml index f1d606ee..ec894590 100644 --- a/.github/workflows/pr-workflow.yml +++ b/.github/workflows/pr-workflow.yml @@ -29,7 +29,7 @@ jobs: cargo +stable clippy -- -D warnings build-and-test: - uses: ouch-org/ouch/.github/workflows/build-artifacts-and-run-tests.yml@main + uses: ./.github/workflows/build-artifacts-and-run-tests.yml with: matrix_all_combinations: false upload_artifacts: false