feat: version 1.1.7 #6
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: Continuous Integration (CI) | |
on: | |
push: | |
branches: | |
- main | |
paths: | |
- src/**/*.* | |
jobs: | |
test: | |
outputs: | |
IS_RELEASE_COMMIT: ${{ steps.commit.outputs.IS_RELEASE_COMMIT }} | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: 19.x | |
always-auth: true | |
- name: Check commit message | |
id: commit | |
run: | | |
COMMIT_MSG=$(/usr/bin/git log --format=%B -n 1 HEAD) | |
STRING=$(echo $COMMIT_MSG | (grep -E "infra:|docs:|lint:|code-style:" || echo '')) | |
if [ -z "$STRING" ]; then | |
echo "IS_RELEASE_COMMIT=1" >> $GITHUB_OUTPUT | |
echo "IS_RELEASE_COMMIT=1" >> $GITHUB_ENV | |
else | |
echo "This commit will NOT trigger a release." | |
echo "IS_RELEASE_COMMIT=0" >> $GITHUB_OUTPUT | |
echo "IS_RELEASE_COMMIT=0" >> $GITHUB_ENV | |
fi | |
- name: Install dependencies | |
run: yarn | |
- name: Validate Markdown links | |
run: yarn check-links | |
- name: Validate package.json | |
run: yarn validate-package-json | |
- name: Run ESLint | |
if: env.IS_RELEASE_COMMIT == '1' | |
run: | | |
yarn lint | |
- name: Build source code | |
if: env.IS_RELEASE_COMMIT == '1' | |
run: | | |
yarn build | |
- name: Run test suites | |
if: env.IS_RELEASE_COMMIT == '1' | |
run: | | |
yarn test | |
release: | |
if: needs.test.outputs.IS_RELEASE_COMMIT == '1' | |
permissions: | |
contents: write | |
needs: test | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Generate tag, release name, and body | |
run: | | |
TAG_NAME="v$(jq -r '.version' package.json)" | |
RELEASE_NAME="Release $TAG_NAME" | |
BODY=$(sed -n "/## Version $(jq -r '.version' package.json | sed 's/\./\\\./g')/,/##/p" CHANGELOG.md | sed '1d;/^##/d') | |
echo "TAG_NAME=$TAG_NAME" >> $GITHUB_ENV | |
echo "RELEASE_NAME=$RELEASE_NAME" >> $GITHUB_ENV | |
echo "$BODY" >> release.md | |
- name: Create release | |
uses: ncipollo/[email protected] | |
with: | |
allowUpdates: true | |
tag: ${{ env.TAG_NAME }} | |
name: ${{ env.RELEASE_NAME }} | |
token: ${{ secrets.GITHUB_TOKEN }} | |
bodyFile: release.md | |
draft: false | |
prerelease: false | |
publish-npm: | |
needs: release | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Set up Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 19.x | |
always-auth: true | |
- name: Install dependencies | |
run: yarn | |
- name: Build code | |
run: yarn build | |
- name: Set authentication token | |
run: | | |
npm set //registry.npmjs.org/:_authToken ${{ secrets.NPM_AUTH_TOKEN }} | |
- name: Publish to NPM | |
run: yarn publish --access public | |
publish-gpr: | |
needs: release | |
permissions: | |
packages: write | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Set up Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 19.x | |
always-auth: true | |
- name: Install dependencies | |
run: yarn | |
- name: Build code | |
run: yarn build | |
- name: Set authentication token | |
run: | | |
npm set //npm.pkg.github.com/:_authToken ${{ secrets.GPR_AUTH_TOKEN }} | |
- name: Get ready to publish to GPR | |
run: | | |
jq ".name = \"@$REPO\"" package.json > temp.json && mv temp.json package.json | |
env: | |
REPO: ${{ github.repository }} | |
- name: Publish to GPR | |
run: yarn publish --access public --registry https://npm.pkg.github.com/ |