main #42
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |