From 9099fdefe368f79006f16629bffd94a7c5239452 Mon Sep 17 00:00:00 2001 From: IkiWiki Date: Sun, 25 Aug 2024 21:56:32 -0400 Subject: [PATCH] forgejo-ci: generate and clean-up previews when in PR --- .forgejo/workflows/cleanup.yaml | 32 ++++++++++++++++++++++ .forgejo/workflows/pages.yaml | 5 +++- .forgejo/workflows/preview.yaml | 48 +++++++++++++++++++++++++++++++++ 3 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 .forgejo/workflows/cleanup.yaml create mode 100644 .forgejo/workflows/preview.yaml diff --git a/.forgejo/workflows/cleanup.yaml b/.forgejo/workflows/cleanup.yaml new file mode 100644 index 0000000..808e4e7 --- /dev/null +++ b/.forgejo/workflows/cleanup.yaml @@ -0,0 +1,32 @@ +on: + pull_request: + types: [ closed, merged ] + +jobs: + cleanup: + runs-on: x86_64 + container: + image: alpine:latest + steps: + - name: Environment setup + run: | + apk add git nodejs jq coreutils curl tree + echo "GITHUB_PR_NAME=$(curl -Ls ${{ github.server_url }}/api/v1/repos/${{ github.repository }}/pulls/${{ github.ref_name }} | jq .title | tr ' ' '-' | tr -d ':' | tr -d '"' | tr '[:upper:]' '[:lower:]' )" >> $GITHUB_ENV + - name: Public repo pull + uses: actions/checkout@v4 + with: + fetch-depth: 0 + token: ${{ secrets.PAGES_TOKEN }} + ref: public + - name: Render website + run: | + rm -rf previews/$GITHUB_PR_NAME || true + cd previews + tree -d -H '.' -L 1 --noreport --charset utf-8 -T "Versions" -o index.html + - name: Website upload + run: | + git config user.name "forgejo-actions[bot]" + git config user.email "dev@ayakael.net" + git add . + git commit -m "Clean-up $GITHUB_PR_NAME" + git push diff --git a/.forgejo/workflows/pages.yaml b/.forgejo/workflows/pages.yaml index 68acc0c..de37353 100644 --- a/.forgejo/workflows/pages.yaml +++ b/.forgejo/workflows/pages.yaml @@ -1,4 +1,7 @@ -on: [push] +on: + push: + branches: + - 'main' jobs: render: diff --git a/.forgejo/workflows/preview.yaml b/.forgejo/workflows/preview.yaml new file mode 100644 index 0000000..0891405 --- /dev/null +++ b/.forgejo/workflows/preview.yaml @@ -0,0 +1,48 @@ +on: + pull_request: + types: [ assigned, opened, synchronize, reopened ] + +jobs: + preview: + runs-on: x86_64 + container: + image: alpine:latest + steps: + - name: Environment setup + run: | + apk add git ikiwiki po4a perl-yaml-tiny tree nodejs jq coreutils curl + echo "GITHUB_PR_NAME=$(curl -Ls ${{ github.server_url }}/api/v1/repos/${{ github.repository }}/pulls/${{ github.ref_name }} | jq .title | tr ' ' '-' | tr -d ':' | tr -d '"' | tr '[:upper:]' '[:lower:]' )" >> $GITHUB_ENV + - name: Repo pull + uses: actions/checkout@v4 + with: + fetch-depth: 1 + token: ${{ secrets.PAGES_TOKEN }} + - name: Public repo pull + uses: actions/checkout@v4 + with: + fetch-depth: 0 + ref: public + path: public + token: ${{ secrets.PAGES_TOKEN }} + - name: Render website + run: | + rm -rf public/previews/$GITHUB_PR_NAME || true + mkdir -p public/previews/$GITHUB_PR_NAME + sed -i "s|destdir.*|destdir: ./public/previews/$GITHUB_PR_NAME|" ikiwiki.setup + ikiwiki --setup ikiwiki.setup + cd public/previews + tree -d -H '.' -L 1 --noreport --charset utf-8 -T "Versions" -o index.html + - name: Website upload + run: | + rm -Rf public/.forgejo + mkdir -p public/.forgejo/workflows + cp .forgejo/workflows/deploy.yaml public/.forgejo/workflows/. + git log -1 --pretty=%B > commit.txt + cd public + date > previews/$GITHUB_PR_NAME/generated.txt + # Note: the following account information will not work on GHES + git config user.name "forgejo-actions[bot]" + git config user.email "dev@ayakael.net" + git add . + git commit -F ../commit.txt + git push