Skip to content

build(ci): set up Node.js for GitHub Packages and npm publishing #10

build(ci): set up Node.js for GitHub Packages and npm publishing

build(ci): set up Node.js for GitHub Packages and npm publishing #10

Workflow file for this run

# GitHub CI Workflow
name: CI
on:
workflow_dispatch:
push:
branches:
- main
- dev
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: corepack enable
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
cache: "yarn"
- name: Install dependencies
run: yarn install --immutable
- name: Build
run: yarn build
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: corepack enable
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
cache: "yarn"
- name: Install dependencies
run: yarn install --immutable
- name: Run tests with coverage
run: yarn test:coverage:ci
env:
BREADBOARD_SERVER_URL: ${{ secrets.BREADBOARD_SERVER_URL }}
BREADBOARD_USER: ${{ secrets.BREADBOARD_USER }}
BOARD_ID: ${{ secrets.BOARD_ID }}
BREADBOARD_API_KEY: ${{ secrets.BREADBOARD_API_KEY }}
- name: Upload coverage reports
uses: codecov/codecov-action@v5
with:
directory: ./coverage/
fail_ci_if_error: false
release:
needs:
- test
- build
if: github.ref_name == github.event.repository.default_branch
runs-on: ubuntu-latest
permissions:
contents: write
issues: write
pull-requests: write
packages: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- run: corepack enable
# Publish to GitHub Packages
- name: Set up Node.js for GitHub Packages
uses: actions/setup-node@v4
with:
node-version: "20"
cache: "yarn"
registry-url: "https://npm.pkg.github.com"
scope: "@exadev"
- name: Install dependencies
run: yarn install --immutable
- name: Build
run: yarn build
- name: Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: npx semantic-release
# Publish to npmjs.com
- name: Set up Node.js for npm
uses: actions/setup-node@v4
with:
node-version: "20"
registry-url: "https://registry.npmjs.org"
scope: "@exadev"
- name: Publish to npm
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
run: npm publish