Skip to content

NPM publish

NPM publish #21

Workflow file for this run

name: NPM publish
on: workflow_dispatch
jobs:
build:
name: Build
runs-on: self-hosted
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Use Node.js 18.x.x
uses: actions/setup-node@v3
with:
node-version: 18
- name: Installing dependencies
run: npm ci
- name: Building sources
run: npm run build
lint:
name: Lint Code
needs: build
runs-on: self-hosted
steps:
- name: Linting
run: npm run lint
env:
CI: true
test_unit:
name: Unit Tests
needs: build
runs-on: self-hosted
steps:
- name: Running unit tests
run: npm run test:unit
# test_integration:
# name: Integration Tests
# needs:
# - lint
# - test_unit
# runs-on: self-hosted
# steps:
# - name: Creating `.env` file
# run: |
# touch .env
# echo HOST=${{ secrets.HOST }} >> .env
# echo EMAIL=${{ secrets.EMAIL }} >> .env
# echo API_TOKEN=${{ secrets.API_TOKEN }} >> .env
# - name: Running integration tests
# run: npm run test:integration
publish:
name: Package publish
needs:
- lint
- test_unit
runs-on: self-hosted
steps:
- name: Publishing
run: npm publish
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
publish-docs:
name: Docs publish
needs:
- publish
runs-on: self-hosted
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: master
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: 18
- name: Install dependencies
run: npm ci
- name: Generate docs
run: npm run doc
- name: Extract version
id: pkg
run: echo "::set-output name=version::$(node -p "require('./package.json').version")"
- name: Checkout docs branch
uses: actions/checkout@v4
with:
ref: docs
clean: false
- name: Copy docs to root
run: |
cp -r docs/* .
- name: Commit and push docs
run: |
git config user.name "GitHub Actions"
git config user.email "actions@github.com"
git add .
git commit -m "Update documentation for version v${{ steps.pkg.outputs.version }}"
git push
creating-git-tag:
name: Create Git Tag
needs:
- publish
runs-on: self-hosted
steps:
- name: Checkout sources
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: 18
- name: Extract version from package.json
id: pkg
run: echo "::set-output name=version::$(node -p "require('./package.json').version")"
- name: Create and Push Git Tag
run: |
git config user.name "GitHub Actions"
git config user.email "actions@github.com"
TAG="v${{ steps.pkg.outputs.version }}"
git tag $TAG
git push origin $TAG
creating-github-release:
name: Create GitHub Release
needs:
- creating-git-tag
runs-on: self-hosted
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: 18
- name: Extract version from package.json
id: pkg
run: echo "::set-output name=version::$(node -p "require('./package.json').version")"
- name: Extract Changelog Entry
id: changelog
uses: juliangruber/read-file-action@v1
with:
path: ./CHANGELOG.md
- name: Parse Changelog Entry
run: |
CHANGELOG_CONTENT=$(echo '${{ steps.changelog.outputs.content }}' | awk '/### ${{ steps.pkg.outputs.version }}/,/### /{print; if (/### / && !/### ${{ steps.pkg.outputs.version }}/){exit}}')
echo "CHANGELOG=$CHANGELOG_CONTENT" >> $GITHUB_ENV
- name: Create GitHub Release
uses: softprops/action-gh-release@v1
with:
tag_name: v${{ steps.pkg.outputs.version }}
name: Release v${{ steps.pkg.outputs.version }}
body: ${{ env.CHANGELOG }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}