Skip to content

Commit

Permalink
use workflow_call
Browse files Browse the repository at this point in the history
  • Loading branch information
Kariton committed Jul 30, 2024
1 parent 0c933ea commit ad3f73f
Show file tree
Hide file tree
Showing 11 changed files with 166 additions and 116 deletions.
37 changes: 22 additions & 15 deletions .github/workflows/build-hugo.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
name: Hugo build
name: Build with Hugo

on:
push:
branches: ["main"]
branches:
- main
- draft
paths:
- '.github/**'
- 'assets/**'
Expand All @@ -19,7 +21,7 @@ on:
workflow_dispatch:

concurrency:
group: "hugo"
group: ${{ github.ref_name }}
cancel-in-progress: true

defaults:
Expand All @@ -37,38 +39,38 @@ jobs:
wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \
&& sudo dpkg -i ${{ runner.temp }}/hugo.deb
- name: Checkout
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive

- name: Create LFS file list
run: git lfs ls-files --long | cut -d ' ' -f1 | sort > .lfs-assets-id

- name: LFS Cache
uses: actions/cache@v3
- name: Fetch LFS directory from cache
uses: actions/cache@v4
with:
path: .git/lfs/objects
key: ${{ runner.os }}-lfs-${{ hashFiles('.lfs-assets-id') }}
key: ${{ runner.os }}-lfs-${{ github.ref_name }}-${{ hashFiles('.lfs-assets-id') }}
restore-keys: |
${{ runner.os }}-lfs
${{ runner.os }}-lfs-${{ github.ref_name }}
- name: Git LFS Pull
run: git lfs pull

- name: Fetch resources directory from cache
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: resources
key: ${{ runner.os }}-hugo-resources-directory-${{ github.run_id }}
key: ${{ runner.os }}-hugo-resources-directory-${{ github.ref_name }}-${{ github.run_id }}
restore-keys: |
${{ runner.os }}-hugo-resources-directory
${{ runner.os }}-hugo-resources-directory-${{ github.ref_name }}
- name: Build with Hugo
env:
HUGO_ENVIRONMENT: ${{ github.ref_name == 'main' && 'production' || 'development' }}
# For maximum backward compatibility with Hugo modules
HUGO_ENVIRONMENT: production
HUGO_ENV: production
HUGO_ENV: ${{ github.ref_name == 'main' && 'production' || 'development' }}
run: |
hugo \
--gc \
Expand All @@ -77,9 +79,14 @@ jobs:
- name: Run pagefind
run: npm_config_yes=true npx pagefind

- name: Upload artifact
- name: Upload public directory as artifact
uses: actions/upload-artifact@v4
with:
name: public
name: ${{ github.ref_name }}-public
path: ./public
if-no-files-found: error

deploy:
needs: build
uses: ./.github/workflows/deploy-hetzner_webhost.yml
secrets: inherit
34 changes: 13 additions & 21 deletions .github/workflows/deploy-hetzner_webhost.yml
Original file line number Diff line number Diff line change
@@ -1,34 +1,26 @@
name: Deployment to Hetzner Webhost
name: Deploy to Hetzner Webhost

on:
workflow_run:
workflows: ["Hugo build"]
types:
- completed

concurrency:
group: "hugo"
cancel-in-progress: true
workflow_call:

defaults:
run:
shell: bash

jobs:
deploy:
hetzner_webhost:
runs-on: ubuntu-latest
environment: "${{ github.ref_name == 'main' && 'production' || 'draft' }}-hetzner_webhost"
steps:
- name: Install lftp
run: |
sudo apt update &&\
sudo apt install lftp -y
sudo apt update
sudo apt install -y lftp
- name: Download artifact
- name: Download public directory as artifact
uses: actions/download-artifact@v4
with:
run-id: ${{ github.event.workflow_run.id }}
github-token: ${{ secrets.GITHUB_TOKEN }}
name: public
name: ${{ github.ref_name }}-public
path: ./public

