Compare commits

..

17 Commits

Author SHA1 Message Date
126bd66ddb and now the build passes with zero errors
All checks were successful
Deploy website on production server when committing on main / test (push) Successful in 9s
(until I shit my pants again with some other shenanigans)
2024-08-21 23:16:03 +02:00
ec6bbafb2e no, as it turns out, variables were not defined
All checks were successful
Deploy website on production server when committing on main / test (push) Successful in 8s
2024-08-21 23:15:08 +02:00
80b3490e37 are variables actually defined?
Some checks failed
Deploy website on production server when committing on main / test (push) Failing after 7s
2024-08-21 23:14:15 +02:00
0c6699e211 does it build on the CI now with submodules?
Some checks failed
Deploy website on production server when committing on main / test (push) Failing after 8s
2024-08-21 23:10:34 +02:00
911d274467 fucking ubuntu shit outdated repos, fuck canonical
Some checks failed
Deploy website on production server when committing on main / test (push) Failing after 11s
2024-08-21 23:03:26 +02:00
3a7beeade5 apt update, of course, now install hugo!
Some checks failed
Deploy website on production server when committing on main / test (push) Failing after 9s
2024-08-21 22:38:18 +02:00
db7f32eb7f need hugo installed to build hugo site, no?
Some checks failed
Deploy website on production server when committing on main / test (push) Failing after 3s
2024-08-21 22:35:44 +02:00
e13bd64dc6 stupid syntax error 2024-08-21 22:31:38 +02:00
f0cfff3818 fixed action syntax error (maybe?)
Some checks failed
Deploy website on production server when committing on main / test (push) Failing after 25s
2024-08-21 22:03:18 +02:00
123a090491 added automatic deploy workflow with Gitea CI Actions 2024-08-21 22:02:01 +02:00
1089dbe767 updated hugo-coder theme 2024-08-21 22:01:38 +02:00
3947b3e0c8 added deploy process 2024-08-21 22:01:24 +02:00
22c976ff21 added content security protection 2024-08-21 22:00:37 +02:00
fc9fce6e6d added version information 2024-08-21 21:49:00 +02:00
85bf73bdf3 changed description and social links, added default color scheme 2024-08-21 21:16:30 +02:00
4b597ca2d8 prep target in makefile now updates the submodules 2024-08-21 21:15:11 +02:00
7aa85522dc changed git url, added telegram and linkedin 2024-04-20 00:24:33 +02:00
8 changed files with 177 additions and 7 deletions

View File

