Skip to content

Build CLI Artifacts #16

Build CLI Artifacts

Build CLI Artifacts #16

name: Build CLI Artifacts
on:
workflow_dispatch:
workflow_call:
jobs:
build_cli_linux:
name: Building CLI for ${{ matrix.target }}
runs-on: ubuntu-latest
strategy:
matrix:
target:
- linux-x86_64-gnu
- linux-x86_64-musl
- linux-i686-gnu
- linux-i686-musl
- linux-aarch64-gnu
- linux-aarch64-musl
- linux-armv7-gnu
- linux-armv7-musl
include:
- target: linux-x86_64-gnu
arch: x86_64-unknown-linux-gnu
- target: linux-x86_64-musl
arch: x86_64-unknown-linux-musl
- target: linux-i686-gnu
arch: i686-unknown-linux-gnu
- target: linux-i686-musl
arch: i686-unknown-linux-musl
- target: linux-aarch64-gnu
arch: aarch64-unknown-linux-gnu
- target: linux-aarch64-musl
arch: aarch64-unknown-linux-musl
- target: linux-armv7-gnu
arch: armv7-unknown-linux-gnueabihf
- target: linux-armv7-musl
arch: armv7-unknown-linux-musleabihf
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@stable
- name: Install cross
run: cargo install cross
- name: Build Linux CLI binaries
run: cross build --verbose -p xmodits --release --target ${{ matrix.arch }} --features="with_metadata"
- name: Create ./bin directory
run: mkdir -p bin
- name: Tarball Linux CLI binary
run: |
tar -czf bin/xmodits-cli-${{ matrix.target }}.tar.gz -C target/${{matrix.arch}}/release/ xmodits
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: xmodits-cli-${{ matrix.target }}
path: |
bin/xmodits-cli-${{ matrix.target }}.*
build_cli_macos:
name: Building CLI for ${{ matrix.target }}
runs-on: macOS-latest
strategy:
matrix:
target:
- macos-intel
- macos-apple-silicon # TODO: make this a separate task?
include:
- target: macos-intel
arch: x86_64-apple-darwin
- target: macos-apple-silicon
arch: aarch64-apple-darwin
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@stable
with:
target: ${{ matrix.arch }}
- name: Build macOS CLI binary
run: cargo build --verbose -p xmodits --release --features="with_metadata"
- name: Create ./bin directory
run: mkdir -p bin
- name: Zip macOS CLI binary
run: |
echo $(rm target/release/*xmodits-cli)
mv target/release/xmodits target/release/xmodits-cli
chmod +x target/release/xmodits-cli
zip -j ./bin/xmodits-cli-${{ matrix.target }}.zip target/release/xmodits-cli
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: xmodits-cli-${{ matrix.target }}
path: |
bin/xmodits-cli-${{ matrix.target }}.*
build_cli_windows:
name: Building CLI for ${{ matrix.target }}
runs-on: windows-latest
strategy:
matrix:
target:
- windows-64-bit
- windows-32-bit
include:
- target: windows-64-bit
arch: x86_64-pc-windows-msvc
- target: windows-32-bit
arch: i686-pc-windows-msvc
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@stable
with:
target: ${{ matrix.arch }}
- name: Install Windows 32 bit target
if: matrix.arch == 'i686-pc-windows-msvc'
run: | # Install 32-bit target and make it the default
rustup target add i686-pc-windows-msvc && rustup default stable-i686-pc-windows-msvc
- name: Build Windows CLI binary
run: cargo build --verbose -p xmodits --release --features="with_metadata"
- name: Create ./bin directory
run: mkdir -p bin
- name: Zip Windows CLI binary
run: | # On Windows, add cli suffix
rm target/release/*xmodits-cli.exe
mv target/release/xmodits.exe target/release/xmodits-cli.exe
Compress-Archive target/release/xmodits-cli.exe bin/xmodits-cli-${{ matrix.target }}.zip
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: xmodits-cli-${{ matrix.target }}
path: |
bin/xmodits-cli-${{ matrix.target}}.*