Skip to content
This repository has been archived by the owner on Sep 16, 2024. It is now read-only.

Bump the development-dependencies group with 2 updates #52

Bump the development-dependencies group with 2 updates

Bump the development-dependencies group with 2 updates #52

Workflow file for this run

# Continuous Delivery: Publish on NPM
name: "CD"
on:
push:
branches:
- main
workflow_dispatch:
inputs:
releaseType:
description: 'Release type'
required: true
default: 'prerelease'
type: choice
options:
- prerelease
- patch
- minor
- major
concurrency:
group: "${{ github.workflow }}-${{ github.ref_name }}"
cancel-in-progress: true
jobs:
ci:
uses: ./.github/workflows/ci.yml
publish-snapshot:
if: ${{ inputs.releaseType == '' }}
needs: ci
runs-on: ubuntu-latest
permissions:
id-token: write
steps:
- name: "Checkout repository"
uses: actions/checkout@v4
- name: "Setup node & dependencies"
uses: ./.github/actions/setup
- name: "Create version"
id: version
uses: actions/github-script@v7
with:
script: |
const run = require('node:util').promisify(require('node:child_process').exec);
const semver = require('semver');
const { name, version } = require('./package.json');
if (!name) throw new Error('Could not get package name');
const getVersion = (tag) => run(`npm view ${name}@${tag} version`).then(({ stdout }) => stdout.trim()).catch(() => '');
const distTag = 'snapshot';
const previousVersion = await getVersion(distTag);
// Get base version (version from which to increment)
let baseVersion = previousVersion;
// Prerelease should start with latest NPM version + patch (ex: 'v1.0.0' => 'v1.0.1-alpha.0')
if (!baseVersion || !baseVersion.startsWith(semver.inc(version, 'patch'))) {
baseVersion = version;
}
console.log(`Base version: ${baseVersion}`);
// Increment version
const nextVersion = semver.inc(baseVersion, 'prerelease', distTag);
console.log(`New version: ${nextVersion}`);
// Update version in package
await run(`npm pkg set version=${nextVersion}`);
return { name, previousVersion, nextVersion };
- name: "Publish"
run: npm publish --provenance --access public --tag snapshot
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: "Deprecate previous snapshot"
if: ${{ fromJSON(steps.version.outputs.result).previousVersion != '' }}
run: npm deprecate ${{ fromJSON(steps.version.outputs.result).name }}@${{ fromJSON(steps.version.outputs.result).previousVersion }} "snapshot"
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
publish-release:
if: ${{ inputs.releaseType != '' && github.ref_name == 'main' }}
needs: ci
runs-on: ubuntu-latest
permissions:
id-token: write
contents: write
steps:
- name: "Checkout repository"
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- name: "Setup node & dependencies"
uses: ./.github/actions/setup
- name: "Bump version"
run: |
set -x
git config --global user.name "github-actions"
git config --global user.email "github-actions@users.noreply.github.com"
npm version ${{ inputs.releaseType }} --m "Release v%s" ${{ inputs.releaseType == 'prerelease' && '--preid rc' || '' }}
git push
git push --tags
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: "Publish"
run: npm publish --provenance --access public ${{ inputs.releaseType == 'prerelease' && '--tag prerelease' || '' }}
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}