swc/.github/workflows/publish.yml
Donny/강동윤 e755bce438
chore: Implement Verify release with ecosystem (#9064)
**Description:**

This is a follow-up PR for https://github.com/swc-project/swc/pull/9062. This PR integrates swc-ecosystem-ci to publish pipeline. For faster debugging, I disabled the build process.
2024-06-17 08:58:52 +09:00

145 lines
4.4 KiB
YAML

name: "Publish"
env:
CI: 1
# 7 GiB by default on GitHub, setting to 6 GiB
# https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources
NODE_OPTIONS: --max-old-space-size=6144
GIT_AUTHOR_NAME: "SWC Bot"
GIT_AUTHOR_EMAIL: "bot@swc.rs"
GIT_COMMITTER_NAME: "SWC Bot"
GIT_COMMITTER_EMAIL: "bot@swc.rs"
# https://github.com/actions/setup-node/issues/899#issuecomment-1819151595
SKIP_YARN_COREPACK_CHECK: 1
on:
push:
branches:
- publish*
workflow_dispatch:
inputs:
version:
description: "Version to publish"
required: true
type: string
skipBuild:
description: "Skip build. Used to debug swc-ecosystem-ci."
required: false
type: boolean
default: false
onlyNightly:
description: "Publish only nightly"
required: false
type: boolean
default: false
allowBreakingWasm:
description: "Allow breaking changes in wasm"
required: false
type: boolean
default: false
concurrency:
group: ${{ github.workflow }}
cancel-in-progress: ${{ github.event_name != 'workflow_dispatch'}}
jobs:
publish-cargo:
name: "Publish cargo crates"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-node
- uses: actions-rs/toolchain@v1
with:
profile: minimal
- name: Install cargo-edit
uses: baptiste0928/cargo-install@v2.2.0
with:
crate: cargo-edit
version: "0.12.2"
locked: true
- name: Install cargo-mono
uses: baptiste0928/cargo-install@v2.2.0
with:
crate: cargo-mono
version: "0.3.7"
locked: true
- name: Update constant of swc_core
run: npx ts-node .github/bot/src/cargo/update-constants.ts
- name: Publish crates
# Skip on pull requests
if: github.event_name == 'workflow_dispatch'
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
run: |
cargo mono publish --no-verify
cargo mono publish --no-verify
cargo mono publish --no-verify
cargo mono publish --no-verify
cargo mono publish --no-verify
cargo mono publish --no-verify
cargo mono publish --no-verify
cargo mono publish --no-verify
cargo mono publish --no-verify
cargo mono publish --no-verify
determine-nightly-version:
name: "Determine nightly version"
runs-on: ubuntu-latest
outputs:
version: ${{ steps.determine-nightly-version.outputs.version }}
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-node
- name: Determine nightly version
id: determine-nightly-version
run: |
npx ts-node .github/bot/src/nightly-version.ts ${{ github.event.inputs.version }} >> $GITHUB_OUTPUT
publish-npm-nightly:
name: "Publish ${{ needs.determine-nightly-version.outputs.version }} to npm"
needs:
- publish-cargo
- determine-nightly-version
uses: ./.github/workflows/publish-npm-package.yml
with:
package: "core"
version: ${{ needs.determine-nightly-version.outputs.version }}
buildCli: true
skipBuild: ${{ github.event.inputs.skipBuild || github.event_name != 'workflow_dispatch' }}
# Skip on pull requests
skipPublishing: ${{ github.event_name != 'workflow_dispatch' }}
run-ecosystem-ci-with-nightly:
name: "Test nightly using ecosystem CI"
needs:
- determine-nightly-version
- publish-npm-nightly
uses: ./.github/workflows/ecosystem-ci.yml
with:
version: ${{ needs.determine-nightly-version.outputs.version }}
mode: "passing"
suites: '["_"]'
publish-npm-stable:
name: "Publish ${{ inputs.version || 'stable' }} to npm"
needs:
- publish-cargo
- run-ecosystem-ci-with-nightly
uses: ./.github/workflows/publish-npm-package.yml
with:
package: "core"
version: ${{ github.event.inputs.version }}
buildCli: true
skipBuild: ${{ github.event.inputs.skipBuild || github.event.inputs.onlyNightly || github.event_name != 'workflow_dispatch' }}
# Skip on pull requests
skipPublishing: ${{ github.event_name != 'workflow_dispatch' || github.event.inputs.onlyNightly }}