Compare commits

..

33 Commits

Author SHA1 Message Date
8a94fe0add THE PRIVATE KEEEEEEEYYY
All checks were successful
Deploy website on production server when committing on main / test (push) Successful in 11s
2026-02-01 19:25:29 +01:00
2f2c60126c feat(deploy): improve environment variable handling and deployment workflow
Some checks failed
Deploy website on production server when committing on main / test (push) Failing after 12s
- Update .vars to properly export deployment configuration variables
- Modify deploy.sh to conditionally source .vars only in interactive mode
- Remove include directive from makefile to prevent automatic variable loading
- Enhance deployment script reliability by ensuring proper environment setup
2026-02-01 19:24:37 +01:00
83728057ee stupid variables
Some checks failed
Deploy website on production server when committing on main / test (push) Failing after 9s
2026-02-01 19:19:36 +01:00
4f16efe7ed ssh key is handled by the job
Some checks failed
Deploy website on production server when committing on main / test (push) Failing after 8s
2026-02-01 19:13:29 +01:00
289e06d6c3 fuck you
Some checks failed
Deploy website on production server when committing on main / test (push) Failing after 8s
2026-02-01 19:12:14 +01:00
94469a598b omfg the ci
Some checks failed
Deploy website on production server when committing on main / test (push) Failing after 8s
2026-02-01 19:11:20 +01:00
50cd2ae16f try this
Some checks failed
Deploy website on production server when committing on main / test (push) Failing after 9s
2026-02-01 19:08:02 +01:00
53795cf5cd removed debug, fixed deployment env
Some checks failed
Deploy website on production server when committing on main / test (push) Failing after 9s
2026-02-01 19:06:40 +01:00
4fa2be1351 stderr
Some checks failed
Deploy website on production server when committing on main / test (push) Failing after 8s
2026-02-01 19:02:44 +01:00
d1465de486 updated theme
Some checks failed
Deploy website on production server when committing on main / test (push) Failing after 8s
2026-02-01 18:56:14 +01:00
2e333ce882 added verbosity
Some checks failed
Deploy website on production server when committing on main / test (push) Failing after 12s
2026-02-01 18:50:36 +01:00
9463c44034 feat(deploy): improve ssh key handling and deployment security
Some checks failed
Deploy website on production server when committing on main / test (push) Failing after 9s
- Remove hardcoded SSH private key file path from workflow
- Use proper SSH directory structure (~/.ssh/) for key storage
- Add known_hosts file for improved SSH security
- Move environment variables to dedicated env block
- Remove StrictHostKeyChecking=no for better security
- Update deploy script to use proper SSH key path
- Maintain deployment path configuration via environment variables
2026-02-01 18:35:37 +01:00
b7286eeeb6 fix: use explicit bash path in makefile scripts
Specify full path to bash interpreter for version.sh and deploy.sh scripts in makefile to ensure consistent execution across different environments and avoid potential PATH issues.
2026-02-01 18:17:37 +01:00
9a4bdf15a3 fix: update deployment workflow concurrency settings
Configure concurrency group for website deployment workflow to prevent race conditions and ensure orderly deployment execution. The cancel-in-progress setting is set to false to maintain deployment stability.
2026-02-01 18:16:51 +01:00
fafafb0d37 chore: update deployment trigger from branch push to tag push
Change deployment workflow to trigger on tag pushes instead of main branch pushes, allowing for more controlled and versioned deployments.
2026-02-01 18:16:20 +01:00
d0189c57a5 fix(deploy): remove docker compose restart from deployment script
Removes the 'docker compose restart' command from the deployment script as it was causing unnecessary service interruptions during deployment. The tar extraction and cleanup steps are sufficient for updating the application files without requiring a full container restart.
2026-02-01 18:12:28 +01:00
126bd66ddb and now the build passes with zero errors
Some checks failed
Deploy website on production server when committing on main / test (push) Failing after 10s
(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 187 additions and 7 deletions

View File

@@ -0,0 +1,41 @@
---
name: Deploy website on production server when committing on main
concurrency:
group: deploy-website
cancel-in-progress: false
on:
push:
tags:
- '*'
defaults:
run:
shell: bash
jobs:
test:
runs-on: ubuntu-latest
steps:
- 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: |
mkdir -p ~/.ssh/
echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519
echo "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts
make
make deploy
env:
SSH_USERNAME: ${{ vars.SSH_USERNAME }}
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
SSH_KNOWN_HOSTS: ${{ vars.SSH_KNOWN_HOSTS }}
DEPLOYMENT_HOST: ${{ vars.DEPLOYMENT_HOST }}
DEPLOYMENT_PATH: ${{ vars.DEPLOYMENT_PATH }}
APP_VERSION: ${{ env.GITEA_REF_NAME }}

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 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)
if [ -t 0 ]; then # Interactive: prompt user
source .vars
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
# Compress the built website and scp it to the remote host
tar -czf httpdocs.tgz -C public .
scp httpdocs.tgz ${SSH_USERNAME}${DEPLOYMENT_HOST}:/tmp/httpdocs.tgz
# SSH to the remote host, cd to the deployment path, and deploy the website (delete and overwrite everything)
ssh ${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}
rm -f /tmp/httpdocs.tgz
EOF
rm -f httpdocs.tgz

View File

@@ -4,24 +4,58 @@ languageCode: "en-us"
title: "Bryan Joshua Pedini"
theme: "hugo-coder"
markup:
goldmark:
renderer:
hardWraps: true
params:
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"
keywords: "blog,personal,developer,networking,docker,devops,k8s,kubernetes"
gravatar: "bryan@pedini.dev"
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:
- name: "Git"
icon: "fa-brands fa-git fa-2x"
weight: 1
url: "https://git.bjphoster.com"
url: "https://45r.it/bjphoster-git"
- name: "Instagram"
icon: "fa-brands fa-instagram fa-2x"
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:
main:
@@ -34,6 +68,9 @@ menu:
- name: "Contacts"
weight: 3
url: "contacts/"
- name: "Version"
weight: 4
url: "version/"
taxonomies:
category: "categories"

View File

@@ -3,10 +3,13 @@
default: build
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
hugo
/usr/bin/env bash version.sh
deploy:
/usr/bin/env bash deploy.sh
run: prep
hugo server

44
version.sh Executable file
View File

@@ -0,0 +1,44 @@
#!/usr/bin/env bash
set -e
# Check if version is already provided
if [ -z "${APP_VERSION}" ]; then
if [ -t 0 ]; then # Interactive: prompt user
# 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
else # Non-interactive (CI): default to "latest"
APP_VERSION="latest"
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