Skip to content

feat: CLI Device auth flow #12

feat: CLI Device auth flow

feat: CLI Device auth flow #12

name: "🎁 Build CLI Binary"
on:
push:
branches: [main]
paths:
- "packages/gensx-cli/**/*"
pull_request:
branches: [main]
paths:
- "packages/gensx-cli/**/*"
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
target:
- node22-linux-arm64
- node22-linux-x64
- node22-macos-arm64
- node22-macos-x64
- node22-win-arm64
- node22-win-x64
steps:
- uses: actions/checkout@v4
- name: "Sanitize Branch Name"
id: sanitize-branch-name
uses: transferwise/sanitize-branch-name@v1
- name: Setup Node ⚙️
uses: ./.github/actions/setup-node
with:
version: 20.x
- name: Extract Version from Package.json for main
if: github.ref == 'refs/heads/main'
run: |
VERSION=$(jq -r '.version' packages/gensx-cli/package.json)
echo "VERSION=$VERSION" >> $GITHUB_ENV
- name: Extract Version from Package.json for CI
if: github.ref != 'refs/heads/main'
run: |
VERSION=$(jq -r '.version' packages/gensx-cli/package.json)
echo "VERSION=${{ steps.sanitize-branch-name.outputs.sanitized-branch-name }}-${{ github.sha }}" >> $GITHUB_ENV
- name: Build CLI
run: pnpm build
working-directory: packages/gensx-cli
- name: Building...
run: TARGET=${{ matrix.target }} pnpm run package
working-directory: packages/gensx-cli
- name: Prepare content...
run: |
mv README.md dist/pkg
working-directory: packages/gensx-cli
- name: Setup environment (Unix)
if: contains(fromJSON('["node22-linux-arm64", "node22-linux-x64", "node22-macos-arm64", "node22-macos-x64"]'), matrix.target)
run: |
echo "_EXT=tar.gz" >> $GITHUB_ENV
- name: Setup environment (Windows)
if: contains(fromJSON('["node22-win-arm64", "node22-win-x64"]'), matrix.target)
run: |
echo "_EXT=zip" >> $GITHUB_ENV
- name: Change permissions (Unix)
if: contains(fromJSON('["node22-linux-arm64", "node22-linux-x64", "node22-macos-arm64", "node22-macos-x64"]'), matrix.target)
run: |
chmod -R 777 ./dist/pkg
working-directory: packages/gensx-cli
- name: Tar dist (Unix)
if: contains(fromJSON('["node22-linux-arm64", "node22-linux-x64", "node22-macos-arm64", "node22-macos-x64"]'), matrix.target)
run: |
tar czf ${{ matrix.target }}.${{ env._EXT }} -C ./dist/pkg .
cp ${{ matrix.target }}.${{ env._EXT }} gensx_${{ env.VERSION }}_${{ matrix.target }}.${{ env._EXT }}
working-directory: packages/gensx-cli
- name: Zipping dist (Windows)
if: contains(fromJSON('["win-arm64", "win-x64"]'), matrix.target)
working-directory: packages/gensx-cli/dist/pkg
run: |
zip -r ${{ matrix.target }}.${{ env._EXT }} .
mv ${{ matrix.target }}.${{ env._EXT }} ../../
cd ../..
cp ${{ matrix.target }}.${{ env._EXT }} gensx_${{ env.VERSION }}_${{ matrix.target }}.${{ env._EXT }}
- name: Uploading Artifact
if: github.ref != 'refs/heads/main'
uses: actions/upload-artifact@v4
with:
name: gensx_${{ env.VERSION }}_${{ matrix.target }}.${{ env._EXT }}
path: packages/gensx-cli/gensx_${{ env.VERSION }}_${{ matrix.target }}.${{ env._EXT }}
- name: Uploading Release
if: github.ref == 'refs/heads/main'
uses: softprops/action-gh-release@v2.0.8
with:
tag_name: gensx-cli-binary-v${{ env.VERSION }}
token: ${{ secrets.PAT_GITHUB_TOKEN }}
prerelease: true
files: packages/gensx-cli/gensx_${{ env.VERSION }}_${{ matrix.target }}.${{ env._EXT }}