Skip to content

chore(release): 29.1.1 (#4173) #74

chore(release): 29.1.1 (#4173)

chore(release): 29.1.1 (#4173) #74

# This is a workflow to create github release for a tag and publish the package
# to npm repo
name: release-and-publish
# Controls when the action will run. Triggers the workflow on push of tag
# request events but only tags matching the configured regex
on:
push:
tags:
# patterns to match for tag creation. Here all tags similar to v1.0 or
# v1.2.0 will trigger this action
- 'v[0-9]+.[0-9]+.[0-9]+*'
# A workflow run is made up of one or more jobs that can run sequentially or in
# parallel
permissions:
contents: read
jobs:
# For more information on setting outputs and reading them have a look at
# https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjobs_idoutputs
setup_variables:
permissions:
contents: none
runs-on: ubuntu-latest
outputs:
isLatest: ${{ steps.release_type.outputs.latest }}
steps:
- id: release_type
name: Identify release type
# For understanding how to set output read:
# https://help.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-an-output-parameter
run: echo "::set-output name=latest::$LATEST"
env:
LATEST: ${{ contains(github.ref, '-next') != true && contains(github.ref, '-rc') != true }}
create_release:
permissions:
contents: write # for actions/create-release to create a release
needs: [setup_variables]
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the
# job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access
# it
- name: Checkout code
# https://github.com/marketplace/actions/checkout
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3
# Runs a single command using the runners shell
- name: Create release for tag
uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # v1
with:
tag_name: ${{ github.ref }}
body: Please refer to [CHANGELOG.md](https://github.com/kulshekhar/ts-jest/blob/main/CHANGELOG.md) for details.
draft: false
prerelease: ${{ needs.setup_variables.outputs.isLatest != 'true' }}
token: ${{ secrets.GITHUB_TOKEN }}
publish_to_npm:
needs: [setup_variables, create_release]
runs-on: ubuntu-latest
steps:
# https://github.com/marketplace/actions/checkout
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3
# https://github.com/marketplace/actions/setup-node-js-environment
- uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
with:
node-version: 16
registry-url: https://registry.npmjs.org/
- name: Check lock file
# runs npm install using package-lock.json and verifies
# if dependencies are matching with package.json or not
run: npm ci
# This will tell npm to publish your scoped package with public access
- name: Publish with latest tag
if: ${{ needs.setup_variables.outputs.isLatest == 'true' }}
run: npm publish --access public
env:
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
- name: Publish with next tag
if: ${{ needs.setup_variables.outputs.isLatest != 'true' }}
run: npm publish --access public --tag next
env:
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}