forgejo-ci: generate and clean-up previews when in PR

This commit is contained in:
IkiWiki 2024-08-25 21:56:32 -04:00
parent f379ef3926
commit 9099fdefe3
Signed by untrusted user who does not match committer: forge
GPG key ID: D62A472A4AA7D541
3 changed files with 84 additions and 1 deletions

View file

@ -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

View file

@ -1,4 +1,7 @@
on: [push] on:
push:
branches:
- 'main'
jobs: jobs:
render: render:

View file

@ -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