Build CLI Artifacts #16
This file contains hidden or 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: 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}}.* |