was neues
This commit is contained in:
parent
cb45d801d4
commit
de1e828142
139
content/ersteseite.md
Normal file
139
content/ersteseite.md
Normal file
|
@ -0,0 +1,139 @@
|
|||
---
|
||||
title: Deployment von Hugo auf Codeberg Pages via Woodpecker CI
|
||||
description: Mit Codeberg-Pages eine eigene Webseite hosten
|
||||
image: https://i.imgur.com/8CCHQZf.png
|
||||
tags: Github, Hugo, Codeberg, ubuntu, linux
|
||||
lang: de
|
||||
dir: ltr
|
||||
toc: true
|
||||
toc_label: "Inhaltsverzeichnis"
|
||||
toc_icon: "browser"
|
||||
toc_sticky: "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](https://codeberg.org/repo/create)
|
||||
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
|
||||
```git clone https://codeberg.org/joerglohrer/hugo-codeberg-pages-template.git
|
||||
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
|
||||
```
|
||||
![](https://pad.gwdg.de/uploads/1596177b-0edd-4b54-bf40-6ee57da781b3.png)
|
||||
### Hugo installieren
|
||||
hugo new site hugo-codeberg-pages-template --force
|
||||
|
||||
|
||||
|
||||
### Vorbereitung für die Pipeline
|
||||
#### [Access Token erstellen](https://docs.codeberg.org/advanced/access-token/)
|
||||
|
||||
Unter https://codeberg.org/user/settings/applications
|
||||
![](https://pad.gwdg.de/uploads/f6c96753-5ec0-4171-883f-3c73b0f8b8fb.png)
|
||||
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:
|
||||
![](https://pad.gwdg.de/uploads/f2e2ac23-bd28-47d3-8337-7191d54cbef2.png)
|
||||
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.
|
||||
![](https://pad.gwdg.de/uploads/71208375-05dc-4388-986e-6b5d3df9941f.png)
|
||||
|
||||
Unter Allgemein
|
||||
![](https://pad.gwdg.de/uploads/e78b0d20-0591-4331-8c0d-f1ce388ee527.png)
|
||||
`.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
|
||||
```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 "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
|
||||
```
|
Loading…
Reference in a new issue