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:
parent
c14ccdf2d2
commit
fc108d2064
2 changed files with 48 additions and 0 deletions
47
.forgejo/workflows/pr.yml
Normal file
47
.forgejo/workflows/pr.yml
Normal 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
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
*~
|
Loading…
Reference in a new issue