57 lines
1.6 KiB
YAML
57 lines
1.6 KiB
YAML
# hugo.yml
|
|
#
|
|
# Takes a repository with Hugo source, generates the static site and
|
|
# pushes the result to Codeberg pages
|
|
#
|
|
# Needs a codeberg access token (codeberg_token) as a secret in Woodpecker config
|
|
# Also uses another secret (mail) with email address for git config
|
|
#
|
|
# .domains file in the repository is copied to the output branch so custom domains work
|
|
#
|
|
# The HUGO_OUTPUT variable must be set to the build output folder configured in Hugo
|
|
#
|
|
|
|
# Exclude page pipeline to be run on "pages" branch
|
|
when:
|
|
branch:
|
|
exclude: pages
|
|
|
|
# Recursive cloning is used to fully clone the themes given as Git submodules
|
|
clone:
|
|
git:
|
|
image: woodpeckerci/plugin-git
|
|
settings:
|
|
recursive: true
|
|
|
|
steps:
|
|
# Build hugo static files
|
|
build:
|
|
image: klakegg/hugo
|
|
commands:
|
|
- hugo --minify
|
|
when:
|
|
event: [ pull_request, push ]
|
|
|
|
publish:
|
|
image: bitnami/git
|
|
# Must be set in Woodpecker configuration
|
|
secrets: [ mail, codeberg_token ]
|
|
environment:
|
|
- HUGO_OUTPUT=public
|
|
commands:
|
|
# Git configuration
|
|
- git config --global user.email $MAIL
|
|
- git config --global user.name "Woodpecker CI"
|
|
- git clone -b pages https://$CODEBERG_TOKEN@codeberg.org/$CI_REPO.git $CI_REPO_NAME
|
|
# Copy build step output to repository folder
|
|
- cp -ar $HUGO_OUTPUT/. $CI_REPO_NAME/
|
|
# Needed for custom domains
|
|
- cp .domains $CI_REPO_NAME || true # Ignore if it doesn't exist
|
|
# Commit and push all static files with pipeline started timestamp
|
|
- cd $CI_REPO_NAME
|
|
- git add .
|
|
- git commit -m "Woodpecker CI ${CI_COMMIT_SHA}"
|
|
- git push
|
|
when:
|
|
event: push
|