- name: Set up SSH key
Expand All @@ -38,8 +30,8 @@ jobs:
chmod 600 ~/.ssh/id_ed25519
ssh-keyscan -p 22 -t ed25519 "${HOST}" >> ~/.ssh/known_hosts
env:
SSH_KEY: ${{ secrets.SFTP_SSH_KEY }}
HOST: ${{ secrets.SFTP_HOST }}
SSH_KEY: ${{ secrets.HETZNER_SFTP_SSH_KEY }}
HOST: ${{ secrets.HETZNER_SFTP_HOST }}

- name: Deploy to Hetzner Webhosting
run: |
Expand All @@ -49,6 +41,6 @@ jobs:
bye \
" -u "${USERNAME}", sftp://${HOST}
env:
USERNAME: ${{ secrets.SFTP_USERNAME }}
HOST: ${{ secrets.SFTP_HOST }}
DIRECTORY: ${{ secrets.SFTP_DIRECTORY }}
USERNAME: ${{ secrets.HETZNER_SFTP_USERNAME }}
HOST: ${{ secrets.HETZNER_SFTP_HOST }}
DIRECTORY: ${{ secrets.HETZNER_SFTP_DIRECTORY }}
24 changes: 12 additions & 12 deletions Dockerfile-deploy-hetzner-webhost
Original file line number Diff line number Diff line change
Expand Up @@ -19,29 +19,29 @@ RUN npm_config_yes=true npx pagefind
#####################################################################
FROM alpine:latest

ARG SFTP_USERNAME
ENV SFTP_USERNAME ${SFTP_USERNAME}
ARG SFTP_SSH_KEY
ENV SFTP_SSH_KEY ${SFTP_SSH_KEY}
ARG SFTP_HOST
ENV SFTP_HOST ${SFTP_HOST}
ARG SFTP_DIRECTORY
ENV SFTP_DIRECTORY ${SFTP_DIRECTORY}
ARG HETZNER_SFTP_USERNAME
ENV HETZNER_SFTP_USERNAME ${HETZNER_SFTP_USERNAME}
ARG HETZNER_SFTP_SSH_KEY
ENV HETZNER_SFTP_SSH_KEY ${HETZNER_SFTP_SSH_KEY}
ARG HETZNER_SFTP_HOST
ENV HETZNER_SFTP_HOST ${HETZNER_SFTP_HOST}
ARG HETZNER_SFTP_DIRECTORY
ENV HETZNER_SFTP_DIRECTORY ${HETZNER_SFTP_DIRECTORY}

