index : static-web-server.git

ascending towards madness

author Jose Quintana <joseluisquintana20@gmail.com> 2023-04-24 21:08:34.0 +00:00:00
committer Jose Quintana <joseluisquintana20@gmail.com> 2023-04-24 21:09:44.0 +00:00:00
commit
4a1289845b4193e73a396fc7fbd672775a9a94f3 [patch]
tree
3543cbb46c15fe44feccaffc67e8178a94bcbf62
parent
e36a522392ee93db0610dc7bfba500d24de4181d
download
4a1289845b4193e73a396fc7fbd672775a9a94f3.tar.gz

refactor: improve ci devel/prod pipelines



Diff

 .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