hugo-codeberg-pages-template/content/ersteseite.md
2024-04-26 14:07:55 +02:00

5.4 KiB

title description image tags lang dir toc toc_label toc_icon toc_sticky
Deployment von Hugo auf Codeberg Pages via Woodpecker CI Mit Codeberg-Pages eine eigene Webseite hosten https://i.imgur.com/8CCHQZf.png Github, Hugo, Codeberg, ubuntu, linux de ltr true Inhaltsverzeichnis browser true

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

https://docs.codeberg.org/getting-started/first-repository/#option-a%3A-clone-the-newly-created%2C-empty-repository

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