mirror of
https://github.com/danbulant/oxc
synced 2026-05-21 13:18:59 +00:00
ci: add release_cli.yaml with build binary and upload artifact steps
This commit is contained in:
parent
b0c67c3a69
commit
825e27178c
2 changed files with 142 additions and 0 deletions
133
.github/workflows/release_cli.yaml
vendored
Normal file
133
.github/workflows/release_cli.yaml
vendored
Normal 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
9
npm/oxc/package.json
Normal 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"
|
||||
}
|
||||
Loading…
Reference in a new issue