Skip to content

Merge pull request #48 from basics/beta #20

Merge pull request #48 from basics/beta

Merge pull request #48 from basics/beta #20

Workflow file for this run

name: Main
on:
push:
branches:
- main
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
install:
if: "!contains(github.event.head_commit.message, 'skip ci')"
name: Install
strategy:
matrix:
os: [ubuntu-latest]
node: [20]
runs-on: ${{ matrix.os }}
steps:
- name: checkout repo
uses: actions/checkout@v4
- name: setup node
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
- name: cache node_modules
uses: actions/cache@v4
id: cache
with:
path: |
node_modules
key: ${{ matrix.os }}-node-v${{ matrix.node }}-deps-${{ hashFiles(format('{0}{1}', github.workspace, '/package-lock.json')) }}
- name: install dependencies (no cache available)
if: steps.cache.outputs.cache-hit != 'true'
run: npm ci
- name: lint
run: npm run lint
- name: vitest - Test & Coverage
run: npm run coverage
- name: archive vitest code coverage results
uses: actions/upload-artifact@v4
with:
name: vitest-code-coverage-report
path: ./coverage/
semantic-version:
name: Semantic Release
needs: install
strategy:
matrix:
os: [ubuntu-latest]
node: [20]
runs-on: ${{ matrix.os }}
steps:
- name: checkout repo
uses: actions/checkout@v4
- name: setup node
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
- name: cache node_modules
uses: actions/cache@v4
id: cache
with:
path: node_modules
key: ${{ matrix.os }}-node-v${{ matrix.node }}-deps-${{ hashFiles(format('{0}{1}', github.workspace, '/package-lock.json')) }}
- name: install dependencies (no cache available)
if: steps.cache.outputs.cache-hit != 'true'
run: npm ci
- name: release versioning
env:
GH_TOKEN: ${{ secrets.GH_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
run: |
npm run release
sonarcloud:
name: SonarCloud
needs: semantic-version
strategy:
matrix:
os: [ubuntu-latest]
node: [20]
runs-on: ${{ matrix.os }}
steps:
- name: checkout repo
uses: actions/checkout@v4
with:
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
- name: download vitest code coverage results
uses: actions/download-artifact@v4
with:
name: vitest-code-coverage-report
path: ./coverage/
- name: SonarCloud scan
uses: SonarSource/sonarcloud-github-action@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
deploy-ghpages:
name: Deploy (GH-Pages)
needs: semantic-version
strategy:
matrix:
os: [ubuntu-latest]
node: [20]
runs-on: ${{ matrix.os }}
steps:
- name: download vitest code coverage results
uses: actions/download-artifact@v4
with:
name: vitest-code-coverage-report
path: ./coverage/
- name: deploy to gh-pages
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: coverage
merge-back-to-beta:
name: Update beta branch
needs: semantic-version
strategy:
matrix:
os: [ubuntu-latest]
node: [20]
runs-on: ${{ matrix.os }}
steps:
- name: checkout repo
uses: actions/checkout@v4
- name: set git config
run: |
git config --local user.email "[email protected]"
git config --local user.name "Github Actions"
- name: merge main back to beta
run: |
git fetch --unshallow
git checkout beta
git pull
git merge --no-ff main -m "Auto-merge main back to beta"
git push