Skip to content

Merge pull request #14639 from rtibblesbot/issue-14635-1592a2 #39

Merge pull request #14639 from rtibblesbot/issue-14635-1592a2

Merge pull request #14639 from rtibblesbot/issue-14635-1592a2 #39

Workflow file for this run

name: Publish packages to npm
on:
push:
branches:
- develop
paths:
- 'packages/browserslist-config-kolibri/package.json'
- 'packages/eslint-plugin-kolibri/package.json'
- 'packages/kolibri/package.json'
- 'packages/kolibri-app/package.json'
- 'packages/kolibri-build/package.json'
- 'packages/kolibri-format/package.json'
- 'packages/kolibri-glob/package.json'
- 'packages/kolibri-i18n/package.json'
- 'packages/kolibri-jest-config/package.json'
- 'packages/kolibri-logging/package.json'
- 'packages/kolibri-module/package.json'
- 'packages/kolibri-plugin-data/package.json'
- 'packages/kolibri-viewer/package.json'
workflow_dispatch:
inputs:
npm_package:
description: 'Package to publish (or "all" to auto-detect)'
required: true
type: choice
default: 'all'
options:
- 'all'
- 'browserslist-config-kolibri'
- 'eslint-plugin-kolibri'
- 'kolibri'
- 'kolibri-app'
- 'kolibri-build'
- 'kolibri-format'
- 'kolibri-glob'
- 'kolibri-i18n'
- 'kolibri-jest-config'
- 'kolibri-logging'
- 'kolibri-module'
- 'kolibri-plugin-data'
- 'kolibri-viewer'
jobs:
publish:
runs-on: ubuntu-latest
permissions:
contents: read # Required for npm provenance attestation
id-token: write # Required for npm OIDC trusted publishing
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v6
with:
node-version: '24'
registry-url: 'https://registry.npmjs.org'
- name: Install pnpm
uses: pnpm/action-setup@v5
- name: Link workspace packages
run: pnpm install --ignore-scripts --no-optional
- name: Publish to npm
id: publish
run: |
if [ "${{ github.event_name }}" = "workflow_dispatch" ] && [ "${{ github.event.inputs.npm_package }}" != "all" ]; then
./scripts/npm_publish.sh "${{ github.event.inputs.npm_package }}"
else
./scripts/npm_publish.sh
fi
if [ -f publish_summary.md ]; then
cat publish_summary.md >> "$GITHUB_STEP_SUMMARY"
echo "published=true" >> "$GITHUB_OUTPUT"
else
echo "No packages needed publishing — all versions match npm." >> "$GITHUB_STEP_SUMMARY"
fi
- name: Build Slack message
if: steps.publish.outputs.published == 'true'
id: slack_message
run: |
run_url="${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
{
echo "text<<SLACKEOF"
echo ":package: *npm packages published* (<${run_url}|workflow run>)"
sed -n 's#^| *\[\([^]]*\)\](\([^)]*\)) *| *\([^ |]*\) *|$#• <\2|\1> v\3#p' publish_summary.md
echo "SLACKEOF"
} >> "$GITHUB_OUTPUT"
- name: Notify Slack
if: steps.publish.outputs.published == 'true'
uses: slackapi/slack-github-action@v3
with:
webhook: ${{ secrets.SLACK_NPM_PACKAGES_WEBHOOK }}
webhook-type: incoming-webhook
payload: |
{
"text": ${{ toJSON(steps.slack_message.outputs.text) }}
}