Patch: Bump dependencies #22
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: Lint | Test | Release | |
on: | |
push: | |
branches: | |
- main | |
# Only run when push includes commits with changes to: | |
paths: | |
- 'src/**.ts' | |
- '.npmignore' | |
- 'LICENSE' | |
- 'tsup.config.js' | |
- 'tsconfig.json' | |
- 'package.json' | |
- 'package-lock.json' | |
jobs: | |
lint: | |
name: Lint | |
if: | | |
!startsWith(github.event.head_commit.message, 'Release version ') | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out repository | |
uses: actions/checkout@v4 | |
- name: Install Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20.x | |
cache: npm | |
- name: Install dependencies | |
run: npm ci | |
- name: Run ESlint | |
run: npm run lint | |
test: | |
name: Test (Node ${{ matrix.node-version }} on ${{ matrix.os }}) | |
if: | | |
!startsWith(github.event.head_commit.message, 'Release version ') | |
strategy: | |
fail-fast: false | |
matrix: | |
node-version: | |
# - 12.x | |
# - 14.x | |
# - 16.x | |
- 18.x | |
- 20.x | |
os: | |
- ubuntu-latest | |
- windows-latest | |
# - macos-latest | |
runs-on: ${{ matrix.os }} | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- name: Check out repository | |
uses: actions/checkout@v4 | |
- name: Install Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }} | |
cache: npm | |
- name: Install dependencies | |
run: npm ci | |
- name: Run Jest | |
run: npm test | |
- name: Build package | |
run: npm run build | |
version: | |
name: Release new version | |
needs: [lint, test] | |
if: | | |
!contains(github.event.head_commit.message, '[!VERSION]') | |
runs-on: ubuntu-latest | |
env: | |
GITHUB_TOKEN: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }} | |
steps: | |
- name: Check out repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
# token: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }} | |
- name: Install Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20.x | |
cache: npm | |
registry-url: https://registry.npmjs.org/ | |
- name: Set Git user | |
run: | | |
git config --global user.name 'vHeemstra' | |
git config --global user.email '[email protected]' | |
# TODO? check all commits since last (= current) version instead of only the head_commit | |
# github.event.commits.*.message | |
- name: Major version | |
if: | | |
startsWith(github.event.head_commit.message, 'breaking') || | |
startsWith(github.event.head_commit.message, 'major:') | |
run: echo "NEW_VERSION=$(npm version major -m 'Release version %s')" >> $GITHUB_ENV | |
- name: Minor version | |
if: | | |
startsWith(github.event.head_commit.message, 'feat') || | |
startsWith(github.event.head_commit.message, 'minor:') | |
run: echo "NEW_VERSION=$(npm version minor -m 'Release version %s')" >> $GITHUB_ENV | |
- name: Patch version | |
if: | | |
!startsWith(github.event.head_commit.message, 'breaking') && | |
!startsWith(github.event.head_commit.message, 'major:') && | |
!startsWith(github.event.head_commit.message, 'feat') && | |
!startsWith(github.event.head_commit.message, 'minor:') | |
run: echo "NEW_VERSION=$(npm version patch -m 'Release version %s')" >> $GITHUB_ENV | |
# - name: Get trimmed version | |
# # Strip leading 'v' and trailing '.0' from new version | |
# run: | | |
# shopt -s extglob | |
# TRIMMED_NEW_VERSION=${NEW_VERSION/#v/} | |
# echo "TRIMMED_NEW_VERSION=${TRIMMED_NEW_VERSION/%+(.0)/}" >> $GITHUB_ENV | |
# | |
# - name: Change commit message | |
# run: git commit --amend -m "Release version ${{ env.TRIMMED_NEW_VERSION }}" | |
- name: Push new version and tag | |
run: git push --follow-tags | |
- name: Create GitHub release | |
run: gh release create ${{ env.NEW_VERSION }} --generate-notes | |
# env: | |
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Sync dev branch with main branch | |
run: | | |
git checkout dev | |
git pull | |
git merge main | |
git push |