Add blogpost about Forgejo actions
/ Build and Deploy Website (push) Successful in 1m59s Details

This commit is contained in:
Brayd 2023-12-25 22:55:29 +01:00
parent 5d5ce7fcd3
commit 9ee2b15d3d
Signed by: brayd
SSH Key Fingerprint: SHA256:qfebJ1zYUipSSbdcVk/qygkt0xr4VSzCKk7LXw6DGe0
2 changed files with 81 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 448 KiB

View File

@ -0,0 +1,81 @@
---
title: "Forgejo Actions ist was sehr geiles"
date: 2023-12-25T22:36:00+01:00
draft: false
images:
tags:
- Forgejo
- Informatik
- Programmieren
---
[Forgejo](https://forgejo.org/) ist eine Alternative zu GitHub, die man selbst hosten kann, auf seinem eigenen Server.
An sich ist das ganze sehr praktisch. Ich habe ebenfalls eine Instanz laufen unter https://code.braydmedia.de.
Ich liebe die Software aber darum soll es gar nicht generell gehen. Vielmehr möchte ich hier über Forgejo Actions schreiben, welche denen auf GitHub auch sehr ähnlich sind. Basically kann man dadurch den Code, den man ins Repository committed direkt ausführen lassen und so beispielsweise seine Software compilen lassen.
In meinem Fall habe ich das ganze im [Repository für diesen Blog](https://code.braydmedia.de/Braydmedia/braydmedia-web) aufgesetzt. Das ganze erleichtert meine Arbeit, wenn ich hier einen neuen Blogpost schreiben möchte enorm. In der Vergangenheit war das immer sehr viel Aufwand, weshalb ich nicht so oft neue Blogposts geschrieben habe.
Nachfolgend findet ihr mal einen Vergleich zwischen früher vs heute dank Forgejo Actions.
| **Früher** | **Heute** |
|---------------------------------------------------------------|------------------------------|
| Änderungen am Code vornehmen | Änderungen am Code vornehmen |
| Änderungen mit git committen | Änderungen mit git committen |
| Änderungen mit git pushen | Änderungen mit git pushen |
| Mit SFTP auf den Webserver verbinden | |
| Die lokalen Änderungen mit Hugo als statische Website builden | |
| Alte Dateien auf dem Webserver via SFTP löschen | |
| Neue statische Dateien via SFTP auf den Webserver hochladen | |
Das besondere an Forgejo Actions ist, dass ich alle Schritte, die ich früher machen musste, die nach dem pushen ins Repository stattgefunden haben, heute automatisieren kann. Hierzu ist eine Datei im Repository unter `.forgejo/workflows/deploy-to-website.yml` definiert. Diese Datei hat alle Infos darüber, was die Forgejo-Instanz jetzt machen soll, wenn ein neuer Commit zum Repository kommt.
Aussehen tut die Datei vom Inhalt aktuell so (die neuste Version findest du immer [im Repository](https://code.braydmedia.de/Braydmedia/braydmedia-web/src/branch/develop/.forgejo/workflows/deploy-to-website.yml)):
```yml
on: [push]
jobs:
Build and Deploy Website:
runs-on: docker
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: 'recursive'
- name: Update Repositories
run: apt-get update && apt-get upgrade -y
- name: Install Dependencies
run: apt-get install gcc git wget -y
- name: Download Golang v1.21.5
run: wget https://go.dev/dl/go1.21.5.linux-amd64.tar.gz
- name: Unpack Golang
run: rm -rf /usr/local/go && tar -C /usr/local -xzf go1.21.5.linux-amd64.tar.gz
- name: Remove downloaded archive
run: rm ./go1.21.5.linux-amd64.tar.gz
- name: Download Hugo v0.121.1 binary
run: wget https://github.com/gohugoio/hugo/releases/download/v0.121.1/hugo_0.121.1_linux-amd64.deb
- name: Install hugo
run: apt-get install ./hugo_0.121.1_linux-amd64.deb
- name: Remove downloaded .deb package
run: rm ./hugo_0.121.1_linux-amd64.deb
- name: Building Hugo Site
run: hugo
- name: Deploy built site
uses: https://github.com/Dylan700/sftp-upload-action@latest
with:
server: ${{secrets.SSH_URL}}
username: ${{secrets.SSH_USER}}
password: ${{secrets.SSH_PASSWORD}}
port: 22
uploads: |
./public => /www/
ignore: |
*.git
*/**/*git*
*.forgejo
*/**/*forgejo*
delete: 'true'
```
Generell geht die Datei vereinfacht gesagt alle vorher manuellen Schritte jetzt nach und nach automatisch durch, sobald ein neuer Commit zum Repository kommt. Ich liebe das, weil es mir die Arbeit so sehr vereinfacht. Forgejo Actions werden seit v1.19 von Forgejo unterstützt. Wenn ihr selbst eine Instanz habt, würde ich euch definitiv empfehlen das ganze zu nutzen. 👀
Ihr könnt daher jetzt auch damit rechnen, dass ich hier häufiger mal einen Blogpost bringen werde. Es ist nun wie gesagt deutlich einfacher für mich!