hugo-codeberg-pages-template/ersteseite/index.html

75 lines
9 KiB
HTML

<!doctype html><html lang=de-de><head><meta charset=utf-8><meta http-equiv=x-ua-compatible content="IE=edge,chrome=1"><title>Deployment von Hugo auf Codeberg Pages via Woodpecker CI | Meine neue Hugo Seite</title><meta name=viewport content="width=device-width,minimum-scale=1"><meta name=description content="Mit Codeberg-Pages eine eigene Webseite hosten"><meta name=generator content="Hugo 0.111.3"><meta name=robots content="noindex, nofollow"><link rel=stylesheet href=/hugo-codeberg-pages-template/ananke/css/main.min.css><link rel=canonical href=https://joerglohrer.codeberg.page/hugo-codeberg-pages-template/ersteseite/><meta property="og:title" content="Deployment von Hugo auf Codeberg Pages via Woodpecker CI"><meta property="og:description" content="Mit Codeberg-Pages eine eigene Webseite hosten"><meta property="og:type" content="article"><meta property="og:url" content="https://joerglohrer.codeberg.page/hugo-codeberg-pages-template/ersteseite/"><meta property="article:section" content><meta itemprop=name content="Deployment von Hugo auf Codeberg Pages via Woodpecker CI"><meta itemprop=description content="Mit Codeberg-Pages eine eigene Webseite hosten"><meta itemprop=wordCount content="537"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="Deployment von Hugo auf Codeberg Pages via Woodpecker CI"><meta name=twitter:description content="Mit Codeberg-Pages eine eigene Webseite hosten"></head><body class="ma0 avenir bg-near-white DEV"><header><div class=bg-black><nav class="pv3 ph3 ph4-ns" role=navigation><div class="flex-l justify-between items-center center"><a href=/hugo-codeberg-pages-template/ class="f3 fw2 hover-white no-underline white-90 dib">Meine neue Hugo Seite</a><div class="flex-l items-center"><div class=ananke-socials></div></div></div></nav></div></header><main class=pb7 role=main><div class="flex-l mt2 mw8 center"><article class="center cf pv5 ph3 ph4-ns mw7"><header><h1 class=f1>Deployment von Hugo auf Codeberg Pages via Woodpecker CI</h1></header><div class="nested-copy-line-height lh-copy f4 nested-links mid-gray"><h1 id=deployment-von-hugo-auf-codeberg-pages-via-woodpecker-ci>Deployment von Hugo auf Codeberg Pages via Woodpecker CI</h1><p><a href=https://codeberg.org/joerglohrer/hugopage>https://codeberg.org/joerglohrer/hugopage</a></p><h2 id=vorbereitung>Vorbereitung</h2><p><a href=https://toheine.net/posts/2023/website-deployment/>https://toheine.net/posts/2023/website-deployment/</a>
<a href=https://discourse.gohugo.io/t/is-it-possible-to-use-hugo-in-codeberg-page-repositories/31012/3>https://discourse.gohugo.io/t/is-it-possible-to-use-hugo-in-codeberg-page-repositories/31012/3</a></p><h3 id=neues-repository-auf-codeberg-erstellenhttpscodebergorgrepocreate><a href=https://codeberg.org/repo/create>Neues Repository auf Codeberg erstellen</a></h3><p>Lizenz: Apache-2.0, Repository initalisieren Standardbranch main, Rpository zu einem Template machen</p><h3 id=repo-klonen>Repo klonen</h3><p><a href=https://docs.codeberg.org/getting-started/first-repository/#option-a%3A-clone-the-newly-created%2C-empty-repository>https://docs.codeberg.org/getting-started/first-repository/#option-a%3A-clone-the-newly-created%2C-empty-repository</a></p><pre tabindex=0><code class=language-git data-lang=git>cd hugo-codeberg-pages-template
</code></pre><h3 id=branch-pages-erstellen>Branch <code>pages</code> erstellen</h3><pre tabindex=0><code>git switch --orphan pages
</code></pre><ul><li><code>git switch</code>: Dieser Befehl wird verwendet, um zwischen verschiedenen Git-Branches zu wechseln.</li><li><code>--orphan</code>: 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.</li><li><code>pages</code>: Das ist der Name des neuen Branches, der erstellt wird.</li></ul><pre tabindex=0><code>git rm --cached -r .
</code></pre><ul><li><code>git rm</code>: Der Befehl zum Entfernen von Dateien aus der Git-Verfolgung. Die Dateien werden nicht aus deinem Arbeitsverzeichnis gelöscht.</li><li><code>--cached</code>: Diese Flagge weist Git an, die Dateien nur aus dem Staging-Bereich zu entfernen, nicht aus deinem lokalen Dateisystem.</li><li><code>-r</code>: Diese Flagge aktiviert die rekursive Entfernung, d.h. sie zielt auf Dateien in allen Unterverzeichnissen ab.</li><li><code>.</code> : Der Punkt kennzeichnet &ldquo;alles im aktuellen Verzeichnis und darunter&rdquo;.</li></ul><pre tabindex=0><code>nano neu.md
git add neu.md
git commit -m &#34;neu&#34;
git push --set-upstream origin pages
</code></pre><p><img src=https://pad.gwdg.de/uploads/1596177b-0edd-4b54-bf40-6ee57da781b3.png alt></p><h3 id=hugo-installieren>Hugo installieren</h3><p>hugo new site hugo-codeberg-pages-template &ndash;force</p><h3 id=vorbereitung-für-die-pipeline>Vorbereitung für die Pipeline</h3><h4 id=access-token-erstellenhttpsdocscodebergorgadvancedaccess-token><a href=https://docs.codeberg.org/advanced/access-token/>Access Token erstellen</a></h4><p>Unter <a href=https://codeberg.org/user/settings/applications>https://codeberg.org/user/settings/applications</a>
<img src=https://pad.gwdg.de/uploads/f6c96753-5ec0-4171-883f-3c73b0f8b8fb.png alt>
Im Beispiel wird der Token-Name &ldquo;hugopagetoken&rdquo; generiert bei dem in den Berechtigungen unter &ldquo;repository&rdquo; 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.</p><h4 id=geheimnisse-eintragen>Geheimnisse eintragen</h4><p>Auf <a href=https://ci.codeberg.org/repos>https://ci.codeberg.org/repos</a> das Repo hinzufügen für das die Pipeline gestartet werden soll und dort die Geheimnisse eintragen:
<img src=https://pad.gwdg.de/uploads/f2e2ac23-bd28-47d3-8337-7191d54cbef2.png alt>
Im Beispiel wird ein Geheimnis mit dem Namen <code>codeberg_token</code> mit generierte <code>hugopagetoken</code> mit dem Wert <code>883029f2a627c7b5fa181f24b9205a775add1ff1</code> eingesetzt und dann noch das Geheimnis <code>mail</code> mit der Mailadresse des dazu passenden Codeberg-Users als Wert gespeichert.</p><p>Die Geheimnisse werden zur Laufzeit als Umgebungsvariablen an einzelne Pipelineschritte übergeben.
<img src=https://pad.gwdg.de/uploads/71208375-05dc-4388-986e-6b5d3df9941f.png alt></p><p>Unter Allgemein
<img src=https://pad.gwdg.de/uploads/e78b0d20-0591-4331-8c0d-f1ce388ee527.png alt>
<code>.woodpecker.yml</code> angeben und die Vorlage verwenden aus folgendem Pipeline Beispiel</p><h3 id=codeberg-pages>Codeberg Pages</h3><p><a href=https://docs.codeberg.org/codeberg-pages/>https://docs.codeberg.org/codeberg-pages/</a>
Example Pipeline
<a href=https://codeberg.org/Codeberg-CI/examples/src/branch/main/Hugo>https://codeberg.org/Codeberg-CI/examples/src/branch/main/Hugo</a></p><pre tabindex=0><code class="language-shell=ssh" data-lang="shell=ssh"># 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 &#34;pages&#34; 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 &#34;Woodpecker CI&#34;
- 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&#39;t exist
# Commit and push all static files with pipeline started timestamp
- cd $CI_REPO_NAME
- git add .
- git commit -m &#34;Woodpecker CI ${CI_COMMIT_SHA}&#34;
- git push
when:
event: push
</code></pre></div></article></div></main><footer class="bg-black bottom-0 w-100 pa3" role=contentinfo><div class="flex justify-between"><a class="f4 fw4 hover-white no-underline white-70 dn dib-ns pv2 ph3" href=https://joerglohrer.codeberg.page/hugo-codeberg-pages-template/>&copy; Meine neue Hugo Seite 2024</a><div><div class=ananke-socials></div></div></div></footer></body></html>