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 +++++++++++++++++++++++++++ 1 file changed, 174 insertions(+) create mode 100644 .github/workflows/build-release-binaries.yml (limited to '.github/workflows/build-release-binaries.yml') 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) -- cgit v1.2.3