name: Release builds (dispatch)
on:
workflow_dispatch:
jobs:
build-windows:
runs-on: windows-latest
name: Release build for Windows
steps:
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- uses: actions/checkout@v4
- name: Build release binary
run: cargo build --release
env:
RUSTFLAGS: '-C target-feature=+crt-static'
- uses: actions/upload-artifact@v4
with:
name: awsbck-windows
path: target/release/awsbck.exe
build-macos:
runs-on: macos-latest
name: Release build for macOS
steps:
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- uses: actions/checkout@v4
- name: Build release binary
run: cargo build --release
env:
LZMA_API_STATIC: 'true'
- uses: actions/upload-artifact@v4
with:
name: awsbck-macos
path: target/release/awsbck
build-macos-arm:
runs-on: macos-latest
name: Release build for macOS aarch64
steps:
- uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: '14.2'
- uses: dtolnay/rust-toolchain@stable
with:
targets: aarch64-apple-darwin
- uses: Swatinem/rust-cache@v2
- uses: actions/checkout@v4
- name: Build release binary
run: |
SDKROOT=$(xcrun -sdk macosx13.1 --show-sdk-path) \
MACOS_DEPLOYMENT_TARGET=$(xcrun -sdk macosx13.1 --show-sdk-platform-version) \
cargo build --release --target=aarch64-apple-darwin
env:
LZMA_API_STATIC: 'true'
- uses: actions/upload-artifact@v4
with:
name: awsbck-macos-aarch64
path: target/aarch64-apple-darwin/release/awsbck
build-linux:
runs-on: ubuntu-latest
name: Release build for linux x86_64
steps:
- uses: dtolnay/rust-toolchain@stable
with:
targets: x86_64-unknown-linux-musl
- uses: Swatinem/rust-cache@v2
- name: Install musl tools
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends musl-tools
- uses: actions/checkout@v4
- name: Build release binary
run: cargo build --release --target x86_64-unknown-linux-musl
- uses: actions/upload-artifact@v4
with:
name: awsbck-linux
path: target/x86_64-unknown-linux-musl/release/awsbck
build-arm:
name: Release builds for linux ARM
runs-on: ubuntu-latest
strategy:
matrix:
include:
- target: aarch64-unknown-linux-musl
arch: aarch64
- target: armv7-unknown-linux-gnueabihf
arch: armv7
steps:
- uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- uses: Swatinem/rust-cache@v2
- run: cargo install cross --git https://github.com/cross-rs/cross
- uses: actions/checkout@v4
- run: cross build --release --target ${{ matrix.target }}
- uses: actions/upload-artifact@v4
with:
name: awsbck-${{ matrix.arch }}
path: target/${{ matrix.target }}/release/awsbck
update-release:
needs: [build-linux, build-arm, build-windows, build-macos, build-macos-arm]
name: Update GitHub release
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- name: extract version from Cargo.toml
uses: SebRollen/toml-action@v1.2.0
id: version
with:
file: Cargo.toml
field: package.version
- name: download all artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
- name: create release directory
run: mkdir release
- name: create release files
run: |
tar -C ./artifacts/awsbck-linux -czvf ./release/awsbck-v${{ steps.version.outputs.value }}-linux-x64.tar.gz awsbck
tar -C ./artifacts/awsbck-aarch64 -czvf ./release/awsbck-v${{ steps.version.outputs.value }}-linux-aarch64.tar.gz awsbck
tar -C ./artifacts/awsbck-armv7 -czvf ./release/awsbck-v${{ steps.version.outputs.value }}-linux-armv7.tar.gz awsbck
zip -j ./release/awsbck-v${{ steps.version.outputs.value }}-windows.zip ./artifacts/awsbck-windows/awsbck.exe
zip -j ./release/awsbck-v${{ steps.version.outputs.value }}-macos.zip ./artifacts/awsbck-macos/awsbck
zip -j ./release/awsbck-v${{ steps.version.outputs.value }}-macos-aarch64.zip ./artifacts/awsbck-macos-aarch64/awsbck
- name: upload linux-x64 to release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: release/awsbck-v${{ steps.version.outputs.value }}-linux-x64.tar.gz
tag: refs/tags/v${{ steps.version.outputs.value }}
- name: upload linux-aarch64 to release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: release/awsbck-v${{ steps.version.outputs.value }}-linux-aarch64.tar.gz
tag: refs/tags/v${{ steps.version.outputs.value }}
- name: upload linux-armv7 to release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: release/awsbck-v${{ steps.version.outputs.value }}-linux-armv7.tar.gz
tag: refs/tags/v${{ steps.version.outputs.value }}
- name: upload windows to release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: release/awsbck-v${{ steps.version.outputs.value }}-windows.zip
tag: refs/tags/v${{ steps.version.outputs.value }}
- name: upload macos to release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: release/awsbck-v${{ steps.version.outputs.value }}-macos.zip
tag: refs/tags/v${{ steps.version.outputs.value }}
- name: upload macos-aarch64 to release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: release/awsbck-v${{ steps.version.outputs.value }}-macos-aarch64.zip
tag: refs/tags/v${{ steps.version.outputs.value }}