name: Deploy to GitHub Pages on: push: branches: [ main, master ] paths: [ 'web/**' ] workflow_dispatch: permissions: contents: write pages: write id-token: write concurrency: group: "pages" cancel-in-progress: false jobs: build-and-deploy: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' cache: 'npm' cache-dependency-path: './web/package-lock.json' - name: Install dependencies working-directory: ./web run: | if [ -f "package-lock.json" ]; then npm ci else npm install fi - name: Build website working-directory: ./web run: npm run deploy - name: Deploy to gh-pages uses: peaceiris/actions-gh-pages@v3 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./web/out publish_branch: gh-pages cname: vocalinux.com force_orphan: true