diff --git a/.github/workflows/package-binary-manual.yml b/.github/workflows/package-binary-manual.yml new file mode 100644 index 00000000..97b69fb3 --- /dev/null +++ b/.github/workflows/package-binary-manual.yml @@ -0,0 +1,152 @@ +# This Github action workflow is for manually triggered packaging workflows. +# We need this, since the packaging workflow failed and there's on proper way to fix this +# afterwards without a dedicated workflow +name: Manual packaging workflow + +on: + workflow_dispatch: + inputs: + use_upx: + description: Whether to compress the binary with upx. + default: 'yes' + required: true + tag: + description: The tag the binaries should be build for. + required: true + + +jobs: + publish: + name: Publish on ${{ 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 + - x86_64-pc-windows-msvc + - x86_64-apple-darwin + - aarch64-apple-ios + include: + - os: ubuntu-latest + target: x86_64-unknown-linux-musl + client_artifact_name: target/x86_64-unknown-linux-musl/release/pueue + daemon_artifact_name: target/x86_64-unknown-linux-musl/release/pueued + client_release_name: pueue-linux-x86_64 + daemon_release_name: pueued-linux-x86_64 + cross: true + strip: true + - os: ubuntu-latest + target: aarch64-unknown-linux-musl + client_artifact_name: target/aarch64-unknown-linux-musl/release/pueue + daemon_artifact_name: target/aarch64-unknown-linux-musl/release/pueued + client_release_name: pueue-linux-aarch64 + daemon_release_name: pueued-linux-aarch64 + cross: true + strip: false + - os: ubuntu-latest + target: armv7-unknown-linux-musleabihf + client_artifact_name: target/armv7-unknown-linux-musleabihf/release/pueue + daemon_artifact_name: target/armv7-unknown-linux-musleabihf/release/pueued + client_release_name: pueue-linux-armv7 + daemon_release_name: pueued-linux-armv7 + cross: true + strip: false + - os: ubuntu-latest + target: arm-unknown-linux-musleabihf + client_artifact_name: target/arm-unknown-linux-musleabihf/release/pueue + daemon_artifact_name: target/arm-unknown-linux-musleabihf/release/pueued + client_release_name: pueue-linux-arm + daemon_release_name: pueued-linux-arm + cross: true + strip: false + - os: windows-latest + target: x86_64-pc-windows-msvc + client_artifact_name: target/x86_64-pc-windows-msvc/release/pueue.exe + daemon_artifact_name: target/x86_64-pc-windows-msvc/release/pueued.exe + client_release_name: pueue-windows-x86_64.exe + daemon_release_name: pueued-windows-x86_64.exe + cross: false + strip: true + - os: macos-latest + target: x86_64-apple-darwin + client_artifact_name: target/x86_64-apple-darwin/release/pueue + daemon_artifact_name: target/x86_64-apple-darwin/release/pueued + client_release_name: pueue-macos-x86_64 + daemon_release_name: pueued-macos-x86_64 + cross: false + strip: true + - os: macos-latest + target: aarch64-apple-ios + client_artifact_name: target/aarch64-apple-ios/release/pueue + daemon_artifact_name: target/aarch64-apple-ios/release/pueued + client_release_name: pueue-ios-aarch64 + daemon_release_name: pueued-ios-aarch64 + cross: false + strip: true + + + steps: + - name: Checkout code + uses: actions/checkout@v3 + with: + ref: ${{ github.event.inputs.tag }} + + - name: Setup Rust toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + target: ${{ matrix.target }} + override: true + + - name: cargo build + uses: actions-rs/cargo@v1 + with: + command: build + args: --release --locked --target=${{ matrix.target }} + use-cross: ${{ matrix.cross }} + + - name: Compress client + uses: svenstaro/upx-action@v2 + with: + file: ${{ matrix.client_artifact_name }} + args: --lzma + strip: ${{ matrix.strip }} + if: ${{ github.event.inputs.use_upx == 'yes' }} + + - name: Compress daemon + uses: svenstaro/upx-action@v2 + with: + file: ${{ matrix.daemon_artifact_name }} + args: --lzma + strip: ${{ matrix.strip }} + if: ${{ github.event.inputs.use_upx == 'yes' }} + + - name: Upload client binaries to release + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: ${{ matrix.client_artifact_name }} + asset_name: ${{ matrix.client_release_name }} + tag: ${{ github.event.inputs.tag }} + overwrite: true + + - name: Upload daemon binaries to release + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: ${{ matrix.daemon_artifact_name }} + asset_name: ${{ matrix.daemon_release_name }} + tag: ${{ github.event.inputs.tag }} + overwrite: true + + - uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: utils/pueued.service + tag: ${{ github.event.inputs.tag }} + asset_name: systemd.pueued.service + body: ${{ steps.changelog_reader.outputs.log_entry }} + if: matrix.target == 'x86_64-unknown-linux-musl'