Skip to content

main

main #24

Workflow file for this run

name: main
on:
push:
branches:
- main
schedule:
- cron: "0 0/3 * * *"
# Manual dispatch, only for testing purposes. See
# https://docs.github.com/en/actions/managing-workflow-runs/manually-running-a-workflow
workflow_dispatch:
jobs:
# Check and update
check_and_update:
runs-on: ubuntu-latest
outputs:
new_version: ${{ steps.update.outputs.new_version }}
steps:
- uses: actions/checkout@v4
with:
ssh-key: "${{secrets.COMMIT_KEY}}"
# Setup Node.js
- name: Node.js
uses: actions/setup-node@v4
with:
node-version: lts/-1
# Install dependencies
- run: npm ci --verbose
# Config git user name and email
- name: Config git user name and email
run: |
git config user.name github-actions
git config user.email [email protected]
# Update tests
- name: Update tests
id: update
run: |
echo "old version: `node -p \"require('./package.json').version\"`"
new_version=`scripts/update.js`
echo "new version: ${new_version}"
echo "new_version=${new_version}" >> "$GITHUB_OUTPUT"
# Update dependencies
- name: Update dependencies
if : ${{ steps.update.outputs.new_version != '' }}
run: |
npx npm-check-updates --target semver --upgrade
npm install --verbose
# # Ensure extracted tests are working
# - name: Run tests
# if : ${{ steps.update.outputs.new_version != '' }}
# run: npm test
# Commit and push changes
- name: Commit and push changes
if : ${{ steps.update.outputs.new_version != '' }}
run: npm run release
#
# Publish to registries and GitHub release
#
# GitHub Package Registry
publish-gpr:
if : ${{ needs.check_and_update.outputs.new_version != '' }}
needs: check_and_update
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write
packages: write
steps:
- uses: actions/checkout@v4
with:
ref: ${{ needs.check_and_update.outputs.new_version }}
- uses: actions/setup-node@v4
with:
node-version: lts/-2
registry-url: https://npm.pkg.github.com/
# Publish
- run: npm ci --verbose
- run: npm publish --provenance
env:
NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}
# NPM registry
publish-npm-registry:
if : ${{ needs.check_and_update.outputs.new_version != '' }}
needs: check_and_update
runs-on: ubuntu-latest
permissions:
id-token: write
steps:
- uses: actions/checkout@v4
with:
ref: ${{ needs.check_and_update.outputs.new_version }}
- uses: actions/setup-node@v4
with:
node-version: lts/-2
registry-url: https://registry.npmjs.org/
# Publish
- run: npm ci --verbose
- run: npm publish --provenance
env:
NODE_AUTH_TOKEN: ${{secrets.npm_token}}
# GitHub release
upload-to-github-release:
if : ${{ needs.check_and_update.outputs.new_version != '' }}
needs: check_and_update
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: ${{ needs.check_and_update.outputs.new_version }}
- uses: actions/setup-node@v4
with:
node-version: lts/-2
# Create package
- run: npm ci --verbose
- run: npm pack
# Create release
- name: Create release
uses: softprops/action-gh-release@v1
with:
files: '*.tgz'
generate_release_notes: true
tag_name: ${{ needs.check_and_update.outputs.new_version }}
# --verify-tag