From 4a1289845b4193e73a396fc7fbd672775a9a94f3 Mon Sep 17 00:00:00 2001 From: Jose Quintana Date: Mon, 24 Apr 2023 23:08:34 +0200 Subject: [PATCH] refactor: improve ci devel/prod pipelines --- .github/workflows/audit.yml | 3 +++ .github/workflows/devel.docker.yml | 4 +++- .github/workflows/devel.yml | 15 ++++++++++++++- .github/workflows/release.crate.yml | 201 ++++++++++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- .github/workflows/release.docker.yml | 4 ++++ ci/cargo.sh | 4 +++- 6 files changed, 37 insertions(+), 194 deletions(-) diff --git a/.github/workflows/audit.yml b/.github/workflows/audit.yml index 5888584..baebe9b 100644 --- a/.github/workflows/audit.yml +++ b/.github/workflows/audit.yml @@ -20,6 +20,9 @@ jobs: runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v3 + with: + fetch-depth: 1 + - uses: actions-rs/audit-check@v1 with: token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/devel.docker.yml b/.github/workflows/devel.docker.yml index 80a81b8..191cb8b 100644 --- a/.github/workflows/devel.docker.yml +++ b/.github/workflows/devel.docker.yml @@ -6,7 +6,9 @@ on: - master - staging - trying - + paths: + - docker/**/Dockerfile + - ci/**/*.sh env: DOCKER_IMAGE: localhost:5000/github.com/static-web-server/static-web-server diff --git a/.github/workflows/devel.yml b/.github/workflows/devel.yml index 4944b21..1480b87 100644 --- a/.github/workflows/devel.yml +++ b/.github/workflows/devel.yml @@ -6,8 +6,13 @@ on: - master - staging - trying + paths: + - Cargo.lock + - Cargo.toml + - src/** + - tests/** schedule: - - cron: '30 01 * * *' # Every day at 01:30 UTC + - cron: '30 01 * * *' # Every day at 01:30 UTC jobs: test: @@ -134,6 +139,8 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v3 + with: + fetch-depth: 1 - name: Install Linux/BSD tools if: ${{ !contains(matrix.os, 'windows') }} @@ -190,6 +197,8 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v3 + with: + fetch-depth: 1 - name: Check typos uses: crate-ci/typos@master @@ -209,3 +218,7 @@ jobs: - name: Check via Clippy run: | cargo clippy --all-features -- -D warnings + + - name: Check crate docs + run: | + cargo doc --lib --no-deps diff --git a/.github/workflows/release.crate.yml b/.github/workflows/release.crate.yml index 91458e5..0b092cd 100644 --- a/.github/workflows/release.crate.yml +++ b/.github/workflows/release.crate.yml @@ -1,14 +1,13 @@ -name: release crate - +name: release-crate on: - push: - tags: - - "v2.[0-9]+.[0-9]+" - - "v2.[0-9]+.[0-9]+-beta.[0-9]+" + release: + types: + - published jobs: check-secret: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 + if: contains(github.ref, 'v2.') environment: crates-io-static-web-server outputs: publish: ${{ steps.check.outputs.publish }} @@ -19,196 +18,16 @@ jobs: if: "${{ env.CRATES_TOKEN != '' }}" run: echo "publish=true" >> $GITHUB_OUTPUT - checks: - name: checks - if: needs.check-secret.outputs.publish == 'true' - runs-on: ubuntu-22.04 - - steps: - - name: Checkout repository - uses: actions/checkout@v3 - - - name: Check typos - uses: crate-ci/typos@master - with: - config: ./.github/workflows/config/typos.toml - - - name: Install stable toolchain - uses: dtolnay/rust-toolchain@stable - with: - toolchain: stable - components: rustfmt, clippy - - - name: Check formatting - run: | - cargo fmt --all -- --check - - - name: Check via Clippy - run: | - cargo clippy --all-features -- -D warnings - - test: - name: test - needs: checks - if: needs.check-secret.outputs.publish == 'true' - runs-on: ${{ matrix.os }} - env: - # Cargo's sparse protocol from 1.68.0 onwards - CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse - CARGO_BIN: cargo - # When CARGO_BIN is set to CROSS, this is set to `--target matrix.target` - TARGET_FLAGS: "" - # When CARGO_BIN is set to CROSS, TARGET_DIR includes matrix.target - TARGET_DIR: ./target - # Emit backtraces on panics - RUST_BACKTRACE: 1 - # Skip tests - SKIP_TESTS: "" - strategy: - matrix: - build: - - pinned - - stable - - beta - - linux-musl - - linux-musl-arm64 - - linux-musl-i686 - - linux-gnu - - linux-gnu-arm64 - - linux-gnu-i686 - - linux-arm-gnueabihf - - linux-musl-armv6 - - linux-musl-armv7 - - macos - - macos-arm64 - - windows-msvc - - windows-msvc-i686 - - windows-pc-gnu - # - windows-msvc-arm64 - include: - # Specific Rust channels - - build: pinned - os: ubuntu-22.04 - rust: 1.66.0 - - build: stable - os: ubuntu-22.04 - rust: stable - - build: beta - os: ubuntu-22.04 - rust: beta - # Some of our release builds are generated by a nightly compiler to take - # advantage of the latest optimizations/compile time improvements. - - build: linux-musl - os: ubuntu-22.04 - rust: stable - target: x86_64-unknown-linux-musl - - build: linux-musl-i686 - os: ubuntu-22.04 - rust: stable - target: i686-unknown-linux-musl - - build: linux-musl-arm64 - os: ubuntu-22.04 - rust: stable - target: aarch64-unknown-linux-musl - - build: linux-gnu - os: ubuntu-22.04 - rust: stable - target: x86_64-unknown-linux-gnu - - build: linux-gnu-i686 - os: ubuntu-22.04 - rust: stable - target: i686-unknown-linux-gnu - - build: linux-gnu-arm64 - os: ubuntu-22.04 - rust: stable - target: aarch64-unknown-linux-gnu - - build: linux-arm-gnueabihf - os: ubuntu-22.04 - rust: stable - target: arm-unknown-linux-gnueabihf - - build: linux-musl-armv6 - os: ubuntu-22.04 - rust: stable - target: arm-unknown-linux-musleabihf - - build: linux-musl-armv7 - os: ubuntu-22.04 - rust: stable - target: armv7-unknown-linux-musleabihf - - build: macos - os: macos-12 - rust: stable - target: x86_64-apple-darwin - - build: macos-arm64 - os: macos-12 - rust: stable - target: aarch64-apple-darwin - - build: windows-msvc - os: windows-2022 - rust: stable - target: x86_64-pc-windows-msvc - - build: windows-msvc-i686 - os: windows-2022 - rust: stable - target: i686-pc-windows-msvc - - build: windows-pc-gnu - os: windows-2022 - rust: stable-x86_64-gnu - # - build: windows-msvc-arm64 - # os: windows-2022 - # rust: stable - # target: aarch64-pc-windows-msvc - - steps: - - name: Checkout repository - uses: actions/checkout@v3 - - - name: Install Rust - uses: dtolnay/rust-toolchain@stable - with: - toolchain: ${{ matrix.rust }} - target: ${{ matrix.target }} - - - name: Use Cross - if: matrix.target != '' - run: | - cargo install cross@^0.2 - echo "CARGO_BIN=cross" >> $GITHUB_ENV - echo "TARGET_FLAGS=--target ${{ matrix.target }}" >> $GITHUB_ENV - echo "TARGET_DIR=./target/${{ matrix.target }}" >> $GITHUB_ENV - - - name: Show command used for Cargo - run: | - echo "cargo command is: ${{ env.CARGO_BIN }}" - echo "target flag is: ${{ env.TARGET_FLAGS }}" - echo "target dir is: ${{ env.TARGET_DIR }}" - - - name: aarch64 specific items - if: matrix.build == 'macos-arm64' - run: | - # Can't run tests: cross-compiling - echo "SKIP_TESTS=yes" >> $GITHUB_ENV - - - name: Run tests - shell: bash - if: env.SKIP_TESTS == '' - run: | - if [[ "${{ matrix.build }}" == "pinned" ]]; then unset CARGO_REGISTRIES_CRATES_IO_PROTOCOL; fi - ${{ env.CARGO_BIN }} test --verbose ${{ env.TARGET_FLAGS }} - - - name: Run build - shell: bash - run: | - if [[ "${{ matrix.build }}" == "pinned" ]]; then unset CARGO_REGISTRIES_CRATES_IO_PROTOCOL; fi - ${{ env.CARGO_BIN }} build --verbose ${{ env.TARGET_FLAGS }} - publish: - needs: test + needs: check-secret + runs-on: ubuntu-22.04 if: needs.check-secret.outputs.publish == 'true' - runs-on: ubuntu-latest environment: crates-io-static-web-server steps: - name: Checkout uses: actions/checkout@v3 + with: + fetch-depth: 1 - name: Install stable toolchain uses: dtolnay/rust-toolchain@stable diff --git a/.github/workflows/release.docker.yml b/.github/workflows/release.docker.yml index 2e0eb8b..c15dd3a 100644 --- a/.github/workflows/release.docker.yml +++ b/.github/workflows/release.docker.yml @@ -12,6 +12,8 @@ jobs: - name: Checkout repository uses: actions/checkout@v3 + with: + fetch-depth: 1 - name: Set up QEMU uses: docker/setup-qemu-action@v2 @@ -62,6 +64,8 @@ jobs: - name: Checkout repository uses: actions/checkout@v3 + with: + fetch-depth: 1 - name: Set up QEMU uses: docker/setup-qemu-action@v2 diff --git a/ci/cargo.sh b/ci/cargo.sh index 8fc2956..23efb4e 100755 --- a/ci/cargo.sh +++ b/ci/cargo.sh @@ -2,6 +2,8 @@ set -eux -o pipefail +OS_NAME=$(uname -s | tr A-Z a-z) + # Avoid putting the Android tools in `$PATH` because there are tools in this # directory like `clang` that would conflict with the same-named tools that may # be needed to compile the build script, or to compile for other targets. @@ -11,7 +13,7 @@ if [ -n "${ANDROID_HOME-}" ]; then ANDROID_NDK_ROOT=${ANDROID_NDK_ROOT:-${ANDROID_HOME}/ndk/$ndk_version} fi if [ -n "${ANDROID_NDK_ROOT-}" ]; then - android_tools=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin + android_tools=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${OS_NAME}-x86_64/bin fi for arg in $*; do -- libgit2 1.7.2