ccchh-website/.forgejo/workflows/deploy.yaml
June c777d22169
Some checks failed
/ build (pull_request) Failing after 1s
switch to hugomods hugo image
As the current image is out-of-date, the GitLab documentation also uses
a hugomods image and as we're already using one in other repos, switch
to it.

Match the hugo version currently in use for now as the latest version
doesn't build the website.

https://docs.gitlab.com/tutorials/hugo/#add-your-gitlab-configuration-options
https://docker.hugomods.com/
https://github.com/hugomods/docker
https://hub.docker.com/r/hugomods/hugo
2025-07-23 22:26:52 +02:00

81 lines
3.1 KiB
YAML

on:
push:
branches:
- main
pull_request:
schedule:
- cron: "0,20,40 * * * *"
env:
TZ: Europe/Berlin
jobs:
build:
runs-on: docker
container:
image: hugomods/hugo:debian-node-lts-0.140.2
steps:
- name: Pipeline info
run: |
echo "Run triggered by ${{ github.event_name }} (${{ github.event.action }}) on ref ${{ github.ref_name }}"
- name: Install packages
run: |
apk update
# For CI actions.
apk add nodejs-current
# For website build.
apk add tzdata coreutils curl jq git
# For uploading.
apk add rsync openssh
- uses: actions/checkout@v4
with:
fetch-depth: 0 # pull full history for page lastmod by git commit date
- name: Build website - prod
run: |
./fetch-calendar.sh
hugo
- name: Build website - staging
if: github.ref_name != 'main'
run: |
sed -i "s#baseURL = 'https://hamburg.ccc.de/'#baseURL = 'https://staging.hamburg.ccc.de/pr${{ github.event.pull_request.number }}/'#" hugo.toml
sed -i "s#index = true#index = false#" hugo.toml
sed -i "s#follow = true#follow = false#" hugo.toml
./fetch-calendar.sh
hugo --buildFuture
- name: Deploy - Prepare keys
if: github.event_name == 'push' || github.event_name == 'pull_request' || github.event_name == 'schedule'
run: |
echo "${{ secrets.SSH_DEPLOY_KEY }}" > deploykey.priv
chmod 400 deploykey.priv
echo "${{ secrets.SSH_KNOWN_HOSTS_FILE }}" > ./known_hosts
- name: Deploy - Upload PR to staging
if: github.event_name == 'pull_request'
run: |
echo "Deploying to staging.hamburg.ccc.de/pr${{ github.event.pull_request.number }}"
rsync -v -r --delete -e "ssh -i deploykey.priv -o 'UserKnownHostsFile ./known_hosts'" public/ ccchh-website-deploy@public-web-static-intern.hamburg.ccc.de:/var/www/staging.hamburg.ccc.de/pr${{ github.event.pull_request.number }}/
- name: Deploy - Add comment to PR with staging URL
if: github.event_name == 'pull_request' && github.event.action == 'opened'
run: |
curl \
-X POST \
${{ github.event.pull_request.base.repo.url }}/issues/${{ github.event.pull_request.number }}/comments \
-H "Content-Type: application/json" \
-H "Authorization: token $GITHUB_TOKEN" \
--data '{ "body": "You can view your changes at https://staging.hamburg.ccc.de/pr${{ github.event.pull_request.number }}/" }'
- name: Deploy - Upload to prod
if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref_name == 'main'
run: |
rsync -v -r --delete -e "ssh -i deploykey.priv -o 'UserKnownHostsFile ./known_hosts'" public/ ccchh-website-deploy@public-web-static-intern.hamburg.ccc.de:/var/www/hamburg.ccc.de/
- uses: actions/upload-artifact@v3
if: github.event_name == 'pull_request'
with:
name: website-build
path: public/