fix: use npm install in CI to avoid Windows lockfile platform mismatch #3
This file contains hidden or 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: Deploy Documentation to GitHub Pages | |
| on: | |
| push: | |
| branches: | |
| - main | |
| paths: | |
| - 'docs/**' | |
| - 'exercises/**' | |
| - 'slides/**' | |
| - '*.md' | |
| - 'solution/MyHANAApp/README.md' | |
| - '.github/workflows/deploy-docs.yml' | |
| pull_request: | |
| branches: | |
| - main | |
| paths: | |
| - 'docs/**' | |
| - 'exercises/**' | |
| - 'slides/**' | |
| - '*.md' | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| pages: write | |
| id-token: write | |
| concurrency: | |
| group: pages-${{ github.ref }} | |
| cancel-in-progress: false | |
| jobs: | |
| security-scan: | |
| name: Security Scan | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| cache: 'npm' | |
| cache-dependency-path: 'docs/package-lock.json' | |
| - name: Install dependencies | |
| run: npm install | |
| working-directory: docs | |
| - name: Run security audit | |
| run: npm audit --audit-level=moderate || true | |
| working-directory: docs | |
| build: | |
| name: Build Documentation | |
| runs-on: ubuntu-latest | |
| needs: security-scan | |
| defaults: | |
| run: | |
| working-directory: docs | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 # required for lastUpdated timestamps | |
| submodules: true # required for future external repo content | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| cache: 'npm' | |
| cache-dependency-path: 'docs/package-lock.json' | |
| - uses: actions/cache@v4 | |
| with: | |
| path: docs/.vitepress/cache | |
| key: ${{ runner.os }}-vitepress-${{ hashFiles('docs/**/*.md', 'docs/.vitepress/**') }} | |
| restore-keys: | | |
| ${{ runner.os }}-vitepress- | |
| - name: Install dependencies | |
| run: npm install | |
| - name: Build VitePress documentation | |
| run: npm run docs:build | |
| - name: Verify build output | |
| run: | | |
| test -f .vitepress/dist/index.html || \ | |
| (echo "Build failed: index.html not found in dist/" && exit 1) | |
| echo "Build verification passed" | |
| - uses: actions/configure-pages@v4 | |
| if: github.event_name != 'pull_request' | |
| - uses: actions/upload-pages-artifact@v4 | |
| if: github.event_name != 'pull_request' | |
| with: | |
| path: docs/.vitepress/dist | |
| retention-days: 1 | |
| deploy: | |
| name: Deploy to GitHub Pages | |
| if: github.event_name != 'pull_request' | |
| environment: | |
| name: github-pages | |
| url: ${{ steps.deployment.outputs.page_url }} | |
| runs-on: ubuntu-latest | |
| needs: build | |
| steps: | |
| - uses: actions/deploy-pages@v4 | |
| id: deployment |