Skip to content

Release

Release #1390

Workflow file for this run

name: Release
on:
workflow_dispatch:
inputs:
release_target:
description: 'Release target'
required: true
default: 'main'
type: choice
options:
- 'main'
- 'wasi-threads'
- 'ts-transform-macro'
- 'rollup-plugin-emscripten-esm-library'
- 'ts-transform-emscripten-esm-library'
permissions:
id-token: write
contents: write
env:
NODE_VERSION: '24.11.1'
MAIN_EM_VERSION: '4.0.23'
jobs:
release:
name: Release ${{ inputs.release_target }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/setup-target-ci
with:
target: release-${{ inputs.release_target }}
node-version: ${{ env.NODE_VERSION }}
em-version: ${{ env.MAIN_EM_VERSION }}
needs-emscripten: ${{ inputs.release_target == 'main' && 'true' || 'false' }}
needs-wasi-sdk: ${{ inputs.release_target == 'main' && 'true' || 'false' }}
- name: Update npm
run: npm install -g npm@latest
- name: NPM Build main packages
if: ${{ inputs.release_target == 'main' }}
run: npm run build --workspaces --if-present
- name: Publish main packages
if: ${{ inputs.release_target == 'main' }}
run: |
node ./script/release.js
npm publish --ignore-scripts -w packages/runtime -w packages/node -w packages/emnapi -w packages/core
- name: Build independent package
if: ${{ inputs.release_target != 'main' }}
run: npm run build -w packages/${{ inputs.release_target }}
- name: Publish independent package
if: ${{ inputs.release_target != 'main' }}
run: npm publish --ignore-scripts -w packages/${{ inputs.release_target }}
- name: Get release metadata
id: meta
shell: bash
run: |
if [ "${{ inputs.release_target }}" = "main" ]; then
version=$(node -p "require('./packages/emnapi/package.json').version")
echo "version=$version" >> "$GITHUB_OUTPUT"
echo "tag=v$version" >> "$GITHUB_OUTPUT"
echo "release_name=v$version" >> "$GITHUB_OUTPUT"
echo "create_release=true" >> "$GITHUB_OUTPUT"
else
version=$(node -p "require('./packages/${{ inputs.release_target }}/package.json').version")
echo "version=$version" >> "$GITHUB_OUTPUT"
echo "tag=${{ inputs.release_target }}-v$version" >> "$GITHUB_OUTPUT"
echo "release_name=${{ inputs.release_target }}-v$version" >> "$GITHUB_OUTPUT"
echo "create_release=false" >> "$GITHUB_OUTPUT"
fi
- name: Create tag
run: |
git tag ${{ steps.meta.outputs.tag }}
git push origin ${{ steps.meta.outputs.tag }}
- name: Create GitHub release
if: ${{ steps.meta.outputs.create_release == 'true' }}
uses: softprops/action-gh-release@v3
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.meta.outputs.tag }}
name: ${{ steps.meta.outputs.release_name }}
draft: true
prerelease: false
generate_release_notes: true
files: ./script/emnapi.zip