From 825e27178c19b86298365c90db99f0cd74945246 Mon Sep 17 00:00:00 2001 From: Boshen Date: Tue, 28 Feb 2023 21:43:36 +0800 Subject: [PATCH] ci: add release_cli.yaml with build binary and upload artifact steps --- .github/workflows/release_cli.yaml | 133 +++++++++++++++++++++++++++++ npm/oxc/package.json | 9 ++ 2 files changed, 142 insertions(+) create mode 100644 .github/workflows/release_cli.yaml create mode 100644 npm/oxc/package.json diff --git a/.github/workflows/release_cli.yaml b/.github/workflows/release_cli.yaml new file mode 100644 index 000000000..266e52af6 --- /dev/null +++ b/.github/workflows/release_cli.yaml @@ -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 diff --git a/npm/oxc/package.json b/npm/oxc/package.json new file mode 100644 index 000000000..9a1a3939a --- /dev/null +++ b/npm/oxc/package.json @@ -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" +}