From 75b3d2b6edd1fc1efc1cd6a7ece22233bbb15cf9 Mon Sep 17 00:00:00 2001 From: MedzikUser Date: Sun, 23 Jan 2022 14:15:20 +0100 Subject: [PATCH] add binary publish --- .github/workflows/build-release-binaries.yml | 118 +++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 .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..925d523 --- /dev/null +++ b/.github/workflows/build-release-binaries.yml @@ -0,0 +1,118 @@ +name: Build release binaries (and publish them if this is a tag) + +on: [push, pull_request] + +jobs: + binaries: + strategy: + matrix: + target: + - x86_64-unknown-linux-gnu + - x86_64-unknown-linux-musl + - x86_64-pc-windows-msvc + - x86_64-apple-darwin + - x86_64-unknown-freebsd + include: + - os: ubuntu-latest + target: x86_64-unknown-linux-gnu + artifact_name: target/x86_64-unknown-linux-gnu/release/imgurs + release_name: x86_64-unknown-linux-gnu + cross: true + strip: true + compress: true + cargo_flags: "" + - os: ubuntu-latest + target: x86_64-unknown-linux-musl + artifact_name: target/x86_64-unknown-linux-musl/release/imgurs + release_name: x86_64-unknown-linux-musl + cross: true + strip: true + compress: true + cargo_flags: "" + - os: windows-latest + target: x86_64-pc-windows-msvc + artifact_name: target/x86_64-pc-windows-msvc/release/imgurs.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/imgurs + 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/imgurs + release_name: x86_64-unknown-freebsd + cross: true + strip: false + compress: false + cargo_flags: "" + + name: ${{ matrix.os }} for ${{ matrix.target }} + runs-on: ${{ matrix.os } + + 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: Upload artifact + uses: actions/upload-artifact@v2 + with: + name: ${{ matrix.target }} + path: ${{ matrix.artifact_name }} + + ### + # 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(github.ref, 'refs/tags/v') + + - 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(github.ref, 'refs/tags/v') + + - 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(github.ref, 'refs/tags/v')