ci: add release_cli.yaml with build binary and upload artifact steps

This commit is contained in:
Boshen 2023-02-28 21:43:36 +08:00
parent b0c67c3a69
commit 825e27178c
2 changed files with 142 additions and 0 deletions

133
.github/workflows/release_cli.yaml vendored Normal file
View file

@ -0,0 +1,133 @@
# Code copied from [rome](https://github.com/rome/tools/blob/main/.github/workflows/release_cli.yml)
name: Release CLI
on:
workflow_run:
workflows: [check]
types: [completed]
workflow_dispatch:
push:
branches:
- main
paths:
- npm/oxc/package.json
jobs:
check:
name: Check version
runs-on: ubuntu-latest
outputs:
version: ${{ env.version }}
version_changed: ${{ steps.version.outputs.changed }}
steps:
- uses: actions/checkout@v3
- name: Check version changes
uses: EndBug/version-check@v1
id: version
with:
diff-search: true
file-name: npm/oxc/package.json
- name: Set version name
if: steps.version.outputs.changed == 'true'
run: |
echo "Version change found! New version: ${{ steps.version.outputs.version }} (${{ steps.version.outputs.version_type }})"
echo "version=${{ steps.version.outputs.version }}" >> $GITHUB_ENV
build:
needs: check
if: ${{ github.event.workflow_run.conclusion == 'success' }} && needs.check.outputs.version_changed == 'true'
env:
version: ${{ needs.check.outputs.version }}
outputs:
version: ${{ env.version }}
strategy:
matrix:
include:
- os: windows-2022
target: x86_64-pc-windows-msvc
code-target: win32-x64
- os: windows-2022
target: aarch64-pc-windows-msvc
code-target: win32-arm64
- os: ubuntu-20.04
target: x86_64-unknown-linux-gnu
code-target: linux-x64
- os: ubuntu-20.04
target: aarch64-unknown-linux-gnu
code-target: linux-arm64
- os: macos-11
target: x86_64-apple-darwin
code-target: darwin-x64
- os: macos-11
target: aarch64-apple-darwin
code-target: darwin-arm64
name: Package ${{ matrix.code-target }}
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- name: Install Rust toolchain
run: rustup target add ${{ matrix.target }}
- name: Install arm64 toolchain
if: matrix.code-target == 'linux-arm64'
run: |
sudo apt-get update
sudo apt-get install -y gcc-aarch64-linux-gnu
- name: Cache
uses: Swatinem/rust-cache@v2
with:
shared-key: release-${{ matrix.target }}
- name: Build Binary
run: cargo build --release -p oxc_cli --target ${{ matrix.target }}
env:
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc
RUSTFLAGS: "-C strip=symbols"
- name: Copy Binary
if: matrix.os == 'windows-2022'
run: |
mkdir dist
cp target/${{ matrix.target }}/release/oxc_cli.exe ./dist/oxc-${{ matrix.code-target }}.exe
- name: Copy Binary
if: matrix.os != 'windows-2022'
run: |
mkdir dist
cp target/${{ matrix.target }}/release/oxc_cli ./dist/oxc-${{ matrix.code-target }}
- name: Upload Artifact
uses: actions/upload-artifact@v3
with:
name: cli
path: ./dist/oxc-*
if-no-files-found: error
publish:
name: Publish
runs-on: ubuntu-latest
needs:
- build
steps:
- uses: actions/checkout@v3
- name: Download Artifacts
uses: actions/download-artifact@v3
with:
name: cli
- name: Create GitHub release and tag
uses: softprops/action-gh-release@v1
with:
name: CLI v${{ needs.build.outputs.version }}
# tag_name: cli/v${{ needs.build.outputs.version }}
draft: true
files: |
oxc-*
fail_on_unmatched_files: true
generate_release_notes: true

9
npm/oxc/package.json Normal file
View file

@ -0,0 +1,9 @@
{
"name": "oxc",
"version": "0.0.0",
"description": "The JavaScript Oxidation Compiler",
"main": "index.js",
"keywords": [],
"author": "Boshen and oxc contributors",
"license": "MIT"
}