Publish GitHub Package #17
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Release | |
on: | |
workflow_dispatch: | |
inputs: | |
target: | |
description: 'Select the target registry (npm or github)' | |
required: true | |
default: 'npm' | |
type: choice | |
options: | |
- npm | |
- github | |
concurrency: ${{ github.workflow }}-${{ github.ref }} | |
jobs: | |
release: | |
name: Release | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repo | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Setup pnpm | |
uses: pnpm/action-setup@v3 | |
with: | |
version: 9 | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '20.x' | |
cache: pnpm | |
- name: Install Dependencies | |
run: pnpm install --frozen-lockfile | |
- name: Build Project | |
run: pnpm build | |
- name: Check for required tokens | |
run: | | |
if [ -z "${{ secrets.GITHUB_TOKEN }}" ]; then | |
echo "GITHUB_TOKEN is not set" | |
exit 1 | |
fi | |
if [ "${{ github.event.inputs.target }}" == "npm" ] && [ -z "${{ secrets.NPM_TOKEN }}" ]; then | |
echo "NPM_TOKEN is not set" | |
exit 1 | |
fi | |
- name: Create .npmrc | |
run: | | |
if [ "${{ github.event.inputs.target }}" == "npm" ]; then | |
echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" > "$HOME/.npmrc" | |
else | |
echo "//npm.pkg.github.com/:_authToken=$GITHUB_TOKEN" > "$HOME/.npmrc" | |
fi | |
env: | |
NPM_TOKEN: ${{ secrets.NPM_TOKEN }} | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Publish to npm | |
if: github.event.inputs.target == 'npm' | |
uses: changesets/action@v1 | |
with: | |
publish: pnpm release | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
NPM_TOKEN: ${{ secrets.NPM_TOKEN }} | |
- name: Publish to GitHub Packages | |
if: github.event.inputs.target == 'github' | |
uses: changesets/action@v1 | |
with: | |
publish: pnpm release --registry=https://npm.pkg.github.com/ | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |