Release #46
Workflow file for this run
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: Release | |
on: | |
push: | |
tags: | |
- v* | |
jobs: | |
build: | |
name: Build | |
runs-on: ubuntu-latest | |
env: | |
RUNNER: github | |
NODE_ENV: dev | |
steps: | |
- name: Github checkout | |
uses: actions/checkout@v4 | |
- name: Setup node.js environment | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '20.18.0' | |
- name: Cache node_modules | |
uses: actions/cache@v4 | |
with: | |
path: node_modules | |
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-node- | |
- name: Install Node.js dependencies | |
run: npm ci | |
- name: Cache node_modules | |
uses: actions/cache@v4 | |
with: | |
path: node_modules | |
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-node- | |
- name: Build local project | |
run: npm run build | |
continue-on-error: true | |
- name: Lint | |
run: npm run lint:js | |
- name: Upload artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: build-files | |
path: | | |
. | |
retention-days: 3 | |
unit-tests: | |
name: Unit tests | |
runs-on: ubuntu-latest | |
needs: [ build ] | |
env: | |
RUNNER: github | |
NODE_ENV: dev | |
steps: | |
- name: Download build artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: build-files | |
path: ./ | |
- name: Setup node.js environment | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '20.18.0' | |
- name: Restore cache for node_modules | |
uses: actions/cache@v4 | |
with: | |
path: node_modules | |
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-node- | |
- name: Install Node.js dependencies | |
run: npm ci | |
- name: Run unit tests | |
run: npm run ci:test | |
env: | |
CI: true | |
- name: Publish to coveralls.io | |
uses: coverallsapp/github-action@v2 | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
path-to-lcov: ./build/code-coverage/lcov.info | |
e2e-tests: | |
name: E2E tests | |
runs-on: ubuntu-latest | |
needs: [ build ] | |
env: | |
RUNNER: github | |
NODE_ENV: dev | |
SKIP_PACKAGE_CHECK: 1 | |
steps: | |
- name: Download build artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: build-files | |
path: ./ | |
- name: Setup node.js environment | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '20.18.0' | |
- name: Restore cache for node_modules | |
uses: actions/cache@v4 | |
with: | |
path: node_modules | |
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-node- | |
- name: Install global OS dependencies | |
run: sudo apt-get install libgtk2.0-0 libgtk-3-0 libgbm-dev libnotify-dev libnss3 libxss1 libapr1t64 libasound2t64 libaprutil1t64 libxtst6 xauth xvfb | |
- name: Install Node.js dependencies | |
run: npm ci | |
- name: Run E2E tests | |
run: npm run ci:dev & npm run ci:e2e | |
env: | |
CI: true | |
release-github: | |
name: Github release | |
runs-on: ubuntu-latest | |
needs: [ unit-tests, e2e-tests ] | |
steps: | |
- name: Github checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Setup node.js environment | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '20.18.0' | |
- name: Create Github release | |
uses: konfer-be/[email protected] | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
release-npm: | |
name: NPM release | |
runs-on: ubuntu-latest | |
needs: [ release-github ] | |
steps: | |
- name: Download build artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: build-files | |
path: ./ | |
- name: Setup node.js environment | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '20.18.0' | |
registry-url: 'https://registry.npmjs.org' | |
- name: Restore cache for node_modules | |
uses: actions/cache@v4 | |
with: | |
path: node_modules | |
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-node- | |
- name: Install Node.js dependencies | |
run: npm ci | |
- name: Generate dist files | |
run: npm run dist | |
- name: Mv dist files | |
run: mv dist/css ./ && mv dist/js ./ | |
- name: Clean up directories | |
run: rm -rf dist && rm -rf src | |
- name: Create NPM release | |
run: npm publish | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.KONFER_NPM_TOKEN }} | |
deploy-demo: | |
name: Deploy demo website | |
runs-on: ubuntu-latest | |
needs: [ release-github, release-npm ] | |
steps: | |
- name: Download build artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: build-files | |
path: ./ | |
- name: Setup node.js environment | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '20.18.0' | |
registry-url: 'https://registry.npmjs.org' | |
- name: Restore cache for node_modules | |
uses: actions/cache@v4 | |
with: | |
path: node_modules | |
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-node- | |
- name: Install Node.js dependencies | |
run: npm ci | |
- name: Build dist | |
run: npm run dist | |
- name: Build demo | |
run: npm run demo | |
- name: Deploy demo using SCP | |
uses: garygrossgarten/github-action-scp@release | |
with: | |
local: demo | |
remote: ${{ vars.KONFER_SSH_TARGET }} | |
host: ${{ secrets.KONFER_SSH_HOST }} | |
username: ${{ secrets.KONFER_SSH_USER }} | |
password: ${{ secrets.KONFER_SSH_PWD }} | |
deploy-documentation: | |
name: Deploy documentation | |
runs-on: ubuntu-latest | |
needs: [ release-github, release-npm ] | |
steps: | |
- name: Github checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Restore cache for node_modules | |
uses: actions/cache@v4 | |
with: | |
path: node_modules | |
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-node- | |
- name: Install Node.js dependencies | |
run: npm ci | |
- name: Build documentation | |
run: npm run docs:build | |
- name: Deploy documentation using SCP | |
uses: garygrossgarten/github-action-scp@release | |
with: | |
local: docs/.vitepress/dist | |
remote: "${{ vars.KONFER_SSH_TARGET_DOC }}" | |
host: ${{ secrets.KONFER_SSH_HOST }} | |
username: ${{ secrets.KONFER_SSH_USER }} | |
password: ${{ secrets.KONFER_SSH_PWD }} |