0
0
Fork 0
mirror of https://codeberg.org/forgejo/docs.git synced 2024-11-21 17:36:59 -05:00

add CI to preview PRs (#5)

TODO:

- [x] clone from website instead of caesar
- [x] skip the proof of change commit

Preview: https://forgejo.codeberg.page/@docs_pull_5/

This is a simplistic approach to get started with previews. It copies the website, moves the docs under `/forgejo-docs/{{ base branch }}`, create the website and publishes it for preview. No doubt the actual workflow will be different but that needs to be decided.

* Added a WEBSITETOKEN secret created from the forgejo-website user. It is a token with write access to repositories. https://codeberg.org/forgejo/docs/settings/actions/secrets. Contrary to woodpecker it is not in an environment variable but will be replaced when inserting `${{ secrets.WEBSITETOKEN }}` somewhere
* In the environment the variable was replaced CI_COMMIT_PULL_REQUEST → `${{ env.GITHUB_REF_NAME }}`
* The preview is published at https://forgejo.codeberg.page/@docs_pull_N/ instead of https://forgejo.codeberg.page/@pull_N/
* The `$$` were replaced with `$` in the script because Forgejo Actions does not interpret `$` and therefore does not need escaping them to `$$`

Reviewed-on: https://codeberg.org/forgejo/docs/pulls/5
Reviewed-by: Loïc Dachary <dachary@noreply.codeberg.org>
Reviewed-by: Caesar Schinas <caesar@caesarschinas.com>
Co-authored-by: Earl Warren <contact@earl-warren.org>
Co-committed-by: Earl Warren <contact@earl-warren.org>
This commit is contained in:
Earl Warren 2023-08-16 09:31:01 +00:00 committed by Earl Warren
parent c14ccdf2d2
commit fc108d2064
2 changed files with 48 additions and 0 deletions

47
.forgejo/workflows/pr.yml Normal file
View file

@ -0,0 +1,47 @@
name: pr
on:
pull_request:
jobs:
preview:
runs-on: docker
container:
image: node:20
steps:
- uses: https://code.forgejo.org/actions/checkout@v3
- name: get forgejo.org and move the docs
run: |
git clone --recursive --depth 1 https://codeberg.org/forgejo/website/ /tmp/website
rm -fr /tmp/website/forgejo-docs/${{ env.GITHUB_BASE_REF }}
mkdir -p /tmp/website/forgejo-docs/${{ env.GITHUB_BASE_REF }}
cp -a * /tmp/website/forgejo-docs/${{ env.GITHUB_BASE_REF }}
- name: install
run: |
cd /tmp/website
corepack enable
pnpm install --frozen-lockfile
- name: lint:eslint
run: |
cd /tmp/website
corepack enable
pnpm run format-ci
pnpm run lint:eslint
- name: preview
if: ${{ secrets.WEBSITETOKEN != '' }}
run: |
cd /tmp/website
colon=':'
branch=docs_pull_${{ env.GITHUB_REF_NAME }}
sed -i.orig -e "s|origin$colon '.*|origin$colon 'https$colon//forgejo.codeberg.page',|" -e "s|basePathname$colon '/'|basePathname$colon '/@$branch//'|" src/config.mjs
cat src/config.mjs
corepack enable
pnpm run build
git clone https://forgejo-website:${{ secrets.WEBSITETOKEN }}@codeberg.org/forgejo/pages /tmp/pages
git -C /tmp/pages switch -C $branch
mv /tmp/pages/.git dist
cd dist
git config user.email "ci@forgejo.org" ; git config user.name "forgejo-website"
git add .
git diff-index --quiet HEAD || git commit -m 'publish' -a
git push --force origin $branch

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
*~