Compare commits

...

4 Commits

Author SHA1 Message Date
Dustin a4f3b8d66e ci: Always archive artifacts, only publish master
dustin/dustin.web/pipeline/head There was a failure building this commit Details
Sometimes, I want to see what the built site looks like before
publishing it.  For that, I'll push changes to a dev branch and let
Jenkins build the site as a tarball that I can download, extract, and
view locally.  Once I am satisfied, I'll merge the dev branch to master,
which Jenkins will build and publish to the live site.
2025-08-25 23:15:57 -05:00
Dustin 6bb91300fe ci: Fix container entry points
* The _zola_ container image no longer contains Python, but it does
  contain `pause`.
* When using `python` as the entry point, we need to explicitly register
  a signal handler for SIGTERM, otherwise `signal.pause()` will never
  return.
* The _rsync_ container image now has a default pause entry point.
2025-08-25 23:12:28 -05:00
Dustin f04323c694 projects/dynk8s: New cover image
I never liked the old one, and AI image generators are _way_ better now.
2025-08-25 22:24:52 -05:00
Dustin 84aee99b4e projects: Improve project card style
Possibly the main reason I haven't published the _Projects_ section of
my website, despite having worked on it for several years, is I never
felt good about how the cards on the index page looked.  I think this
new style looks _much_ better, to the point where I'm thinking about
publishing it finally!
2025-08-25 22:21:38 -05:00
6 changed files with 55 additions and 32 deletions

8
ci/Jenkinsfile vendored
View File

@ -26,9 +26,17 @@ pipeline {
sh '. ci/build.sh'
}
}
post {
success {
archiveArtifacts 'dustin.web.tar.xz'
}
}
}
stage('Publish') {
when {
branch 'master'
}
steps {
container('rsync') {
sshagent(['jenkins-web']) {

View File

@ -5,3 +5,5 @@ from json import dump
import sys
dump(load(sys.stdin), sys.stdout)
EOF
tar -cJf dustin.web.tar.xz -C public .

View File

@ -4,17 +4,17 @@ spec:
containers:
- name: zola
image: git.pyrocufflink.net/containerimages/zola
command:
- pause
- name: python
image: docker.io/python:3.10
command:
- python
args:
- -c
- import signal; signal.pause()
- |-
import signal
signal.signal(signal.SIGTERM, lambda x, y: None)
signal.pause()
- name: rsync
image: git.pyrocufflink.net/containerimages/rsync
command:
- python3
args:
- -c
- import signal; signal.pause()

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 112 KiB

View File

@ -353,7 +353,6 @@ article.post .post-date {
width: 100%;
background-color: $panel-color-dark;
margin: 0.75em;
padding: 0 0.75em;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);
transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
}
@ -376,14 +375,24 @@ article.post .post-date {
.project-card a {
text-decoration: none;
display: flex;
flex-direction: column;
}
.project-card h2 {
text-align: center;
margin: 0.75em;
font-size: 1.1em;
}
.project-card img {
max-width: 100%;
width: 100%;
aspect-ratio: 640 / 480;
object-fit: cover;
}
.project-card p {
margin: 0.75em;
}
/* CV */

View File

@ -1,37 +1,41 @@
{% extends "base.html" %}
{% macro project_card(path, permalink, title, description, image_path) %}
<div class="project-card">
<a href="{{ permalink }}">
{% if image_path is defined %}
{% set image = resize_image(path=image_path, width=640, height=480, op="fit") %}
<img src="{{ image.url }}" />
{% else %}
<img src="//picsum.photos/seed/{{ path | slugify }}/320/240" />
{% endif %}
<h2>{{ title }}</h2>
<p>{{ description }}</p>
</a>
</div>
{% endmacro %}
{% block content %}
<article class="post panel">
<h1 class="post-title">{{ section.title }}</h1>
{{ section.content | safe }}
<div class="project-cards">
{% for path in section.subsections %}
<div class="project-card">
{% set sect = get_section(path=path) %}
<a href="{{ sect.permalink }}">
<h2>{{ sect.title }}</h2>
{% if sect.extra.image is defined %}
{% set image = resize_image(path=sect.extra.image, width=640, height=480, op="fit") %}
<img src="{{ image.url }}" />
{% else %}
<img src="//picsum.photos/seed/{{ path | slugify }}/320/240" />
{% endif %}
<p>{{ sect.description }}</p>
</a>
</div>
{{ self::project_card(
path=path,
permalink=sect.permalink,
title=sect.title,
description=sect.description,
image_path=sect.extra.image,
) }}
{% endfor %}
{% for page in section.pages %}
<div class="project-card">
<a href="{{ page.permalink }}">
<h2>{{ page.title }}</h2>
{% if page.extra.image is defined %}
{% set image = resize_image(path=page.extra.image, width=640, height=480, op="fit") %}
<img src="{{ image.url }}" />
{% else %}
<img src="//picsum.photos/seed/{{ page.path | slugify }}/320/240" />
{% endif %}
<p>{{ page.description }}</p>
</a>
</div>
{{ self::project_card(
path=page.path,
permalink=page.permalink,
title=page.title,
description=page.description,
image_path=page.extra.image,
) }}
{% endfor %}
</div>
</article>