chore(deps): lock file maintenance #261
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: Check & Release Beta | |
on: | |
# Push to master will deploy a beta version | |
push: | |
branches: | |
- master | |
# This will allow releasing beta versions from non-master releases. | |
# TODO: We need to release this version with other tags than beta. It can mess up the beta version as it will override it with older code. | |
- version/** | |
# A release via GitHub releases will deploy a latest version | |
release: | |
types: [ published ] | |
jobs: | |
build_and_test: | |
name: Build & Test | |
if: ${{ !contains(github.event.head_commit.message, '[skip ci]') }} | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
node-version: [ 16, 18, 20 ] | |
steps: | |
- name: Cancel Workflow Action | |
uses: styfle/[email protected] | |
with: | |
access_token: ${{ github.token }} | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }} | |
cache: 'npm' | |
cache-dependency-path: 'package-lock.json' | |
- name: Install Dependencies | |
run: npm ci | |
- name: Run Tests | |
run: npm test | |
lint: | |
name: Lint | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Use Node.js 20 | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }} | |
cache: 'npm' | |
cache-dependency-path: 'package-lock.json' | |
- run: npm ci | |
- run: npm run lint | |
# The deploy job is long but there are only 2 important parts. NPM publish | |
# and triggering of docker image builds in the apify-actor-docker repo. | |
deploy: | |
name: Publish to NPM | |
needs: [ build_and_test, lint ] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Use Node.js 20 | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }} | |
cache: 'npm' | |
cache-dependency-path: 'package-lock.json' | |
- name: Install dependencies | |
run: | | |
echo "access=public" >> .npmrc | |
echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" >> .npmrc | |
npm ci | |
- # Determine if this is a beta or latest release | |
name: Set Release Tag | |
run: echo "RELEASE_TAG=$(if [ ${{ github.event_name }} = release ]; then echo latest; else echo beta; fi)" >> $GITHUB_ENV | |
- # Check version consistency and increment pre-release version number for beta only. | |
name: Bump pre-release version | |
if: env.RELEASE_TAG == 'beta' | |
run: node ./.github/scripts/before-beta-release.js | |
- name: Build module | |
run: npm run build | |
- name: Publish to NPM | |
run: npm publish --tag ${{ env.RELEASE_TAG }} | |
- # Latest version is tagged by the release process so we only tag beta here. | |
name: Tag Version | |
if: env.RELEASE_TAG == 'beta' | |
run: | | |
git_tag=v`node -p "require('./package.json').version"` | |
git tag $git_tag | |
git push origin $git_tag | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.APIFY_SERVICE_ACCOUNT_NPM_TOKEN }} | |
NPM_TOKEN: ${{ secrets.APIFY_SERVICE_ACCOUNT_NPM_TOKEN }} |