9086f7833de69c80da3fc041f9a4206abf236c5a
All checks were successful
continuous-integration/drone/push Build is passing
Signed-off-by: kjuulh <contact@kjuulh.io>
Kasper Hermansen's Blog
A personal blog built with Zola (static site generator) and deployed using containerized CI/CD with Dagger.
Prerequisites
- mise - Development environment manager
- Rust - For running Dagger CI
- Docker - For containerization
Development
Quick Start
# Install dependencies and start dev server
mise run dev
This will:
- Start Zola dev server on http://localhost:8000
- Watch and compile Tailwind CSS changes
- Show posts in progress
Available Commands
mise run dev # Start development server with live reload
mise run ci:pr # Run CI build for pull requests
mise run ci:main # Run full CI pipeline (build + deploy)
Deployment
The blog uses a fully automated CI/CD pipeline built with Dagger (Rust SDK).
Manual Deployment
# Build and deploy to production
(cd ci && cargo build)
./ci/target/debug/ci main
This will:
- Compile Tailwind CSS styles
- Build static site with Zola
- Package with Caddy web server
- Push Docker image to registry
- Update deployment configuration in git
Automated Deployment
Pushing to main
branch triggers automatic deployment via CI.
Project Structure
├── content/posts/ # Blog posts (Markdown with YAML frontmatter)
├── templates/ # Zola templates (Tera)
├── static/ # Static assets
├── styles/ # Tailwind CSS source
├── ci/ # Dagger CI/CD pipeline (Rust)
├── deployment/ # Caddy server configuration
├── config.toml # Zola configuration
└── mise.toml # Development tasks
Adding Content
Create a new post in content/posts/
:
+++
title = "Your Post Title"
description = "Brief description"
date = 2025-01-01
draft = false
[taxonomies]
tags = ["rust", "development"]
+++
Your content here...
Description
Languages
CSS
79.7%
HTML
11.3%
Rust
8.5%
JavaScript
0.5%