Skip to content

Merge pull request #1766 from zowe/feat/daemon-macos-universal #48

Merge pull request #1766 from zowe/feat/daemon-macos-universal

Merge pull request #1766 from zowe/feat/daemon-macos-universal #48

name: Rust CLI Publish
on:
push:
branches:
- "master"
- "next"
paths:
- 'zowex/**'
- '.github/workflows/rust-cli*.yml'
jobs:
release:
name: Create GitHub Release
runs-on: ubuntu-latest
outputs:
ZOWEX_VERSION: ${{ steps.get-version.outputs.ZOWEX_VERSION }}
steps:
- uses: actions/checkout@v3
- 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
uses: ncipollo/release-action@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag: native-v${{ steps.get-version.outputs.ZOWEX_VERSION }}
name: Native Client Release ${{ steps.get-version.outputs.ZOWEX_VERSION }}
body: |
Native Zowe CLI client which communicates with a "daemon" version of Zowe CLI.
draft: false
prerelease: false
- uses: actions/upload-artifact@v3
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@v3
with:
name: repo
- name: Prepare Cross
run: cargo install [email protected]
# 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
uses: ncipollo/release-action@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag: native-v${{ needs.release.outputs.ZOWEX_VERSION }}
name: Native Client Release ${{ needs.release.outputs.ZOWEX_VERSION }}
allowUpdates: true
artifacts: target/x86_64-unknown-linux-gnu/release/zowe-linux.tgz
artifactContentType: application/octet-stream
removeArtifacts: false
replacesArtifacts: false
build-macos:
name: Build MacOS
needs: release
runs-on: macos-latest
steps:
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: aarch64-apple-darwin
- uses: actions/download-artifact@v3
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
- name: Create Archive
run: |
cd target/release
tar -cvzf zowe.tgz zowe
mv zowe.tgz zowe-macos.tgz
- name: Upload Release Asset
id: upload-release-asset
uses: ncipollo/release-action@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag: native-v${{ needs.release.outputs.ZOWEX_VERSION }}
name: Native Client Release ${{ needs.release.outputs.ZOWEX_VERSION }}
allowUpdates: true
artifacts: target/release/zowe-macos.tgz
artifactContentType: application/octet-stream
removeArtifacts: false
replacesArtifacts: false
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@v3
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
uses: ncipollo/release-action@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag: native-v${{ needs.release.outputs.ZOWEX_VERSION }}
name: Native Client Release ${{ needs.release.outputs.ZOWEX_VERSION }}
allowUpdates: true
artifacts: target/release/zowe-windows.tgz
artifactContentType: application/octet-stream
removeArtifacts: false
replacesArtifacts: false