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 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 From 503f4e691e8fdb2ce57b3ca013c234281e959cc7 Mon Sep 17 00:00:00 2001 From: Sven-Hendrik Haase Date: Sun, 29 Aug 2021 05:08:10 +0200 Subject: Use custom freebsd image until cross is fixed --- Cross.toml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Cross.toml b/Cross.toml index a7a84ad..3d4088a 100644 --- a/Cross.toml +++ b/Cross.toml @@ -1,3 +1,5 @@ # NOTE: Custom image specification for freebsd is required until new version of cross is released. +# Also we'll have to use a custom image until https://github.com/rust-embedded/cross/pull/582 is +# merged and released on Docker Hub. [target.x86_64-unknown-freebsd] -image = "rustembedded/cross:x86_64-unknown-freebsd" +image = "svenstaro/cross-x86_64-unknown-freebsd" -- cgit v1.2.3