RUN apk add --update-cache \
openssh \
lftp \
&& rm -rf /var/cache/apk/*

RUN mkdir -p ~/.ssh &&\
echo -e "${SFTP_SSH_KEY}" > ~/.ssh/id_ed25519 &&\
echo -e "${HETZNER_SFTP_SSH_KEY}" > ~/.ssh/id_ed25519 &&\
chmod 600 ~/.ssh/id_ed25519 && \
ssh-keyscan -p 22 -t ed25519 "${SFTP_HOST}" >> ~/.ssh/known_hosts
ssh-keyscan -p 22 -t ed25519 "${HETZNER_SFTP_HOST}" >> ~/.ssh/known_hosts

COPY --from=builder /src/public /public

RUN lftp -e " \
set sftp:connect-program 'ssh -a -x -i ~/.ssh/id_ed25519'; \
mirror -vv --no-empty-dirs --no-symlinks --delete --reverse ./public ${SFTP_DIRECTORY}; \
mirror -vv --no-empty-dirs --no-symlinks --delete --reverse ./public ${HETZNER_SFTP_DIRECTORY}; \
bye \
" -u "${SFTP_USERNAME}", sftp://${SFTP_HOST}
" -u "${HETZNER_SFTP_USERNAME}", sftp://${HETZNER_SFTP_HOST}
3 changes: 1 addition & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
[![Hugo](https://img.shields.io/badge/Hugo-black.svg?style=for-the-badge&logo=Hugo)](https://hugo.io/)
[![license](https://img.shields.io/badge/license-Apache%202.0-blue.svg?style=plastic)](https://github.com/kariton/jaspers-it/blob/main/LICENSE)
[![Hugo build](https://github.com/Kariton/jaspers-it/actions/workflows/build-hugo.yml/badge.svg)](https://github.com/Kariton/jaspers-it/actions/workflows/build-hugo.yml)
[![deployment to Hetzner Webhost](https://github.com/Kariton/jaspers-it/actions/workflows/deploy-hetzner_webhost.yml/badge.svg)](https://github.com/Kariton/jaspers-it/actions/workflows/deploy-hetzner_webhost.yml)
[![Build with Hugo](https://github.com/Kariton/jaspers-it/actions/workflows/build-hugo.yml/badge.svg)](https://github.com/Kariton/jaspers-it/actions/workflows/build-hugo.yml)

# Codebase for my personal website [jaspers.it](https://jaspers.it)

Expand Down
3 changes: 2 additions & 1 deletion config/development/hugo.yaml
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
title: Jaspers IT DEV
title: Jaspers IT DRAFT
baseURL: 'https://draft.jaspers.it'
9 changes: 9 additions & 0 deletions config/development/params.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#
# Additional parameters
#

giscus:
enable: false

robotsDisallow:
- /
78 changes: 50 additions & 28 deletions content/de/privacy-policy/index.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
title: Datenschutzerklärung
description: null
description: Es werden keine personenbezogenen Daten erhoben, gespeichert oder ausgewertet.
linktitle: null
subtitle: false
subtitle: true
draft: false
frontmatter_configure_menu: false
frontmatter_configure_seo: false
Expand All @@ -15,56 +15,71 @@ resources: {}
toc: true
aliases: []
fmContentType: content-standalone
lastmod: 2024-07-22T20:26:14.901Z
lastmod: 2024-07-23T22:05:40.130Z
---

Über die Webserverprotokolle hinaus werden keine weiteren Daten erhoben, gespeichert oder ausgewertet.
Deine persönlichen Daten sind unbezahlbar und ausschließlich deine. Sie sind dein privates Eigentum und müssen als solches geschützt werden!
{.p-first}

## Generell

Personenbezogene Daten sind das neue Rohöl.
Da ich auch deine Daten schützen möchte, wähle ich alle Bestandteile für den Betrieb dieser Seite sorgfältig und nach bestem Wissen und Gewissen aus.
Ich habe kein Interesse an deinen persönlichen Daten!

Dennoch bin ich für den Schutz deiner Daten auf den Datenschutz der Anbieter verschiedener Dienstleistungen angewiesen.
Es werden ausschließlich Dienste verwendet, die angeben, sich an die [DSGVO](https://dsgvo-gesetz.de) zu halten.
Da ich deine Daten schützen will, wähle ich alle Bestandteile für den Betrieb dieser Seite sorgfältig und nach bestem Wissen und Gewissen aus.

Für maximale Transparenz habe ich hier aufgeschlüsselt auf welche Dienstleistungen ich zurück greife und wie diese mit den anfallenden Daten umgehen.
Jedoch bin ich für den Schutz deiner persönlichen Daten auf die Datenschutzpraktiken der Anbieter verschiedener Dienstleistungen angewiesen. Es werden ausschließlich Dienste verwendet, die angeben, sich mindestens an die [europäische Datenschutz-Grundverordnung (DSGVO)](https://www.bfdi.bund.de/DE/DerBfDI/Inhalte/Datenschutzpfad/DSGVO.html) und [ePrivacy Verordnung](https://www.bfdi.bund.de/DE/Fachthemen/Inhalte/Telemedien/ePrivacy_Verordnung.html) zu halten.

Für maximale Transparenz habe ich aufgeschlüsselt, welche Dienstleistungen ich nutze und wie diese mit den anfallenden Daten umgehen oder auf welche Daten ich Zugriff habe.

Ich zitiere teilweise Ausschnitte und/oder übersetze aus dem Englischen die Richtlinien der Anbieter zum aktuellen Zeitpunkt (07/2024).
Unter jedem dieser Zitate ist eine entsprechende Quellenangabe.
Änderungen an diesen durch die Dienstleister kann ich nicht ausschließen.
Alle Angaben ohne Gewähr.

## Informationenserfassung

Ich sammle, speichere oder analysiere keine Cookies oder personalisierten Informationen von dir.
Ich erfasse, speichere oder analysiere keine Cookies oder personenbezogenen Informationen.

## Hosting-Anbieter
## Hosting Anbieter

Diese Website wird durch [Hetzner Webhosting](https://www.hetzner.com/webhosting) betrieben.
Diese Website wird bei [Hetzner Webhosting](https://www.hetzner.com/webhosting) betrieben.

### Datenschutzrichtlinie des Hosting-Anbieters
### Datenschutzrichtlinie von Hetzner Webhosting

#### Hetzner Webhosting
> Logfiles speichern unter anderem die IP Adresse, den verwendeten Browser, Uhrzeit und Datum und das genutzte System eines Seitenbesuchers. Bei uns werden nur anonymisierte IP Adressen von Besuchern der Website gespeichert. Auf Webserver-Ebene erfolgt dies dadurch, dass im Logfile standardmäßig statt der tatsächlichen IP Adresse des Besuchers z.B. `<123.123.123.123>` eine IP Adresse `<123.123.123.XXX>` gespeichert wird, wobei XXX ein Zufallswert zwischen 1 und 254 ist. Die Herstellung eines Personenbezuges ist nicht mehr möglich.
> --- [Hetzner Datenschutz FAQ](https://docs.hetzner.com/de/general/general-terms-and-conditions/data-privacy-faq/)
> Logfiles speichern unter anderem die IP-Adresse, den verwendeten Browser, Uhrzeit und Datum und das genutzte System eines Seitenbesuchers. Bei uns werden nur anonymisierte IP-Adressen von Besuchern der Website gespeichert. Auf Webserver-Ebene erfolgt dies dadurch, dass im Logfile standardmäßig statt der tatsächlichen IP-Adresse des Besuchers z.B. `<123.123.123.123>` eine IP-Adresse `<123.123.123.XXX>` gespeichert wird, wobei XXX ein Zufallswert zwischen 1 und 254 ist. Die Herstellung eines Personenbezuges ist nicht mehr möglich.
> -- [Hetzner Datenschutz FAQ](https://docs.hetzner.com/de/general/general-terms-and-conditions/data-privacy-faq/)
Ich habe die Aufbewahrung von Webserver Logs für Hetzner Webhosting deaktiviert. Nichtsdestotrotz habe ich weiterhin Zugriff auf [Live Logs](https://docs.hetzner.com/de/konsoleh/account-management/statistics/live-logs/), bei denen IP Adressen, wie oben angegeben, anonymisiert werden, um deine Privatsphäre zu schützen. Rein zu Debugging-Zwecken würde ich die Webserver Logs sichten.

Ich habe die Aufbewahrung von Webserver Logs für Hetzner Webhosting deaktiviert. Nichtsdestotrotz habe ich weiterhin Zugriff auf [Live Logs](https://docs.hetzner.com/konsoleh/account-management/statistics/live-logs), bei denen IP Adressen, wie oben angegeben, anonymisiert werden, um deine Privatsphäre zu schützen.
Rein zu Debugging-Zwecken würde ich die Webserver Logs überprüfen.
## Kommentarfunktion

## Kommentarbereich
Die Kommentarfunktion wird durch [giscus](https://github.com/giscus/giscus) ermöglicht.

[giscus](https://github.com/apps/giscus) bietet die Möglichkeit, auf statischen Webseiten Kommentare zu hinterlassen, indem der Kommentarbereich mit einer [GitHub Diskussion](https://docs.github.com/en/discussions) verknüpft wird.
Mit giscus kann die Kommentarsektion mit einer [GitHub Diskussion](https://docs.github.com/en/discussions) verknüpft und eingebettet werden. Um einen Kommentar zu hinterlassen, musst du die [giscus App](https://giscus.app) autorisieren, [in deinem Namen](https://docs.github.com/de/apps/creating-github-apps/authenticating-with-a-github-app/authenticating-with-a-github-app-on-behalf-of-a-user), mittels des GitHub-OAuth-Verfahrens zu posten.
{.inline}

Um einen Kommentar zu hinterlassen, musst du die [giscus App](https://giscus.app) autorisieren, [in deinem Namen](https://docs.github.com/en/developers/apps/identifying-and-authorizing-users-for-github-apps), mittels des GitHub-OAuth Verfahren, zu posten.
{{< mnote >}}
Um kommentieren zu können, ist ein GitHub Konto, für das die [Datenschutzrichtlinie](https://docs.github.com/de/site-policy/privacy-policies/github-general-privacy-statement) und die [Nutzungsbedingungen](https://docs.github.com/de/site-policy/github-terms/github-terms-of-service) von GitHub gelten, notwendig.
{{< /mnote >}}

Alternativ kannst du, sofern die Diskussion bereits existiert, auch [direkt über GitHub](https://github.com/Kariton/jaspers-it/discussions/categories/giscus) kommentieren.

### Datenschutzrichtlinie von giscus

Aufgrund einer fehlenden deutschen Fassung hier ein übersetzter Auszug der giscus Datenschutzrichtlinie:

Aufgrund einer fehlenden deutschen fassung hier eine Übersetzung:
> Wir sammeln keine Daten.
> [...]
> Wenn Sie sich jedoch mit GitHub auf unserer Website anmelden, wird ein serverseitig schlüsselter Token im lokalen Speicher des Browsers hinterlegt. Bei jedem erneuten Laden der Website wird der Token von unserem Server entschlüsselt, um Ihnen zu ermöglichen, authentifizierte Anfragen an die GitHub-API zu stellen.
> --- [giscus Datenschutzrichtlinie](https://github.com/giscus/giscus/blob/main/PRIVACY-POLICY.md)
Alternativ kannst du, sofern die Diskussion bereits existiert, auch [direkt über GitHub](https://github.com/Kariton/jaspers-it/discussions/categories/giscus) kommentieren.
> Wenn Sie sich jedoch mit GitHub auf unserer Website anmelden, wird ein serverseitig verschlüsselter Token im lokalen Speicher des Browsers hinterlegt. Bei jedem erneuten Laden der Website wird der Token von unserem Server entschlüsselt, um Ihnen zu ermöglichen, authentifizierte Anfragen an die GitHub-API zu stellen.
> --- [giscus Datenschutzrichtlinie](https://github.com/giscus/giscus/blob/main/PRIVACY-POLICY.md) (übersetzt)
## Analytik

Ich habe (derzeit) nichts implementiert, um Bewegungsmuster auf meiner Website zu erfassen oder zu analysieren.
Ich plane jedoch, in Zukunft [Fathom Analytics](https://usefathom.com) zu verwenden.

### Suchmaschinen

Ich benutze [Google Search Console](https://search.google.com/search-console) und [Bing Webmaster Tools](https://www.bing.com/webmasters), um zu verstehen, wie Leute meine Website entdecken. Diese Dienste bieten mir Einblicke, teilen jedoch keine persönlichen Daten über dich mit mir.

Informationen, die ich durch diese Dienste erhalte, umfassen unter anderem:
Expand All @@ -73,8 +88,15 @@ Informationen, die ich durch diese Dienste erhalte, umfassen unter anderem:
- Die am häufigsten aufgerufenen Seiten
- Herkunftsland
- Typ des Geräts
- Verlinkungen, von anderen, auf meine Seiten
- Verlinkungen von anderen auf meine Seiten

Dies ist ein branchenüblicher Standard und funktioniert nur für Nutzer, die über Google- oder Bing-Suchergebnisse auf diese Seite zugreifen.
Dies ist ein branchenüblicher Standard und funktioniert nur für Nutzer, die über die Google- oder Bing-Suchergebnisse auf diese Seite zugreifen.

Andere Zugriffe, wie direkte Besuche oder Verlinkungen von anderen Webseiten, sind davon nicht betroffen.

## Änderungen an der Datenschutzerklärung

Diese Datenschutzerklärung kann jederzeit geändert werden.

Ich kann die Aussagen von Drittanbietern nicht überprüfen und stehe in keiner Verbindung zu den genannten Diensten.
Bitte überprüfe diese Richtlinie regelmäßig auf Aktualisierungen und auch die Datenschutzrichtlinien der verwendeten Drittanbieter.
Loading

0 comments on commit ad3f73f

Please sign in to comment.