From 0bc0f5911575bad9c953da30c199f72f0bde6844 Mon Sep 17 00:00:00 2001 From: Jonah Aragon Date: Thu, 28 Mar 2024 21:30:13 -0500 Subject: [PATCH] Add Pull Request deployment workflow --- .github/workflows/build.yml | 80 +++++++++++++++++++++++++++++ .github/workflows/download-repo.yml | 28 ++++++++++ .github/workflows/preview-pr.yml | 41 +++++++++++++++ 3 files changed, 149 insertions(+) create mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/download-repo.yml create mode 100644 .github/workflows/preview-pr.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000000..472f43a901 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,80 @@ +name: Build Website + +on: + workflow_call: + inputs: + ref: + required: true + type: string + repo: + required: true + type: string + lang: + required: true + type: string + +jobs: + build: + runs-on: ubuntu-latest + permissions: + contents: read + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + repository: ${{ inputs.repo }} + ref: ${{ inputs.ref }} + persist-credentials: 'false' + + - uses: actions/download-artifact@v4 + with: + path: modules + + - run: | + rmdir modules/mkdocs-material + mv modules/mkdocs-material-insiders modules/mkdocs-material + rmdir theme/assets/brand + mv modules/brand theme/assets/brand + + - if: inputs.lang != 'en' + run: | + cp -rl modules/i18n/i18n . + cp -rl modules/i18n/includes . + cp -rl modules/i18n/theme . + + - name: Python setup + uses: actions/setup-python@v5 + with: + python-version: '3.8' + cache: 'pipenv' + + - name: Cache files + uses: actions/cache@v4.0.2 + with: + key: ${{ inputs.ref }} + path: .cache + + - name: Install Python dependencies + run: | + pip install pipenv + pipenv install + sudo apt install pngquant + + - name: Build website + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + CARDS: false + CONTEXT: deploy-preview + NETLIFY: true + run: | + pipenv run mkdocs build --config-file config/mkdocs.${{ inputs.lang }}.yml + cp -r static/* site/ + pipenv run mkdocs --version + tar -czvf site-build-${{ inputs.lang }}.tar.gz site + + - name: Upload tar.gz file + uses: actions/upload-artifact@v4 + with: + name: site-build-${{ inputs.lang }}.tar.gz + path: site-build-${{ inputs.lang }}.tar.gz diff --git a/.github/workflows/download-repo.yml b/.github/workflows/download-repo.yml new file mode 100644 index 0000000000..c67e0eae5d --- /dev/null +++ b/.github/workflows/download-repo.yml @@ -0,0 +1,28 @@ +name: Download repository + +on: + workflow_call: + inputs: + repo: + required: true + type: string + secrets: + ACTIONS_SSH_KEY: + required: true + +jobs: + download: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + repository: 'privacyguides/${{ inputs.repo }}' + path: ${{ inputs.repo }} + ssh-key: ${{ secrets.ACTIONS_SSH_KEY }} + + - uses: actions/upload-artifact@v4 + with: + name: ${{ inputs.repo }} + path: ${{ inputs.repo }} + retention-days: 1 diff --git a/.github/workflows/preview-pr.yml b/.github/workflows/preview-pr.yml new file mode 100644 index 0000000000..38857de9c0 --- /dev/null +++ b/.github/workflows/preview-pr.yml @@ -0,0 +1,41 @@ +name: Build Pull Request Preview + +on: + pull_request_target: + +jobs: + downloadSubmodules: + strategy: + matrix: + repo: [mkdocs-material-insiders, brand, i18n] + uses: ./.github/workflows/download-repo.yml + with: + repo: ${{ matrix.repo }} + secrets: + ACTIONS_SSH_KEY: ${{ secrets.ACTIONS_SSH_KEY }} + + build: + needs: downloadSubmodules + strategy: + matrix: + lang: [en, es, fr, he, it, nl, ru, zh-Hant] + permissions: + contents: read + uses: ./.github/workflows/build.yml + with: + ref: ${{github.event.pull_request.head.ref}} + repo: ${{github.event.pull_request.head.repo.full_name}} + lang: ${{ matrix.lang }} + + deploy: + needs: build + runs-on: ubuntu-latest + steps: + - uses: actions/download-artifact@v4 + with: + pattern: site-build-* + merge-multiple: true + + - run: | + tar -xvzf site-build-* + ls -la site/