Files
2026-07-13 12:47:58 +08:00

115 lines
3.1 KiB
YAML

name: Publish Candidates
on:
workflow_call:
inputs:
js-sdk:
required: false
type: boolean
default: false
python-sdk:
required: false
type: boolean
default: false
cli:
required: false
type: boolean
default: false
tag:
required: true
type: string
preid:
required: true
type: string
permissions:
contents: read
id-token: write
jobs:
publish:
name: Publish Release Candidates
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@v4
- name: Parse .tool-versions
uses: wistia/parse-tool-versions@v2.1.1
with:
filename: '.tool-versions'
uppercase: 'true'
prefix: 'tool_version_'
- uses: pnpm/action-setup@v4
if: ${{ inputs.js-sdk || inputs.cli }}
with:
version: '${{ env.TOOL_VERSION_PNPM }}'
- name: Setup Node.js
uses: actions/setup-node@v6
if: ${{ inputs.js-sdk || inputs.cli }}
with:
node-version: '${{ env.TOOL_VERSION_NODEJS }}'
registry-url: https://registry.npmjs.org
cache: pnpm
- name: Configure pnpm
if: ${{ inputs.js-sdk || inputs.cli }}
run: |
pnpm config set auto-install-peers true
pnpm config set exclude-links-from-lockfile true
- name: Update npm
if: ${{ inputs.js-sdk || inputs.cli }}
run: |
npm install -g npm@^11.6
npm --version
- name: Install uv
uses: astral-sh/setup-uv@v6
if: ${{ inputs.python-sdk }}
with:
version: '${{ env.TOOL_VERSION_UV }}'
python-version: '${{ env.TOOL_VERSION_PYTHON }}'
enable-cache: true
- name: Publish Python RC
if: ${{ inputs.python-sdk }}
working-directory: packages/python-sdk
run: |
BASE_VERSION=$(uv version --short)
uv version "${BASE_VERSION}rc${{ github.run_id }}"
uv build
uv publish --token ${PYPI_TOKEN} --check-url https://pypi.org/simple/
env:
PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }}
- name: Install JS dependencies
if: ${{ inputs.js-sdk || inputs.cli }}
run: pnpm install --frozen-lockfile
- name: Publish JS RC
if: ${{ inputs.js-sdk }}
working-directory: packages/js-sdk
env:
RC_PREID: ${{ inputs.preid }}
RC_TAG: ${{ inputs.tag }}
run: |
npm version prerelease --preid="${RC_PREID}.${{ github.run_id }}" --no-git-tag-version
npm publish --tag "$RC_TAG" --provenance
- name: Reinstall dependencies
if: ${{ inputs.js-sdk || inputs.cli }}
run: pnpm install --frozen-lockfile
- name: Publish CLI RC
if: ${{ inputs.cli }}
working-directory: packages/cli
env:
RC_PREID: ${{ inputs.preid }}
RC_TAG: ${{ inputs.tag }}
run: |
npm version prerelease --preid="${RC_PREID}.${{ github.run_id }}" --no-git-tag-version
npm publish --tag "$RC_TAG" --provenance