Skip to content

Add fss package publish workflow #69

Add fss package publish workflow

Add fss package publish workflow #69

Workflow file for this run

name: Publish Packages
on:
push:
branches: [main]
paths:
- "packages/fss/**"
- "packages/ui/**"
- "packages/extension-api/**"
- "pnpm-lock.yaml"
- ".github/workflows/publish-ui.yml"
permissions:
id-token: write # Required for OIDC
contents: read
jobs:
publish-fss:
runs-on: self-hosted
steps:
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v5
- uses: actions/setup-node@v6
with:
node-version: 24
cache: pnpm
registry-url: https://registry.npmjs.org
env:
NPM_CONFIG_CACHE: ${{ github.workspace }}/.npm-cache
- run: pnpm install --frozen-lockfile
env:
NPM_CONFIG_CACHE: ${{ github.workspace }}/.npm-cache
- name: Check npm version
id: version_check
shell: bash
env:
NPM_CONFIG_CACHE: ${{ github.workspace }}/.npm-cache
run: |
PACKAGE_NAME=$(node -p "require('./packages/fss/package.json').name")
PACKAGE_VERSION=$(node -p "require('./packages/fss/package.json').version")
PUBLISHED_VERSION=$(npm view "$PACKAGE_NAME" version 2>/dev/null || true)
echo "package_name=$PACKAGE_NAME" >> "$GITHUB_OUTPUT"
echo "package_version=$PACKAGE_VERSION" >> "$GITHUB_OUTPUT"
if [ "$PUBLISHED_VERSION" = "$PACKAGE_VERSION" ]; then
echo "should_publish=false" >> "$GITHUB_OUTPUT"
echo "Version $PACKAGE_VERSION is already published for $PACKAGE_NAME."
else
echo "should_publish=true" >> "$GITHUB_OUTPUT"
if [ -n "$PUBLISHED_VERSION" ]; then
echo "Publishing $PACKAGE_NAME@$PACKAGE_VERSION over current npm version $PUBLISHED_VERSION."
else
echo "Publishing first npm release for $PACKAGE_NAME@$PACKAGE_VERSION."
fi
fi
- name: Publish fss package
if: steps.version_check.outputs.should_publish == 'true'
run: pnpm publish --access public --no-git-checks
working-directory: packages/fss
env:
NPM_CONFIG_CACHE: ${{ github.workspace }}/.npm-cache
publish-extension-api:
runs-on: self-hosted
needs: publish-fss
steps:
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v5
- uses: actions/setup-node@v6
with:
node-version: 24
cache: pnpm
registry-url: https://registry.npmjs.org
env:
NPM_CONFIG_CACHE: ${{ github.workspace }}/.npm-cache
- run: pnpm install --frozen-lockfile
env:
NPM_CONFIG_CACHE: ${{ github.workspace }}/.npm-cache
- name: Check npm version
id: version_check
shell: bash
env:
NPM_CONFIG_CACHE: ${{ github.workspace }}/.npm-cache
run: |
PACKAGE_NAME=$(node -p "require('./packages/extension-api/package.json').name")
PACKAGE_VERSION=$(node -p "require('./packages/extension-api/package.json').version")
PUBLISHED_VERSION=$(npm view "$PACKAGE_NAME" version 2>/dev/null || true)
echo "package_name=$PACKAGE_NAME" >> "$GITHUB_OUTPUT"
echo "package_version=$PACKAGE_VERSION" >> "$GITHUB_OUTPUT"
if [ "$PUBLISHED_VERSION" = "$PACKAGE_VERSION" ]; then
echo "should_publish=false" >> "$GITHUB_OUTPUT"
echo "Version $PACKAGE_VERSION is already published for $PACKAGE_NAME."
else
echo "should_publish=true" >> "$GITHUB_OUTPUT"
if [ -n "$PUBLISHED_VERSION" ]; then
echo "Publishing $PACKAGE_NAME@$PACKAGE_VERSION over current npm version $PUBLISHED_VERSION."
else
echo "Publishing first npm release for $PACKAGE_NAME@$PACKAGE_VERSION."
fi
fi
- name: Publish extension-api package
if: steps.version_check.outputs.should_publish == 'true'
run: pnpm publish --access public --no-git-checks
working-directory: packages/extension-api
env:
NPM_CONFIG_CACHE: ${{ github.workspace }}/.npm-cache
publish-ui:
runs-on: self-hosted
needs: publish-extension-api
steps:
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v5
- uses: actions/setup-node@v6
with:
node-version: 24
cache: pnpm
registry-url: https://registry.npmjs.org
env:
NPM_CONFIG_CACHE: ${{ github.workspace }}/.npm-cache
- run: pnpm install --frozen-lockfile
env:
NPM_CONFIG_CACHE: ${{ github.workspace }}/.npm-cache
- name: Check npm version
id: version_check
shell: bash
env:
NPM_CONFIG_CACHE: ${{ github.workspace }}/.npm-cache
run: |
PACKAGE_NAME=$(node -p "require('./packages/ui/package.json').name")
PACKAGE_VERSION=$(node -p "require('./packages/ui/package.json').version")
PUBLISHED_VERSION=$(npm view "$PACKAGE_NAME" version 2>/dev/null || true)
echo "package_name=$PACKAGE_NAME" >> "$GITHUB_OUTPUT"
echo "package_version=$PACKAGE_VERSION" >> "$GITHUB_OUTPUT"
if [ "$PUBLISHED_VERSION" = "$PACKAGE_VERSION" ]; then
echo "should_publish=false" >> "$GITHUB_OUTPUT"
echo "Version $PACKAGE_VERSION is already published for $PACKAGE_NAME."
else
echo "should_publish=true" >> "$GITHUB_OUTPUT"
if [ -n "$PUBLISHED_VERSION" ]; then
echo "Publishing $PACKAGE_NAME@$PACKAGE_VERSION over current npm version $PUBLISHED_VERSION."
else
echo "Publishing first npm release for $PACKAGE_NAME@$PACKAGE_VERSION."
fi
fi
- name: Publish UI package
if: steps.version_check.outputs.should_publish == 'true'
run: pnpm publish --access public --no-git-checks
working-directory: packages/ui
env:
NPM_CONFIG_CACHE: ${{ github.workspace }}/.npm-cache