diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a8b7240..60815b6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -16,17 +16,51 @@ jobs: with: node-version: latest - - run: npm ci - - run: npm run compile - - run: npm run lint - - run: npm test + - name: Bump version and push tag + id: tag_version + uses: mathieudutour/github-tag-action@v6.1 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + + - name: Install dependencies + run: npm ci + + - name: Compile the typescript + run: npm run compile + + - name: Lint the code + run: npm run lint + + - name: Run the tests + run: npm test + + - name: Check for version change + id: version-check + run: | + [ "$(git show head^:package.json | jq .version)" = "$(cat package.json| jq .version)" ] && echo "::set-output name=version_changed::true" || echo "::set-output name=version_changed::false" + - name: Copy relevant documentation into the build folder + if: steps.version-check.outputs.version_changed == 'true' run: cp package.json README.md LICENSE-APACHE LICENSE-MIT ./build - - name: publish to npmjs + + - name: Publish to npmjs uses: JS-DevTools/npm-publish@v1 - if: github.ref == 'refs/heads/master' + if: github.ref == 'refs/heads/master' && steps.version-check.outputs.version_changed == 'true' with: token: ${{ secrets.NPM_TOKEN }} package: build/package.json # don't try and deploy if versions haven't changed check-version: true + + - name: Create tag variable + id: tagging + if: github.ref == 'refs/heads/master' && steps.version-check.outputs.version_changed == 'true' + run: echo "::set-output name=new_tag::v$(cat package.json | jq .version | sed "s/['\"]//g")" + + - name: Create a GitHub release + if: github.ref == 'refs/heads/master' && steps.version-check.outputs.version_changed == 'true' + uses: ncipollo/release-action@v1 + with: + custom_tag: ${{ steps.tagging.outputs.new_tag }} + name: Release ${{ steps.tagging.outputs.new_tag }} + body: ${{ steps.tag_version.outputs.changelog }} diff --git a/package.json b/package.json index f9f52c4..c87eaf6 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "clean": "rm -rf ./build/* && rm -rf lib/version.ts", "precompile": "node -p \"'export const LIB_VERSION = ' + JSON.stringify(require('./package.json').version) + ';'\" > lib/version.ts", "compile": "npm run precompile && tsc --project tsconfig.json", + "publish:github": "npm publish --registry https://npm.pkg.github.com", "test": "jest --verbose ./test/**.test.ts", "lint": "eslint ./{lib,test}/*.ts", "lint:fix": "eslint ./{lib,test}/*.ts --fix"