From 388519fa73e53d8de80115c7ee3bef4fc6841be4 Mon Sep 17 00:00:00 2001 From: jo Date: Sun, 10 Apr 2022 16:29:12 +0200 Subject: [PATCH] ci: add website-preview workflow --- .github/workflows/website-preview.yml | 124 ++++++++++++++++++++++++++ .github/workflows/website.yml | 8 ++ website/docusaurus.config.js | 4 +- 3 files changed, 134 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/website-preview.yml diff --git a/.github/workflows/website-preview.yml b/.github/workflows/website-preview.yml new file mode 100644 index 000000000..9b5446bb6 --- /dev/null +++ b/.github/workflows/website-preview.yml @@ -0,0 +1,124 @@ +name: Website Preview + +on: + issue_comment: + types: [created] + pull_request_target: + types: [closed] + branches: [main] + paths: + - website/** + - docs/** + +env: + # PREVIEW_DEPLOY_KEY is present in the secrets + PREVIEW_EXTERNAL_REPOSITORY: libretime/libretime.github.io + PREVIEW_URL: https://libretime.github.io + PREVIEW_BASE_URL: / + +jobs: + deploy: + if: > + github.event.issue.pull_request + && ( + github.event.comment.author_association == 'OWNER' + || github.event.comment.author_association == 'MEMBER' + ) + && startsWith(github.event.comment.body, '/deploy-website') + name: Deploy + runs-on: ubuntu-latest + + steps: + - name: Notify deployment triggered + uses: peter-evans/create-or-update-comment@v2 + with: + issue-number: ${{ github.event.issue.number }} + comment-id: ${{ github.event.comment.id }} + reactions: "+1" + + - uses: actions/checkout@v3 + + - name: Checkout pull request + run: hub pr checkout ${{ github.event.issue.number }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: "16" + cache: yarn + cache-dependency-path: website/yarn.lock + + - uses: actions/cache@v3 + with: + path: website/.docusaurus + key: docusaurus-main-pr-${{ github.event.issue.number }} + restore-keys: | + docusaurus-main- + + - name: Install + working-directory: website + run: yarn install --frozen-lockfile + + - name: Build + working-directory: website + run: yarn build + env: + URL: ${{ env.PREVIEW_URL }} + BASE_URL: ${{ env.PREVIEW_BASE_URL }}pr-${{ github.event.issue.number }}/ + + - name: Deploy + uses: peaceiris/actions-gh-pages@v3 + with: + external_repository: ${{ env.PREVIEW_EXTERNAL_REPOSITORY }} + deploy_key: ${{ secrets.PREVIEW_DEPLOY_KEY }} + publish_dir: website/build + destination_dir: pr-${{ github.event.issue.number }} + full_commit_message: "deploy: pr-${{ github.event.issue.number }}" + keep_files: true + + - name: Notify deployment succeeded + if: ${{ success() }} + uses: peter-evans/create-or-update-comment@v2 + with: + issue-number: ${{ github.event.issue.number }} + body: | + **:rocket: Preview deployment succeeded!** + + Preview: ${{ env.PREVIEW_URL }}${{ env.PREVIEW_BASE_URL }}pr-${{ github.event.issue.number }}/ + Workflow: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} + + - name: Notify deployment failed + if: ${{ failure() }} + uses: peter-evans/create-or-update-comment@v2 + with: + issue-number: ${{ github.event.issue.number }} + body: | + **:boom: Preview deployment failed!** + + Workflow: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} + + clean: + if: github.event.action == 'closed' + name: Clean + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + with: + repository: ${{ env.PREVIEW_EXTERNAL_REPOSITORY }} + ssh-key: ${{ secrets.PREVIEW_DEPLOY_KEY }} + + - name: Clean preview + run: | + git config --local user.name 'github-actions[bot]' + git config --local user.email 'github-actions[bot]@users.noreply.github.com' + + rm -fR pr-${{ github.event.pull_request.number }} + + if ! git diff-index --quiet HEAD --; then + git add . + git commit -m "clean: pr-${{ github.event.pull_request.number }}" + git push + fi diff --git a/.github/workflows/website.yml b/.github/workflows/website.yml index 5026e3988..09b8cac19 100644 --- a/.github/workflows/website.yml +++ b/.github/workflows/website.yml @@ -8,6 +8,13 @@ on: - website/** - docs/** + pull_request: + branches: [main] + paths: + - .github/workflows/website.yml + - website/** + - docs/** + jobs: deploy: name: Deploy @@ -39,6 +46,7 @@ jobs: run: yarn build - name: Deploy + if: github.ref == 'refs/heads/main' uses: peaceiris/actions-gh-pages@v3 with: github_token: ${{ secrets.GITHUB_TOKEN }} diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js index 8355ead2a..b097e7048 100644 --- a/website/docusaurus.config.js +++ b/website/docusaurus.config.js @@ -7,8 +7,8 @@ const vars = require("./vars"); const config = { title: vars.title, tagline: vars.description, - url: vars.website, - baseUrl: "/", + url: process.env.URL || vars.website, + baseUrl: process.env.BASE_URL || "/", onBrokenLinks: "throw", onBrokenMarkdownLinks: "throw", favicon: "img/icon.svg",