diff options
Diffstat (limited to '.github/workflows/build-release-binaries.yml')
-rw-r--r-- | .github/workflows/build-release-binaries.yml | 174 |
1 files changed, 174 insertions, 0 deletions
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) |