Deployment von Hugo auf Codeberg Pages via Woodpecker CI
Deployment von Hugo auf Codeberg Pages via Woodpecker CI
https://codeberg.org/joerglohrer/hugopage
Vorbereitung
https://toheine.net/posts/2023/website-deployment/ -https://discourse.gohugo.io/t/is-it-possible-to-use-hugo-in-codeberg-page-repositories/31012/3
Neues Repository auf Codeberg erstellen
Lizenz: Apache-2.0, Repository initalisieren Standardbranch main, Rpository zu einem Template machen
Repo klonen
cd hugo-codeberg-pages-template
-
Branch pages
erstellen
git switch --orphan pages
-
git switch
: Dieser Befehl wird verwendet, um zwischen verschiedenen Git-Branches zu wechseln.--orphan
: Diese Option erzeugt einen neuen Branch, der keine Eltern-Commits hat. Er ist sozusagen völlig losgelöst von der bisherigen Commit-Historie des Repositorys.pages
: Das ist der Name des neuen Branches, der erstellt wird.
git rm --cached -r .
-
git rm
: Der Befehl zum Entfernen von Dateien aus der Git-Verfolgung. Die Dateien werden nicht aus deinem Arbeitsverzeichnis gelöscht.--cached
: Diese Flagge weist Git an, die Dateien nur aus dem Staging-Bereich zu entfernen, nicht aus deinem lokalen Dateisystem.-r
: Diese Flagge aktiviert die rekursive Entfernung, d.h. sie zielt auf Dateien in allen Unterverzeichnissen ab..
: Der Punkt kennzeichnet “alles im aktuellen Verzeichnis und darunter”.
nano neu.md
-git add neu.md
-git commit -m "neu"
-git push --set-upstream origin pages
-
Hugo installieren
hugo new site hugo-codeberg-pages-template –force
Vorbereitung für die Pipeline
Access Token erstellen
Unter https://codeberg.org/user/settings/applications - -Im Beispiel wird der Token-Name “hugopagetoken” generiert bei dem in den Berechtigungen unter “repository” Lesen und Schreiben ausgewählt ist. -Soblad man auf “Token generieren” klickt, erscheint der Token mit einem Hinweis, diesen jetzt zu kopieren, da er später nicht mehr angezeigt wird.
Geheimnisse eintragen
Auf https://ci.codeberg.org/repos das Repo hinzufügen für das die Pipeline gestartet werden soll und dort die Geheimnisse eintragen:
-
-Im Beispiel wird ein Geheimnis mit dem Namen codeberg_token
mit generierte hugopagetoken
mit dem Wert 883029f2a627c7b5fa181f24b9205a775add1ff1
eingesetzt und dann noch das Geheimnis mail
mit der Mailadresse des dazu passenden Codeberg-Users als Wert gespeichert.
Die Geheimnisse werden zur Laufzeit als Umgebungsvariablen an einzelne Pipelineschritte übergeben. -
Unter Allgemein
-
-.woodpecker.yml
angeben und die Vorlage verwenden aus folgendem Pipeline Beispiel
Codeberg Pages
https://docs.codeberg.org/codeberg-pages/ -Example Pipeline -https://codeberg.org/Codeberg-CI/examples/src/branch/main/Hugo
# hugo.yml
-#
-# Nimmt ein Repository mit Hugo-Quellcode, generiert die statische Website und veröffentlicht das Ergebnis auf Codeberg Pages
-#
-# Benötigt ein Codeberg-Zugangs-Token (codeberg_token) als secret in der Woodpecker-Konfiguration
-# Verwendet auch ein anderes secret (mail) mit E-Mail-Adresse für die Git-Konfiguration
-#
-# .domains-Datei im Repository wird in den Ausgabezweig kopiert, damit benutzerdefinierte Domains funktionieren
-#
-# Die Variable HUGO_OUTPUT muss auf den in Hugo konfigurierten Ausgabeordner gesetzt werden.
-
-
-# Ausschluss, dass die page-pipeline auf den "pages" Zweig angewendet wird
-when:
- branch:
- exclude: pages
- event: [push, pull_request]
-
-# Rekursives Klonen wird verwendet, um die als Git-Submodule angegebenen Themes vollständig zu klonen
-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
-