Skip to content

ci(release): fix release ci #2

ci(release): fix release ci

ci(release): fix release ci #2

Workflow file for this run

name: Release(CLI)
on:
push:
tags:
- "*"
env:
APP_NAME: hkxc
CARGO_TERM_COLOR: always
jobs:
build:
strategy:
fail-fast: false
matrix:
# https://stackoverflow.com/questions/73642596/how-to-cross-compile-rust-across-operating-systems-and-cpu-architectures
job:
- {
target: aarch64-apple-darwin,
os: macos-latest,
asset: serde-hkx-cli-aarch64-apple-darwin.tar.gz,
}
- {
target: x86_64-pc-windows-msvc,
os: windows-latest,
asset: serde-hkx-cli-x86_64-pc-windows-msvc.zip,
}
- {
target: x86_64-unknown-linux-gnu,
os: ubuntu-latest,
asset: serde-hkx-cli-x86_64-unknown-linux-gnu.tar.gz,
}
runs-on: ${{ matrix.job.os }}
steps:
- uses: actions/checkout@v4.2.0
- name: Rust cache
uses: Swatinem/rust-cache@v2.7.3
with:
prefix-key: cargo-release-${{ matrix.job.target }}
- name: Build CLI
run: cargo build --release --target ${{ matrix.job.target }}
- name: Make outputs dir
run: mkdir -p ./build
# ----------------------------------------------------------------------------------------------------------------
- name: Compress outputs(Windows)
shell: pwsh
if: runner.os == 'Windows'
run: |
Move-Item -Path ./target/${{ matrix.job.target }}/release/${{ env.APP_NAME }}.exe -Destination './build'
Move-Item -Path ./LICENSES.toml -Destination './build'
Compress-Archive -Path './build/*' -DestinationPath './${{ matrix.job.asset }}'
- name: Release(Windows)
uses: ncipollo/release-action@v1.14.0
if: runner.os == 'Windows'
with:
artifacts: ${{ matrix.job.asset }}
bodyFile: ./docs/release.md
generateReleaseNotes: true
# ----------------------------------------------------------------------------------------------------------------
- name: Compress outputs(MacOS)
shell: bash
if: runner.os == 'macOS'
run: |
mv ./target/${{ matrix.job.target }}/release/${{ env.APP_NAME }} ./build
mv ./LICENSES.toml './build'
tar -czf ${{ matrix.job.asset }} -C ./build .
- name: Release(macOS)
uses: ncipollo/release-action@v1.14.0
if: runner.os == 'macOS'
with:
artifacts: ${{ matrix.job.asset }}
bodyFile: ./docs/release.md
generateReleaseNotes: true
# ----------------------------------------------------------------------------------------------------------------
- name: Compress outputs(Linux)
shell: bash
if: runner.os == 'Linux'
run: |
mv ./target/${{ matrix.job.target }}/release/${{ env.APP_NAME }} ./build
mv ./LICENSES.toml './build'
tar -czf ${{ matrix.job.asset }} -C ./build .
- name: Release(Linux)
uses: ncipollo/release-action@v1.14.0
if: runner.os == 'Linux'
with:
artifacts: ${{ matrix.job.asset }}
bodyFile: ./docs/release.md
generateReleaseNotes: true
build_extra:
strategy:
fail-fast: false
matrix:
# https://stackoverflow.com/questions/73642596/how-to-cross-compile-rust-across-operating-systems-and-cpu-architectures
job:
- {
target: aarch64-apple-darwin,
os: macos-latest,
asset: serde-hkx-cli-aarch64-apple-darwin-extra_fmt.tar.gz,
}
- {
target: x86_64-pc-windows-msvc,
os: windows-latest,
asset: serde-hkx-cli-x86_64-pc-windows-msvc-extra_fmt.zip,
}
- {
target: x86_64-unknown-linux-gnu,
os: ubuntu-latest,
asset: serde-hkx-cli-x86_64-unknown-linux-gnu-extra_fmt.tar.gz,
}
runs-on: ${{ matrix.job.os }}
steps:
- uses: actions/checkout@v4.2.0
- name: Rust cache
uses: Swatinem/rust-cache@v2.7.3
with:
prefix-key: cargo-release-${{ matrix.job.target }}
- name: Build CLI
run: cargo build --release --target ${{ matrix.job.target }} --features extra_fmt
- name: Make outputs dir
run: mkdir -p ./build
# ----------------------------------------------------------------------------------------------------------------
- name: Compress outputs(Windows)
shell: pwsh
if: runner.os == 'Windows'
run: |
Move-Item -Path ./target/${{ matrix.job.target }}/release/${{ env.APP_NAME }}.exe -Destination './build'
Move-Item -Path ./LICENSES.toml -Destination './build'
Compress-Archive -Path './build/*' -DestinationPath './${{ matrix.job.asset }}'
- name: Release(Windows)
uses: ncipollo/release-action@v1.14.0
if: runner.os == 'Windows'
with:
artifacts: ${{ matrix.job.asset }}
bodyFile: ./docs/release.md
generateReleaseNotes: true
# ----------------------------------------------------------------------------------------------------------------
- name: Compress outputs(MacOS)
shell: bash
if: runner.os == 'macOS'
run: |
mv ./target/${{ matrix.job.target }}/release/${{ env.APP_NAME }} ./build
mv ./LICENSES.toml './build'
tar -czf ${{ matrix.job.asset }} -C ./build .
- name: Release(macOS)
uses: ncipollo/release-action@v1.14.0
if: runner.os == 'macOS'
with:
artifacts: ${{ matrix.job.asset }}
bodyFile: ./docs/release.md
generateReleaseNotes: true
# ----------------------------------------------------------------------------------------------------------------
- name: Compress outputs(Linux)
shell: bash
if: runner.os == 'Linux'
run: |
mv ./target/${{ matrix.job.target }}/release/${{ env.APP_NAME }} ./build
mv ./LICENSES.toml './build'
tar -czf ${{ matrix.job.asset }} -C ./build .
- name: Release(Linux)
uses: ncipollo/release-action@v1.14.0
if: runner.os == 'Linux'
with:
artifacts: ${{ matrix.job.asset }}
bodyFile: ./docs/release.md
generateReleaseNotes: true