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.12.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