From 5b687b3010847a505586fde7be61b64b7f280c24 Mon Sep 17 00:00:00 2001 From: Richard Cook Date: Mon, 10 Apr 2023 21:50:55 -0700 Subject: [PATCH] Use Cross and build MUSL --- .cargo/config.toml | 3 +++ .github/workflows/ci.yaml | 28 +++++++++++++++------ .github/workflows/release.yaml | 46 ++++++++++++++++++++++------------ 3 files changed, 53 insertions(+), 24 deletions(-) diff --git a/.cargo/config.toml b/.cargo/config.toml index 3476af6b..19ccee72 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -9,3 +9,6 @@ rustflags = ["-C", "target-feature=+crt-static"] [target.x86_64-unknown-linux-gnu] rustflags = ["-C", "target-feature=+crt-static"] + +[target.x86_64-unknown-linux-musl] +rustflags = ["-C", "target-feature=+crt-static"] diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 617c7e6e..d9036224 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -1,7 +1,6 @@ name: CI env: - CARGO_TERM_COLOR: always project: isopy on: @@ -12,7 +11,7 @@ on: branches: - main schedule: - - cron: 0 0 * * SUN + - cron: 0 5 * * * jobs: ci: @@ -30,18 +29,31 @@ jobs: - target: x86_64-unknown-linux-gnu host_os: ubuntu-latest runs-on: ${{ matrix.host_os }} + env: + cargo: cargo + CARGO_TERM_COLOR: always steps: + - name: Set variables + shell: bash + run: echo "target_flags=--target ${{ matrix.target }}" >> $GITHUB_ENV + - name: Check out uses: actions/checkout@v3 + - name: Build (debug) - run: cargo build --verbose --target ${{ matrix.target }} + run: ${{ env.cargo }} build --verbose ${{ env.target_flags }} + - name: Run tests (debug) - run: cargo test --verbose --target ${{ matrix.target }} + run: ${{ env.cargo }} test --verbose ${{ env.target_flags }} + - name: Build (release) - run: cargo build --verbose --release --target ${{ matrix.target }} + run: ${{ env.cargo }} build --verbose --release ${{ env.target_flags }} + - name: Run tests (release) - run: cargo test --verbose --release --target ${{ matrix.target }} + run: ${{ env.cargo }} test --verbose --release ${{ env.target_flags }} + - name: Run Clippy - run: cargo clippy --target ${{ matrix.target }} + run: ${{ env.cargo }} clippy ${{ env.target_flags }} + - name: Run fmt - run: cargo fmt --check + run: ${{ env.cargo }} fmt --check diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 8f0fb003..811c6504 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -1,12 +1,11 @@ name: Release -permissions: - contents: write - env: - CARGO_TERM_COLOR: always project: isopy +permissions: + contents: write + on: push: tags: @@ -20,7 +19,7 @@ jobs: - aarch64-apple-darwin - x86_64-apple-darwin - x86_64-pc-windows-msvc - - x86_64-unknown-linux-gnu + - x86_64-unknown-linux-musl include: - target: aarch64-apple-darwin host_os: macos-latest @@ -34,23 +33,29 @@ jobs: host_os: windows-latest executable_ext: .exe archive_ext: .zip - - target: x86_64-unknown-linux-gnu + - target: x86_64-unknown-linux-musl host_os: ubuntu-latest executable_ext: archive_ext: .tar.gz runs-on: ${{ matrix.host_os }} + env: + cargo: cargo + CARGO_TERM_COLOR: always steps: - - name: Set variables (Windows) - if: ${{ matrix.host_os == 'windows-latest' }} - run: | - echo "archive_file_name=${{ env.project }}-${{ github.ref_name }}-${{ matrix.target }}${{ matrix.archive_ext }}" >> $env:GITHUB_ENV - echo "ISOPY_VERSION=${{ github.ref_name }}" >> $env:GITHUB_ENV - - name: Set variables (Linux/macOS) - if: ${{ matrix.host_os != 'windows-latest' }} + - name: Set variables + shell: bash run: | echo "archive_file_name=${{ env.project }}-${{ github.ref_name }}-${{ matrix.target }}${{ matrix.archive_ext }}" >> $GITHUB_ENV echo "ISOPY_VERSION=${{ github.ref_name }}" >> $GITHUB_ENV + - name: Install Cross + shell: bash + run: | + cargo install cross + echo "cargo=cross" >> $GITHUB_ENV + echo "target_flags=--target ${{ matrix.target }}" >> $GITHUB_ENV + echo "target_dir=target/${{ matrix.target }}" >> $GITHUB_ENV + - name: Check out uses: actions/checkout@v3 @@ -61,14 +66,23 @@ jobs: targets: ${{ matrix.target }} - name: Build - run: cargo build --release --target ${{ matrix.target }} + run: ${{ env.cargo }} build --release ${{ env.target_flags }} - name: Create archive (Windows) if: ${{ matrix.host_os == 'windows-latest' }} - run: Compress-Archive -DestinationPath ${{ env.archive_file_name }} -LiteralPath target\${{ matrix.target }}\release\${{ env.project}}${{ matrix.executable_ext }} + shell: pwsh + run: | + Compress-Archive ` + -DestinationPath ${{ env.archive_file_name }} ` + -LiteralPath ${{ env.target_dir }}/release/${{ env.project}}${{ matrix.executable_ext }} - name: Create archive (Linux/macOS) if: ${{ matrix.host_os != 'windows-latest' }} - run: tar -C target/${{ matrix.target }}/release -czf ${{ env.archive_file_name }} ${{ env.project}}${{ matrix.executable_ext }} + shell: bash + run: | + tar \ + -C ${{ env.target_dir }}/release \ + -czf \ + ${{ env.archive_file_name }} ${{ env.project}}${{ matrix.executable_ext }} - name: Create release id: create_release