@@ -0,0 +1,34 @@
---
name: Deploy website on production server when committing on main
concurrency: 1
on:
push:
branches:
- main
defaults:
run:
shell: bash
jobs:
test:
runs-on: ubuntu-latest
steps:
- run: echo "${{ secrets.SSH_PRIVATE_KEY }}" > /private.key
- run: chmod 600 /private.key
- run: |
export HUGO_VERSION=$(curl --silent -I https://github.com/gohugoio/hugo/releases/latest | grep location | sed 's|.*tag/||' | tr -d '\r')
export HUGO_VERSION_SHORT=$(echo ${HUGO_VERSION} | sed 's/v//')
wget https://github.com/gohugoio/hugo/releases/download/${HUGO_VERSION}/hugo_${HUGO_VERSION_SHORT}_linux-amd64.deb
dpkg -i hugo_*.deb
- uses: actions/checkout@v4
with:
submodules: true
- run: APP_VERSION=latest make
- run: |
export SSH_PRIVATE_KEY=/private.key
export SSH_USERNAME=${{ secrets.SSH_USERNAME }}
export DEPLOYMENT_HOST=${{ secrets.DEPLOYMENT_HOST }}
export DEPLOYMENT_PATH=${{ secrets.DEPLOYMENT_PATH }}
make deploy

4
.vars Normal file
View File

@@ -0,0 +1,4 @@
#/usr/bin/env bash
export DEPLOYMENT_HOST=docker.infra.bjphoster.cloud
export DEPLOYMENT_PATH=/opt/pedini.dev

9
content/version.md Normal file
View File

@@ -0,0 +1,9 @@
+++
date = "2024-08-21T20:58:34+02:00"
title = "Version Information"
url = "/version"
+++
Version: VAR_VERSION
Commit ID: [VAR_COMMIT_ID](VAR_COMMIT_URL)
Theme Commit ID: [VAR_THEME_COMMIT](VAR_THEME_URL)

42
deploy.sh Executable file
View File

@@ -0,0 +1,42 @@
#!/usr/bin/env bash
set -e
###
# FLOW
###
#
# if the private key variable is set, prepend "-i" to it
# if the username variable is set, append the at sign to it
# if either the deployment host or deployment path variables are not set, return an error
# tarball the built website and scp it to the deployment host
# ssh to the remote host, cd to the deployment path, and get the data path from .env file
# then remove everything in the data path, untar the tarball and reload the server
# finally remove the tarball, both from the remote host and locally (cleanup)
# Check if the private key variable is set
if [ ! -z "${SSH_PRIVATE_KEY}" ]; then
SSH_PRIVATE_KEY="-i ${SSH_PRIVATE_KEY}"
fi
# Check if the username variable is set
if [ ! -z "${SSH_USERNAME}" ]; then
SSH_USERNAME="${SSH_USERNAME}@"
fi
# Check if either the deployment host or deployment path variables are not set
if [ -z "${DEPLOYMENT_HOST}" ] || [ -z "${DEPLOYMENT_PATH}" ]; then
echo "required variable DEPLOYMENT_HOST is not set"
exit 1
fi
tar -czf httpdocs.tgz -C public .
scp -o StrictHostKeyChecking=no ${SSH_PRIVATE_KEY} httpdocs.tgz ${SSH_USERNAME}${DEPLOYMENT_HOST}:/tmp/httpdocs.tgz
ssh -o StrictHostKeyChecking=no ${SSH_PRIVATE_KEY} ${SSH_USERNAME}${DEPLOYMENT_HOST} "DEPLOYMENT_PATH=$DEPLOYMENT_PATH bash" << 'EOF'
cd ${DEPLOYMENT_PATH}
DATAPATH=$(cat .env | grep "NGINX_DATA" | sed "s/NGINX_DATA=//g")
rm -rf ${DATAPATH}/{*,.*}
tar xf /tmp/httpdocs.tgz -C ${DATAPATH}
docker compose restart
rm -f /tmp/httpdocs.tgz
EOF
rm -f httpdocs.tgz

View File

@@ -4,24 +4,58 @@ languageCode: "en-us"
title: "Bryan Joshua Pedini" title: "Bryan Joshua Pedini"
theme: "hugo-coder" theme: "hugo-coder"
markup:
goldmark:
renderer:
hardWraps: true
params: params:
author: "Bryan Joshua Pedini" author: "Bryan Joshua Pedini"
info: "FullStack developer, Networking/Docker specialist, DevOps enthusiast, k8s newbie, disco lover" info: "FullStack Developer - Integration Manager - Cloud/PBX/Network/Docker Specialist - DevOps Enthusiast - Kubernetes/Ceph Apprentice"
description: "Bryan's personal website / blog" description: "Bryan's personal website / blog"
keywords: "blog,personal,developer,networking,docker,devops,k8s,kubernetes" keywords: "blog,personal,developer,networking,docker,devops,k8s,kubernetes"
gravatar: "bryan@pedini.dev" gravatar: "bryan@pedini.dev"
since: 2019 since: 2019
commit: "https://git.bjphoster.com/source/pedini.dev/tree/" commit: "https://git.bjphoster.com/source/pedini.dev/"
colorScheme: "dark"
csp:
childsrc:
- self
fontsrc:
- self
formaction:
- self
framesrc:
- self
imgsrc:
- self
objectsrc:
- self
stylesrc:
- self
scriptsrc:
- self
connectsrc:
- self
social: social:
- name: "Git" - name: "Git"
icon: "fa-brands fa-git fa-2x" icon: "fa-brands fa-git fa-2x"
weight: 1 weight: 1
url: "https://git.bjphoster.com" url: "https://45r.it/bjphoster-git"
- name: "Instagram" - name: "Instagram"
icon: "fa-brands fa-instagram fa-2x" icon: "fa-brands fa-instagram fa-2x"
weight: 2 weight: 2
url: "https://instagram.com/bryanp_og/" url: "https://45r.it/pedini-ig"
- name: "Telegram"
icon: "fa-brands fa-telegram fa-2x"
weight: 3
url: "https://45r.it/pedini-tg"
- name: "LinkedIn"
icon: "fa-brands fa-linkedin fa-2x"
weight: 4
url: "https://45r.it/pedini-li"
menu: menu:
main: main:
@@ -34,6 +68,9 @@ menu:
- name: "Contacts" - name: "Contacts"
weight: 3 weight: 3
url: "contacts/" url: "contacts/"
- name: "Version"
weight: 4
url: "version/"
taxonomies: taxonomies:
category: "categories" category: "categories"

View File

@@ -1,12 +1,16 @@
#!make #!make
include .vars
default: build default: build
prep: prep:
git submodule update --init --recursive git submodule foreach --recursive bash -c "git checkout \$$(git remote show origin | grep HEAD | sed 's/.*\: //'); git pull"
build: prep build: prep
hugo ./version.sh
deploy:
./deploy.sh
run: prep run: prep
hugo server hugo server

40
version.sh Executable file
View File

@@ -0,0 +1,40 @@
#!/usr/bin/env bash
set -e
# Check if version is already provided
if [ -z "${APP_VERSION}" ]; then
# Get version from user
read -p "Version [latest]: " VERSIONINPUT
# If version was not provided, use the latest commit short hash as version
if [ -z ${VERSIONINPUT} ]; then
APP_VERSION="latest"
else
APP_VERSION=${VERSIONINPUT}
fi
fi
# Get project commit id and URL
COMMIT_ID=$(git log HEAD --oneline | awk '{print $1}' | head -n1)
COMMIT_URL="$(git remote get-url origin | sed 's/\.git$//g;s/:/\//;s/git@/https:\/\//')/commit/${COMMIT_ID}"
# Get the theme used and its commit id and URL
THEME=$(cat hugo.yaml | grep "theme:" | awk '{print $2}' | sed 's/"//g')
pushd themes/${THEME} &>/dev/null
THEME_COMMIT=$(git log HEAD --oneline | awk '{print $1}' | head -n1)
THEME_URL="$(git remote get-url origin | sed 's/\.git$//g')/commit/${THEME_COMMIT}"
popd &>/dev/null
# Create version tag (if provided)
if [ ! -z ${VERSIONINPUT} ]; then
git tag ${APP_VERSION}
fi
# Build the website
hugo
# Put the correct version information in the website
sed -i "s|VAR_VERSION|${APP_VERSION}|" public/version/index.html
sed -i "s|VAR_COMMIT_ID|${COMMIT_ID}|" public/version/index.html
sed -i "s|VAR_COMMIT_URL|${COMMIT_URL}|" public/version/index.html
sed -i "s|VAR_THEME_URL|${THEME_URL}|" public/version/index.html
sed -i "s|VAR_THEME_COMMIT|${THEME_COMMIT}|" public/version/index.html