Skip to content

Publish

Publish #56

Workflow file for this run

# This workflow is provided via the organization template repository
#
# https://github.com/nextcloud-libraries/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
#
# SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT
name: Publish
on:
release:
types: [published]
permissions:
contents: read
packages: write
jobs:
publish:
runs-on: ubuntu-latest
name: Build and publish to npm
steps:
- name: Checkout
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
persist-credentials: false
- name: Read package.json
uses: nextcloud-libraries/parse-package-engines-action@122ae05d4257008180a514e1ddeb0c1b9d094bdd # v0.1.0
id: versions
- name: Set up node
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
with:
node-version: ${{ steps.versions.outputs.node-version }}
- name: Set up npm
run: npm i -g 'npm@${{ steps.versions.outputs.package-manager-version }}'
- name: Check tag matches package.json
run: |
VERSION=$(node -p -e "require('./package.json').version")
GH_VERSION=$(echo "$GH_VERSION" | sed s,\^v,,)
if [ "$VERSION" != "$GH_VERSION" ]; then
echo "$VERSION does not match $GH_VERSION"
exit 1;
fi;
env:
GH_VERSION: ${{ github.event.release.tag_name }}
- name: Install dependencies & build
env:
CYPRESS_INSTALL_BINARY: 0
run: |
npm ci
npm run build --if-present
- name: Fetch latest tag
id: latest-tag
run: |
TAG=$(gh release list \
--exclude-drafts \
--exclude-pre-releases \
--json isLatest,tagName \
--jq 'map(select(.isLatest == true))[].tagName' \
-R ${{ github.repository }})
echo "Latest tag is $TAG"
echo "LATEST_TAG=$TAG" >> $GITHUB_OUTPUT
env:
GH_TOKEN: ${{ github.token }}
- name: Publish
run: |
npm config set //registry.npmjs.org/:_authToken=$NODE_AUTH_TOKEN
npm publish --tag $RELEASE_GROUP
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
RELEASE_GROUP: ${{ (contains(github.ref, 'rc') || contains(github.ref, 'beta') || contains(github.ref, 'alpha')) && 'next' || ((steps.latest-tag.outputs.LATEST_TAG != github.event.release.tag_name) && 'stable' || 'latest') }}