Skip to content

Merge pull request #2255 from zowe/fix-workflows #59

Merge pull request #2255 from zowe/fix-workflows

Merge pull request #2255 from zowe/fix-workflows #59

name: Rust CLI Publish
on:
push:
branches:
- "master"
- "next"
paths:
- 'zowex/**'
- '.github/workflows/rust-cli*.yml'
permissions:
contents: write
jobs:
release:
name: Create GitHub Release
runs-on: ubuntu-latest
outputs:
ZOWEX_VERSION: ${{ steps.get-version.outputs.ZOWEX_VERSION }}
steps:
- uses: actions/checkout@v4
- name: Get version
id: get-version
working-directory: zowex
run: echo "ZOWEX_VERSION=$(cargo metadata --no-deps | jq -r .packages[0].version)" >> $GITHUB_OUTPUT
- name: Create Release
id: create_release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release create \
-n "Native Zowe CLI client which communicates with a 'daemon' version of Zowe CLI." \
-t "Native Client Release ${{ steps.get-version.outputs.ZOWEX_VERSION }}" \
native-v${{ steps.get-version.outputs.ZOWEX_VERSION }}
- uses: actions/upload-artifact@v4
with:
name: repo
path: |
zowex/**
!.git
build-linux:
name: Build Linux
needs: release
runs-on: ubuntu-latest
steps:
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- uses: actions/download-artifact@v4
with:
name: repo
- name: Prepare Cross
run: cargo install cross@0.2.5
# Need to build in container with old version of GLIBC to support RHEL 7
# https://kobzol.github.io/rust/ci/2021/05/07/building-rust-binaries-in-ci-that-work-with-older-glibc.html
- name: Build
run: cross build --verbose --release
- name: Create Archive
run: |
cd target/x86_64-unknown-linux-gnu/release
tar -cvzf zowe.tgz zowe
mv zowe.tgz zowe-linux.tgz
- name: Upload Release Asset
id: upload-release-asset
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: gh release upload native-v${{ needs.release.outputs.ZOWEX_VERSION }} target/x86_64-unknown-linux-gnu/release/zowe-linux.tgz --repo ${{ github.repository }}
build-macos:
name: Build MacOS
needs: release
runs-on: macos-latest
steps:
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: x86_64-apple-darwin
- uses: actions/download-artifact@v4
with:
name: repo
- name: Build
run: |
cargo build --verbose --release --target aarch64-apple-darwin
cargo build --verbose --release --target x86_64-apple-darwin
mkdir -p target/release && cd target/release
mv ../aarch64-apple-darwin/release/zowe zowe.aarch64 && mv ../x86_64-apple-darwin/release/zowe zowe.x86_64
lipo -create -output zowe zowe.aarch64 zowe.x86_64
# Use gtar instead of tar on MacOS to prevent extra `GNUSparseFile.0` directory
- name: Create Archive
run: |
cd target/release
gtar -cvzf zowe.tgz zowe
mv zowe.tgz zowe-macos.tgz
- name: Upload Release Asset
id: upload-release-asset
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: gh release upload native-v${{ needs.release.outputs.ZOWEX_VERSION }} target/release/zowe-macos.tgz --repo ${{ github.repository }}
build-windows:
name: Build Windows
needs: release
runs-on: windows-latest
steps:
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- uses: actions/download-artifact@v4
with:
name: repo
- name: Build
run: cargo build --verbose --release
env:
RUSTFLAGS: "-Ctarget-feature=+crt-static"
- name: Create Archive
run: |
cd target/release
tar -cvzf zowe.tgz zowe.exe
mv zowe.tgz zowe-windows.tgz
- name: Upload Release Asset
id: upload-release-asset
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: gh release upload native-v${{ needs.release.outputs.ZOWEX_VERSION }} target/release/zowe-windows.tgz --repo ${{ github.repository }}