Merge pull request #94 from arkedge/renovate/tokio-util-0.x-lockfile #67
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Release | |
on: | |
push: | |
branches: | |
- main | |
tags: ['v*'] | |
pull_request: | |
branches: | |
- main | |
paths: | |
- .github/workflows/release.yml | |
env: | |
# renovate: datasource=github-releases depName=EmbarkStudios/cargo-about | |
CARGO_ABOUT_VERSION: 0.6.4 | |
jobs: | |
build: | |
runs-on: ubuntu-24.04 | |
strategy: | |
fail-fast: true | |
matrix: | |
target: | |
- x86_64-unknown-linux-musl | |
- aarch64-unknown-linux-musl | |
steps: | |
- uses: actions/[email protected] | |
- name: install apt depenedencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y musl-tools | |
- name: install aarch64 linker | |
if: matrix.target == 'aarch64-unknown-linux-musl' | |
run: | | |
sudo apt-get install -y gcc-aarch64-linux-gnu | |
- name: Get Rust toolchain | |
id: toolchain | |
working-directory: . | |
run: | | |
awk -F'[ ="]+' '$1 == "channel" { print "toolchain=" $2 }' rust-toolchain >> "$GITHUB_OUTPUT" | |
- uses: dtolnay/rust-toolchain@v1 | |
with: | |
toolchain: ${{ steps.toolchain.outputs.toolchain }} | |
targets: ${{ matrix.target }} | |
- uses: Swatinem/[email protected] | |
- name: install cargo-about | |
run: | | |
cargo install --locked cargo-about --version ${{ env.CARGO_ABOUT_VERSION }} | |
- name: Build | |
run: | | |
cargo build --target=${{ matrix.target }} --release --locked | |
- name: Rename binaries | |
run: | | |
mkdir bin | |
kble_bins=("kble" "kble-c2a" "kble-dump" "kble-eb90" "kble-serialport" "kble-tcp") | |
for b in "${kble_bins[@]}" ; do | |
cp "./target/${{ matrix.target }}/release/${b}" "./bin/${b}-${{ matrix.target }}" | |
done | |
ls -lh ./bin | |
- uses: actions/[email protected] | |
with: | |
name: release-executable-${{ matrix.target }} | |
if-no-files-found: error | |
path: ./bin/ | |
build_kble_serialport_win: | |
name: build / kble-serialport.exe | |
# C2A Boom ecosystem does **NOT** support native Windows environment. | |
# However, WSL2 environment is supported and has many use cases in the real world. | |
# Here, there are difficulties in running kble-serialport inside WSL2, | |
# a component that interfaces with external hardware (USB-RS devices). | |
# Although it is possible to show a Windows host USB devices | |
# to a WSL2 Linux VM using the usbipd-win project, this is still a bit unstable. | |
# Also, kble-serialport is a very small component that does not need to be updated frequently for practical use. | |
# For these reasons, we currently choose to run only kble-serialport on Windows host. | |
runs-on: windows-2022 | |
env: | |
TARGET: x86_64-pc-windows-msvc | |
steps: | |
- uses: actions/[email protected] | |
- name: Get Rust toolchain | |
id: toolchain | |
working-directory: . | |
shell: bash | |
run: | | |
awk -F'[ ="]+' '$1 == "channel" { print "toolchain=" $2 }' rust-toolchain >> "$GITHUB_OUTPUT" | |
- uses: dtolnay/rust-toolchain@v1 | |
with: | |
toolchain: ${{ steps.toolchain.outputs.toolchain }} | |
targets: ${{ env.TARGET }} | |
- uses: Swatinem/[email protected] | |
- name: install cargo-about | |
run: | | |
cargo install --locked cargo-about --version ${{ env.CARGO_ABOUT_VERSION }} | |
- name: Build | |
run: | | |
cargo build --target=${{ env.TARGET }} -p kble-serialport --release --locked | |
- name: Rename binary | |
shell: bash | |
run: | | |
mkdir bin | |
cp "./target/${{ env.TARGET }}/release/kble-serialport.exe" "./bin/kble-serialport-${{ env.TARGET }}.exe" | |
ls -lh ./bin | |
- uses: actions/[email protected] | |
with: | |
name: release-executable-${{ env.TARGET }} | |
if-no-files-found: error | |
path: ./bin/ | |
publish_dry_run: | |
name: publish (dry-run) | |
runs-on: ubuntu-24.04 | |
steps: | |
- uses: actions/[email protected] | |
- name: Get Rust toolchain | |
id: toolchain | |
working-directory: . | |
run: | | |
awk -F'[ ="]+' '$1 == "channel" { print "toolchain=" $2 }' rust-toolchain >> "$GITHUB_OUTPUT" | |
- uses: dtolnay/rust-toolchain@v1 | |
with: | |
toolchain: ${{ steps.toolchain.outputs.toolchain }} | |
- uses: Swatinem/[email protected] | |
- name: install cargo-about | |
run: | | |
cargo install --locked cargo-about --version ${{ env.CARGO_ABOUT_VERSION }} | |
- name: cargo publish (dry-run) | |
run: | | |
crates=("kble" "kble-socket" "kble-c2a" "kble-dump" "kble-eb90" "kble-serialport" "kble-tcp") | |
for c in "${crates[@]}" ; do | |
cargo publish --dry-run -p "${c}" | |
echo "" | |
# shellcheck disable=SC2086 | |
ls -lh ./target/package/${c}-*/ | |
done | |
ls -lh ./target/package | |
release: | |
name: Release | |
needs: [ build, build_kble_serialport_win, publish_dry_run ] | |
permissions: | |
contents: write | |
runs-on: ubuntu-24.04 | |
steps: | |
- uses: actions/[email protected] | |
with: | |
pattern: release-executable-* | |
merge-multiple: true | |
- run: chmod +x kble-* | |
- run: ls -lh | |
- name: Release to GitHub Release | |
if: startsWith(github.ref, 'refs/tags/') | |
uses: softprops/[email protected] | |
with: | |
draft: true | |
fail_on_unmatched_files: true | |
generate_release_notes: true | |
files: | | |
kble* |