swc/.github/workflows/publish.yml
2024-07-18 11:39:15 +09:00

144 lines
4.1 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:
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: true
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 }}"
needs:
- publish-cargo
- determine-nightly-version
uses: ./.github/workflows/publish-npm-package.yml
secrets: inherit
with:
package: "core"
version: ${{ needs.determine-nightly-version.outputs.version }}
buildCli: true
skipBuild: ${{ inputs.skipBuild || false }}
skipPublishing: false
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: '["_"]'
allowBreakingWasm: ${{ inputs.allowBreakingWasm || false }}
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
secrets: inherit
with:
package: "core"
version: ${{ inputs.version }}
buildCli: true
skipBuild: ${{ inputs.skipBuild || inputs.onlyNightly || false }}
# Skip on pull requests
skipPublishing: ${{ inputs.onlyNightly }}