From 1653157ed2df7852ae588a5771ca27250378547d Mon Sep 17 00:00:00 2001 From: Sven-Hendrik Haase Date: Sun, 29 Aug 2021 04:48:09 +0200 Subject: Always build all binaries for all targets This uses the original workflow we used for publishing the binaries but now we use it as CI as well with an optional publish in case we are in a tag push. --- .github/workflows/build-release-binaries.yml | 174 +++++++++++++++++++++++++++ .github/workflows/publish.yml | 170 -------------------------- 2 files changed, 174 insertions(+), 170 deletions(-) create mode 100644 .github/workflows/build-release-binaries.yml delete mode 100644 .github/workflows/publish.yml (limited to '.github') diff --git a/.github/workflows/build-release-binaries.yml b/.github/workflows/build-release-binaries.yml new file mode 100644 index 0000000..5085246 --- /dev/null +++ b/.github/workflows/build-release-binaries.yml @@ -0,0 +1,174 @@ +name: Build release binaries (and publish them if this is a tag) + +on: push + +jobs: + binaries: + name: ${{ matrix.os }} for ${{ matrix.target }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + target: + - x86_64-unknown-linux-musl + - aarch64-unknown-linux-musl + - armv7-unknown-linux-musleabihf + - arm-unknown-linux-musleabihf + - mips-unknown-linux-musl + - mipsel-unknown-linux-musl + - mips64-unknown-linux-gnuabi64 + - mips64el-unknown-linux-gnuabi64 + - riscv64gc-unknown-linux-gnu + - x86_64-pc-windows-msvc + - x86_64-apple-darwin + - x86_64-unknown-freebsd + include: + - os: ubuntu-latest + target: x86_64-unknown-linux-musl + artifact_name: target/x86_64-unknown-linux-musl/release/miniserve + release_name: x86_64-unknown-linux-musl + cross: true + strip: true + compress: true + cargo_flags: "" + - os: ubuntu-latest + target: aarch64-unknown-linux-musl + artifact_name: target/aarch64-unknown-linux-musl/release/miniserve + release_name: aarch64-unknown-linux-musl + cross: true + strip: false + compress: true + cargo_flags: "" + - os: ubuntu-latest + target: armv7-unknown-linux-musleabihf + artifact_name: target/armv7-unknown-linux-musleabihf/release/miniserve + release_name: armv7-unknown-linux-musleabihf + cross: true + strip: false + compress: true + cargo_flags: "" + - os: ubuntu-latest + target: arm-unknown-linux-musleabihf + artifact_name: target/arm-unknown-linux-musleabihf/release/miniserve + release_name: arm-unknown-linux-musleabihf + cross: true + strip: false + compress: true + cargo_flags: "" + - os: ubuntu-latest + target: mips-unknown-linux-musl + artifact_name: target/mips-unknown-linux-musl/release/miniserve + release_name: mips-unknown-linux-musl + cross: true + strip: false + compress: true + cargo_flags: "--no-default-features" + - os: ubuntu-latest + target: mipsel-unknown-linux-musl + artifact_name: target/mipsel-unknown-linux-musl/release/miniserve + release_name: mipsel-unknown-linux-musl + cross: true + strip: false + compress: true + cargo_flags: "--no-default-features" + - os: ubuntu-latest + target: mips64-unknown-linux-gnuabi64 + artifact_name: target/mips64-unknown-linux-gnuabi64/release/miniserve + release_name: mips64-unknown-linux-gnuabi64 + cross: true + strip: false + compress: false + cargo_flags: "--no-default-features" + - os: ubuntu-latest + target: mips64el-unknown-linux-gnuabi64 + artifact_name: target/mips64el-unknown-linux-gnuabi64/release/miniserve + release_name: mips64el-unknown-linux-gnuabi64 + cross: true + strip: false + compress: false + cargo_flags: "--no-default-features" + - os: ubuntu-latest + target: riscv64gc-unknown-linux-gnu + artifact_name: target/riscv64gc-unknown-linux-gnu/release/miniserve + release_name: riscv64gc-unknown-linux-gnu + cross: true + strip: false + compress: false + cargo_flags: "--no-default-features" + - os: windows-latest + target: x86_64-pc-windows-msvc + artifact_name: target/x86_64-pc-windows-msvc/release/miniserve.exe + release_name: x86_64-pc-windows-msvc.exe + cross: false + strip: true + compress: true + cargo_flags: "" + - os: macos-latest + target: x86_64-apple-darwin + artifact_name: target/x86_64-apple-darwin/release/miniserve + release_name: x86_64-apple-darwin + cross: false + strip: true + compress: true + cargo_flags: "" + - os: ubuntu-latest + target: x86_64-unknown-freebsd + artifact_name: target/x86_64-unknown-freebsd/release/miniserve + release_name: x86_64-unknown-freebsd + cross: true + strip: false + compress: false + cargo_flags: "" + + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Setup Rust toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + target: ${{ matrix.target }} + + - name: cargo build + uses: actions-rs/cargo@v1 + with: + command: build + args: --release --locked --target=${{ matrix.target }} ${{ matrix.cargo_flags }} + use-cross: ${{ matrix.cross }} + + - name: Compress binaries + uses: svenstaro/upx-action@v2 + with: + file: ${{ matrix.artifact_name }} + args: --lzma + strip: ${{ matrix.strip }} + if: ${{ matrix.compress }} + + ### + # Below this line, steps will only be ran if a tag was pushed. + ### + + - name: Get tag name + id: tag_name + run: | + echo ::set-output name=current_version::${GITHUB_REF#refs/tags/v} + shell: bash + if: startsWith('refs/tags/v', github.ref) + + - name: Get CHANGELOG.md entry + id: changelog_reader + uses: mindsers/changelog-reader-action@v1 + with: + version: ${{ steps.tag_name.outputs.current_version }} + path: ./CHANGELOG.md + if: startsWith('refs/tags/v', github.ref) + + - name: Publish + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: ${{ matrix.artifact_name }} + tag: ${{ github.ref }} + asset_name: miniserve-$tag-${{ matrix.release_name }} + body: ${{ steps.changelog_reader.outputs.log_entry }} + if: startsWith('refs/tags/v', github.ref) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml deleted file mode 100644 index 064a0a0..0000000 --- a/.github/workflows/publish.yml +++ /dev/null @@ -1,170 +0,0 @@ -name: Publish - -on: - push: - tags: - - 'v*' - -jobs: - publish: - name: ${{ matrix.os }} for ${{ matrix.target }} - runs-on: ${{ matrix.os }} - strategy: - matrix: - target: - - x86_64-unknown-linux-musl - - aarch64-unknown-linux-musl - - armv7-unknown-linux-musleabihf - - arm-unknown-linux-musleabihf - - mips-unknown-linux-musl - - mipsel-unknown-linux-musl - - mips64-unknown-linux-gnuabi64 - - mips64el-unknown-linux-gnuabi64 - - riscv64gc-unknown-linux-gnu - - x86_64-pc-windows-msvc - - x86_64-apple-darwin - - x86_64-unknown-freebsd - include: - - os: ubuntu-latest - target: x86_64-unknown-linux-musl - artifact_name: target/x86_64-unknown-linux-musl/release/miniserve - release_name: x86_64-unknown-linux-musl - cross: true - strip: true - compress: true - cargo_flags: "" - - os: ubuntu-latest - target: aarch64-unknown-linux-musl - artifact_name: target/aarch64-unknown-linux-musl/release/miniserve - release_name: aarch64-unknown-linux-musl - cross: true - strip: false - compress: true - cargo_flags: "" - - os: ubuntu-latest - target: armv7-unknown-linux-musleabihf - artifact_name: target/armv7-unknown-linux-musleabihf/release/miniserve - release_name: armv7-unknown-linux-musleabihf - cross: true - strip: false - compress: true - cargo_flags: "" - - os: ubuntu-latest - target: arm-unknown-linux-musleabihf - artifact_name: target/arm-unknown-linux-musleabihf/release/miniserve - release_name: arm-unknown-linux-musleabihf - cross: true - strip: false - compress: true - cargo_flags: "" - - os: ubuntu-latest - target: mips-unknown-linux-musl - artifact_name: target/mips-unknown-linux-musl/release/miniserve - release_name: mips-unknown-linux-musl - cross: true - strip: false - compress: true - cargo_flags: "--no-default-features" - - os: ubuntu-latest - target: mipsel-unknown-linux-musl - artifact_name: target/mipsel-unknown-linux-musl/release/miniserve - release_name: mipsel-unknown-linux-musl - cross: true - strip: false - compress: true - cargo_flags: "--no-default-features" - - os: ubuntu-latest - target: mips64-unknown-linux-gnuabi64 - artifact_name: target/mips64-unknown-linux-gnuabi64/release/miniserve - release_name: mips64-unknown-linux-gnuabi64 - cross: true - strip: false - compress: false - cargo_flags: "--no-default-features" - - os: ubuntu-latest - target: mips64el-unknown-linux-gnuabi64 - artifact_name: target/mips64el-unknown-linux-gnuabi64/release/miniserve - release_name: mips64el-unknown-linux-gnuabi64 - cross: true - strip: false - compress: false - cargo_flags: "--no-default-features" - - os: ubuntu-latest - target: riscv64gc-unknown-linux-gnu - artifact_name: target/riscv64gc-unknown-linux-gnu/release/miniserve - release_name: riscv64gc-unknown-linux-gnu - cross: true - strip: false - compress: false - cargo_flags: "--no-default-features" - - os: windows-latest - target: x86_64-pc-windows-msvc - artifact_name: target/x86_64-pc-windows-msvc/release/miniserve.exe - release_name: x86_64-pc-windows-msvc.exe - cross: false - strip: true - compress: true - cargo_flags: "" - - os: macos-latest - target: x86_64-apple-darwin - artifact_name: target/x86_64-apple-darwin/release/miniserve - release_name: x86_64-apple-darwin - cross: false - strip: true - compress: true - cargo_flags: "" - - os: ubuntu-latest - target: x86_64-unknown-freebsd - artifact_name: target/x86_64-unknown-freebsd/release/miniserve - release_name: x86_64-unknown-freebsd - cross: true - strip: false - compress: false - cargo_flags: "" - - steps: - - name: Checkout code - uses: actions/checkout@v2 - - - name: Setup Rust toolchain - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - target: ${{ matrix.target }} - - - name: cargo build - uses: actions-rs/cargo@v1 - with: - command: build - args: --release --locked --target=${{ matrix.target }} ${{ matrix.cargo_flags }} - use-cross: ${{ matrix.cross }} - - - name: Compress binaries - uses: svenstaro/upx-action@v2 - with: - file: ${{ matrix.artifact_name }} - args: --lzma - strip: ${{ matrix.strip }} - if: ${{ matrix.compress }} - - - name: Get tag name - id: tag_name - run: | - echo ::set-output name=current_version::${GITHUB_REF#refs/tags/v} - shell: bash - - - name: Get CHANGELOG.md entry - id: changelog_reader - uses: mindsers/changelog-reader-action@v1 - with: - version: ${{ steps.tag_name.outputs.current_version }} - path: ./CHANGELOG.md - - - name: Release - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file: ${{ matrix.artifact_name }} - tag: ${{ github.ref }} - asset_name: miniserve-$tag-${{ matrix.release_name }} - body: ${{ steps.changelog_reader.outputs.log_entry }} -- cgit v1.2.3