-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
f9036ab
commit f029677
Showing
2 changed files
with
101 additions
and
110 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -6,115 +6,105 @@ name: Test and Release | |
# Run this job on all pushes and pull requests | ||
# as well as tags with a semantic version | ||
on: | ||
push: | ||
branches: | ||
- master | ||
tags: | ||
# normal versions | ||
- "v?[0-9]+.[0-9]+.[0-9]+" | ||
# pre-releases | ||
- "v?[0-9]+.[0-9]+.[0-9]+-**" | ||
pull_request: {} | ||
|
||
# Cancel previous PR/branch runs when a new commit is pushed | ||
concurrency: | ||
group: ${{ github.ref }} | ||
cancel-in-progress: true | ||
push: | ||
branches: | ||
- '*' | ||
tags: | ||
# normal versions | ||
- "v?[0-9]+.[0-9]+.[0-9]+" | ||
# pre-releases | ||
- "v?[0-9]+.[0-9]+.[0-9]+-**" | ||
pull_request: {} | ||
|
||
jobs: | ||
build: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: actions/setup-node@v4 | ||
with: | ||
node-version: 18.x | ||
|
||
- name: 'Install' | ||
run: | | ||
npm i | ||
- name: 'Build' | ||
run: npm run build | ||
|
||
auto-merge: | ||
if: | | ||
always() && | ||
github.event_name == 'pull_request' | ||
needs: [build] | ||
runs-on: macos-latest # ubuntu-latest has too few RAM | ||
|
||
steps: | ||
- id: automerge | ||
name: automerge | ||
uses: "pascalgn/[email protected]" | ||
env: | ||
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" | ||
MERGE_LABELS: "automated pr 🔧" | ||
MERGE_FILTER_AUTHOR: "foxriver76" | ||
MERGE_FORKS: "false" | ||
MERGE_DELETE_BRANCH: "false" | ||
UPDATE_LABELS: "automated pr 🔧" | ||
MERGE_METHOD: "squash" | ||
MERGE_COMMIT_MESSAGE: "pull-request-title-and-description" | ||
|
||
- name: Checkout repository | ||
if: steps.automerge.outputs.mergeResult == 'merged' | ||
uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 # Fetch the history, or this action won't work | ||
ref: 'master' | ||
|
||
- name: Use Node.js 20 | ||
if: steps.automerge.outputs.mergeResult == 'merged' | ||
uses: actions/setup-node@v4 | ||
with: | ||
node-version: 20 | ||
|
||
- name: Determine version | ||
if: steps.automerge.outputs.mergeResult == 'merged' | ||
id: version | ||
uses: actions/github-script@v7 | ||
with: | ||
result-encoding: string | ||
script: | | ||
return require('./lerna.json').version; | ||
- name: Extract the commit body | ||
if: steps.automerge.outputs.mergeResult == 'merged' | ||
id: extract_release | ||
# The body may be multiline, therefore we need to escape some characters | ||
run: | | ||
BODY=$(git show -s --format=%b) | ||
BODY="${BODY//'%'/'%25'}" | ||
BODY="${BODY//$'\n'/'%0A'}" | ||
BODY="${BODY//$'\r'/'%0D'}" | ||
echo "::set-output name=BODY::$BODY" | ||
- name: Install Dependencies | ||
if: steps.automerge.outputs.mergeResult == 'merged' | ||
run: npm i | ||
|
||
- name: 'Build' | ||
if: steps.automerge.outputs.mergeResult == 'merged' | ||
run: npm run build | ||
|
||
- name: Publish package to npm | ||
if: steps.automerge.outputs.mergeResult == 'merged' | ||
run: | | ||
npm config set //registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }} | ||
npm whoami | ||
git checkout -- package-lock.json | ||
npx lerna publish from-package --yes | ||
- name: Create Github Release | ||
if: steps.automerge.outputs.mergeResult == 'merged' | ||
uses: ncipollo/release-action@v1 | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
with: | ||
tag: v${{ steps.version.outputs.result }} | ||
name: Release v${{ steps.version.outputs.result }} | ||
draft: false | ||
prerelease: ${{ contains(steps.version.outputs.result, '-') }} | ||
body: ${{ steps.extract_release.outputs.BODY }} | ||
# Performs quick checks before the expensive test runs | ||
check-and-lint: | ||
if: contains(github.event.head_commit.message, '[skip ci]') == false | ||
|
||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Use Node.js 20.x | ||
uses: actions/setup-node@v4 | ||
with: | ||
node-version: 20.x | ||
|
||
- name: Install Dependencies | ||
run: npm install | ||
|
||
# - name: Perform a type check | ||
# run: npm run check:ts | ||
# env: | ||
# CI: true | ||
# - name: Lint TypeScript code | ||
# run: npm run lint | ||
# - name: Test package files | ||
# run: npm run test:package | ||
|
||
build: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: actions/setup-node@v4 | ||
with: | ||
node-version: 20.x | ||
- run: npm i | ||
- run: npm run build | ||
|
||
# Deploys the final package to NPM | ||
deploy: | ||
needs: [build] | ||
|
||
# Trigger this step only when a commit on master is tagged with a version number | ||
if: | | ||
contains(github.event.head_commit.message, '[skip ci]') == false && | ||
github.event_name == 'push' && | ||
startsWith(github.ref, 'refs/tags/') | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- name: Checkout code | ||
uses: actions/checkout@v4 | ||
|
||
- name: Use Node.js 20.x | ||
uses: actions/setup-node@v4 | ||
with: | ||
node-version: 20.x | ||
|
||
- name: Extract the version and commit body from the tag | ||
id: extract_release | ||
# The body may be multiline, therefore we need to escape some characters | ||
run: | | ||
VERSION="${{ github.ref }}" | ||
VERSION=${VERSION##*/} | ||
VERSION=${VERSION##*v} | ||
echo "::set-output name=VERSION::$VERSION" | ||
BODY=$(git show -s --format=%b) | ||
BODY="${BODY//'%'/'%25'}" | ||
BODY="${BODY//$'\n'/'%0A'}" | ||
BODY="${BODY//$'\r'/'%0D'}" | ||
echo "::set-output name=BODY::$BODY" | ||
- name: Install Dependencies | ||
run: npm install -f | ||
|
||
- name: Create a clean build | ||
run: npm run build | ||
- name: Publish package to npm | ||
run: | | ||
npm config set //registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }} | ||
npm whoami | ||
npm publish | ||
- name: Create Github Release | ||
uses: actions/create-release@v1 | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
with: | ||
tag_name: ${{ github.ref }} | ||
release_name: Release v${{ steps.extract_release.outputs.VERSION }} | ||
draft: false | ||
# Prerelease versions create pre-releases on GitHub | ||
prerelease: ${{ contains(steps.extract_release.outputs.VERSION, '-') }} | ||
body: ${{ steps.extract_release.outputs.BODY }} |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,2 @@ | ||
/node_modules/ | ||
.idea/ |