72 lines
2.1 KiB
YAML
72 lines
2.1 KiB
YAML
name: build-run
|
||
|
||
# Controls when the action will run.
|
||
on:
|
||
# Triggers the workflow on push or pull request events for specific branches
|
||
push:
|
||
branches: [main, dev, angular-update-18]
|
||
pull_request:
|
||
branches: [main, dev, angular-update-18]
|
||
|
||
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
|
||
jobs:
|
||
# This workflow contains a single job called "build"
|
||
build:
|
||
# The type of runner that the job will run on
|
||
name: Run Lint, Build and Deploy
|
||
runs-on: ubuntu-latest
|
||
|
||
# Steps represent a sequence of tasks that will be executed as part of the job
|
||
steps:
|
||
- name: Checkout code
|
||
uses: actions/checkout@v4
|
||
|
||
- name: Use Node.js 22
|
||
uses: actions/setup-node@v3
|
||
with:
|
||
# no support for lts as of now with github actions.
|
||
# issue link : https://github.com/actions/setup-node/issues/26
|
||
# lts/gallium node v19.7.0 (npm v9.5.0)
|
||
node-version: '22.9.0'
|
||
|
||
- name: Remove node_modules
|
||
run: rm -rf node_modules
|
||
|
||
- name: Run CI
|
||
run: npm ci
|
||
|
||
- name: Fallback – Clean install with regenerated lockfile
|
||
if: failure()
|
||
run: |
|
||
echo "npm ci failed — regenerating lockfile and retrying"
|
||
rm -rf node_modules package-lock.json
|
||
npm install
|
||
|
||
- name: Run eslint
|
||
run: npx eslint .
|
||
|
||
- name: Run stylelint
|
||
run: npx stylelint "src/**/*.scss"
|
||
|
||
- name: Run prettier
|
||
run: npx prettier . --check
|
||
|
||
- name: Run HTMLHint
|
||
run: npx htmlhint "src" --config .htmlhintrc
|
||
|
||
- name: Run production build
|
||
run: npm run build:prod
|
||
|
||
- name: Deploy to github pages
|
||
if: ${{ github.event_name == 'push' }}
|
||
uses: JamesIves/github-pages-deploy-action@v4
|
||
with:
|
||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||
BRANCH: gh-pages
|
||
FOLDER: dist/web-app
|
||
#without preserve it only builds if you have untracked files
|
||
PRESERVE: true
|
||
# github user name and email shows up in the logs,
|
||
# so it would be better to make it silent.
|
||
SILENT: true
|