.github/workflows/publish.yml
name: 'Publish'
on:
# Runs when a commit is pushed to the main branch
push:
branches:
- 'main'
# Enable GITHUB_TOKEN permissions: version bump and deployment to GitHub Pages
permissions:
contents: write
pages: write
id-token: write
# Allow one concurrent deployment
concurrency:
group: "publish"
cancel-in-progress: true
jobs:
# Builds the package
build:
name: 'Build'
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: 'actions/checkout@v3'
- name: Yarn install
uses: borales/actions-yarn@v3.0.0
with:
cmd: install
- name: Build
uses: borales/actions-yarn@v3.0.0
with:
cmd: build
- name: Upload Dist
uses: actions/upload-artifact@v3
with:
name: dist
path: ./dist
# Runs the unit tests
test:
name: 'Test'
runs-on: ubuntu-latest
needs: build
steps:
- name: Checkout
uses: 'actions/checkout@v3'
- name: Yarn install
uses: borales/actions-yarn@v3.0.0
with:
cmd: install
- name: Test
uses: borales/actions-yarn@v3.0.0
with:
cmd: test
- name: Upload Coverage
uses: actions/upload-artifact@v3
with:
name: coverage
path: ./coverage
# Bumps a new version
bump-version:
name: 'Bump Version'
runs-on: ubuntu-latest
needs: test
steps:
- name: Checkout
uses: 'actions/checkout@v3'
- name: Version
uses: 'phips28/gh-action-bump-version@master'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Publishes to npm
publish:
name: 'NPM Publish'
runs-on: ubuntu-latest
needs: bump-version
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
ref: main
- name: Download Dist
uses: actions/download-artifact@v3
with:
name: dist
path: ./dist
- uses: JS-DevTools/npm-publish@v1
with:
token: ${{ secrets.NPM_TOKEN }}
# Publish coverage results to Coveralls
coveralls:
name: 'Publish to Coveralls'
runs-on: ubuntu-latest
needs: publish
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
ref: main
- name: Download Coverage
uses: actions/download-artifact@v3
with:
name: coverage
path: ./coverage
- name: Coveralls
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
# Generates the documentation files
docs:
name: 'Generate Documentation'
runs-on: ubuntu-latest
needs: publish
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
ref: main
- name: Yarn install
uses: borales/actions-yarn@v3.0.0
with:
cmd: install
- name: Generate Docs
uses: borales/actions-yarn@v3.0.0
with:
cmd: docs
- name: Upload Docs
uses: actions/upload-artifact@v3
with:
name: docs
path: ./docs
# Deploy the documentation to GitHub pages
pages:
name: 'Deploy to GitHub Pages'
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: docs
steps:
- name: Download Docs
uses: actions/download-artifact@v3
with:
name: docs
path: ./docs
- name: Setup Pages
uses: actions/configure-pages@v2
- name: Upload artifact
uses: actions/upload-pages-artifact@v1
with:
path: './docs'
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v1