# When publish a release. This workflow will trigger and deploy to site. name: Deploy website on: create permissions: contents: write jobs: setup: runs-on: ubuntu-latest if: github.event.ref_type == 'tag' && (contains(github.event.ref, '-') == false) steps: - name: checkout uses: actions/checkout@v3 - name: cache package-lock.json uses: actions/cache@v3 with: path: package-temp-dir key: lock-${{ github.sha }} - name: create package-lock.json run: npm i --package-lock-only --ignore-scripts - name: hack for single file run: | if [ ! -d "package-temp-dir" ]; then mkdir package-temp-dir fi cp package-lock.json package-temp-dir - name: cache node_modules id: node_modules_cache_id uses: actions/cache@v3 with: path: node_modules key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }} - name: install if: steps.node_modules_cache_id.outputs.cache-hit != 'true' run: npm ci build-and-deploy: runs-on: ubuntu-latest needs: setup steps: - name: checkout uses: actions/checkout@v3 - name: restore cache from package-lock.json uses: actions/cache@v3 with: path: package-temp-dir key: lock-${{ github.sha }} - name: restore cache from node_modules uses: actions/cache@v3 with: path: node_modules key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }} - name: build run: npm run predeploy - name: deploy uses: peaceiris/actions-gh-pages@v3 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./_site force_orphan: true