Compare commits
46
Commits
v1.0.0
..
d149072153
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d149072153 | ||
|
|
1d7dbd67af | ||
|
|
6db738ac6a | ||
|
|
c184f6f70d | ||
|
|
b58973e489 | ||
|
|
6f379a2934 | ||
|
|
57d83396a8 | ||
|
|
c0ce34f492 | ||
|
|
07ef7550d9 | ||
|
|
bb86f63062 | ||
|
|
f78abe8250 | ||
|
|
03726f8f17 | ||
|
|
8d62daac4c | ||
|
|
2590df3c13 | ||
|
|
59d53c515d | ||
|
|
4690263ba8 | ||
|
|
e31729e27a | ||
|
|
c5433a23ee | ||
|
|
fb705c234f | ||
|
|
562ce29ca1 | ||
|
|
1c57d70c00 | ||
|
|
7e23b09694 | ||
|
|
818331b066 | ||
|
|
dfedc5c51b | ||
|
|
0c38161989 | ||
|
|
d97707387d | ||
|
|
b26d49d9d8 | ||
|
|
9e5958b458 | ||
|
|
df0df3e9a0 | ||
|
|
8bb782287e | ||
|
|
56ec85c17e | ||
|
|
9412c20248 | ||
|
|
65f97d2707 | ||
|
|
564070b270 | ||
|
|
ad90451846 | ||
|
|
22c2ef1b26 | ||
|
|
301120c174 | ||
|
|
1a0ffead5a | ||
|
|
719956341c | ||
|
|
2a1e6dc8a4 | ||
|
|
6b19a55655 | ||
|
|
a2b9d445e4 | ||
|
|
a14306cce4 | ||
|
|
43f42a8274 | ||
|
|
8376860fb4 | ||
|
|
d1803f06dd |
@@ -1,10 +1,30 @@
|
||||
name: Build and publish container
|
||||
|
||||
on:
|
||||
# On merge to main, only build/release when image-affecting files change;
|
||||
# CI-config, Renovate-config and docs changes do not produce a new image.
|
||||
push:
|
||||
branches: [main]
|
||||
paths:
|
||||
- 'Dockerfile'
|
||||
- 'default.conf'
|
||||
- 'index.html'
|
||||
- 'styles.css'
|
||||
- 'script.js'
|
||||
- 'messages.js'
|
||||
- '.dockerignore'
|
||||
# Pull requests always run (the build is a required check); no path filter.
|
||||
pull_request:
|
||||
branches: [main]
|
||||
workflow_dispatch:
|
||||
|
||||
# A newer run cancels an older in-flight run in the same group (keyed by ref),
|
||||
# so a fresh merge to main supersedes the previous build and only the latest
|
||||
# release is produced, avoiding tags that would be immediately replaced. Each
|
||||
# pull request likewise supersedes only its own earlier runs.
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
defaults:
|
||||
run:
|
||||
@@ -18,7 +38,7 @@ jobs:
|
||||
packages: write
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
|
||||
with:
|
||||
# Full history and tags are required to derive the next version
|
||||
# from the conventional-commit messages since the last release.
|
||||
@@ -93,21 +113,25 @@ jobs:
|
||||
echo "release=${release}" >> "$GITHUB_OUTPUT"
|
||||
echo "Computed bump=${bump}, release=${release}, base=${base}"
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@96fe6ef7f33517b61c61be40b68a1882f3264fb8 # v4
|
||||
|
||||
- name: Set up Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
uses: docker/setup-buildx-action@bb05f3f5519dd87d3ba754cc423b652a5edd6d2c # v4
|
||||
|
||||
- name: Log in to the Gitea container registry
|
||||
if: github.event_name != 'pull_request'
|
||||
uses: docker/login-action@v3
|
||||
uses: docker/login-action@af1e73f918a031802d376d3c8bbc3fe56130a9b0 # v4
|
||||
with:
|
||||
registry: ${{ env.REGISTRY }}
|
||||
username: ${{ github.repository_owner }}
|
||||
password: ${{ secrets.PACKAGES_TOKEN }}
|
||||
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@v6
|
||||
uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7
|
||||
with:
|
||||
context: .
|
||||
platforms: linux/amd64,linux/arm64
|
||||
push: ${{ github.event_name != 'pull_request' }}
|
||||
tags: ${{ steps.version.outputs.tags }}
|
||||
labels: |
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
# Lightweight, non-root nginx serving the static site.
|
||||
# Runs as user "nginx" and listens on 8080, ready to sit behind an
|
||||
# external reverse proxy that terminates TLS and forwards requests.
|
||||
FROM nginxinc/nginx-unprivileged:1.27-alpine-slim
|
||||
FROM nginxinc/nginx-unprivileged:1.31-alpine-slim@sha256:d9fa63891743a11eb56ca1b22d8cc227491df183ca3da2cf1bf2c6e010bf19a5
|
||||
|
||||
COPY default.conf /etc/nginx/conf.d/default.conf
|
||||
COPY --chown=nginx:nginx index.html styles.css script.js messages.js /usr/share/nginx/html/
|
||||
|
||||
@@ -46,7 +46,9 @@ docker run --rm -p 8080:8080 dlr
|
||||
|
||||
`.gitea/workflows/build-and-publish.yml` builds the container with Gitea Actions
|
||||
on every push to `main` and on pull requests. Pull requests build the image but
|
||||
do not push. The registry host is derived from the Gitea server URL.
|
||||
do not push. The registry host is derived from the Gitea server URL. Images are
|
||||
built for `linux/amd64` and `linux/arm64` (armv8) and published as a single
|
||||
multi-arch manifest; the arm64 build runs under QEMU emulation.
|
||||
|
||||
Authentication requires a Personal Access Token with package read/write scope,
|
||||
because the automatically provided `GITEA_TOKEN` does not carry container
|
||||
|
||||
@@ -4,6 +4,9 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Why is the DLR shut today?</title>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Rokkitt:wght@400;700;800&display=swap">
|
||||
<link rel="stylesheet" href="styles.css">
|
||||
</head>
|
||||
<body data-theme="modern">
|
||||
|
||||
+9
-4
@@ -11,8 +11,13 @@
|
||||
*/
|
||||
|
||||
const MESSAGES = [
|
||||
"PLACEHOLDER: write your first reason here",
|
||||
"PLACEHOLDER: write another reason here",
|
||||
// Add as many entries as you like, one per line:
|
||||
// "Your reason here",
|
||||
"Maggie came back, she was unimpressed",
|
||||
"They mixed up the B23s and the 2024 tube stock",
|
||||
"The computer went on strike",
|
||||
"Leaves on the track",
|
||||
"Escalators broke at Cutty Sark",
|
||||
"EHRC decided it was woke",
|
||||
"JK Rowling",
|
||||
"Kaiju",
|
||||
"28 Days Later happened",
|
||||
];
|
||||
|
||||
+14
-3
@@ -10,20 +10,31 @@
|
||||
"semanticCommitType": "fix",
|
||||
"semanticCommitScope": "deps",
|
||||
"github-actions": {
|
||||
"fileMatch": ["^\\.gitea/workflows/[^/]+\\.ya?ml$"]
|
||||
"managerFilePatterns": ["/^\\.gitea/workflows/[^/]+\\.ya?ml$/"]
|
||||
},
|
||||
"packageRules": [
|
||||
{
|
||||
"description": "Group nginx base image updates",
|
||||
"matchManagers": ["dockerfile"],
|
||||
"groupName": "docker base image"
|
||||
},
|
||||
{
|
||||
"description": "Commit every update as fix(deps) so each merged Renovate PR triggers a patch release. config:recommended pulls in :semanticPrefixFixDepsChoreOthers, which forces non-npm updates (Docker, Actions) to chore and would otherwise produce no release.",
|
||||
"matchPackageNames": ["*"],
|
||||
"semanticCommitType": "fix"
|
||||
},
|
||||
{
|
||||
"description": "Auto-merge patch and minor updates once checks pass.",
|
||||
"matchUpdateTypes": ["patch", "minor"],
|
||||
"automerge": true
|
||||
}
|
||||
],
|
||||
"platformAutomerge": true,
|
||||
"customManagers": [
|
||||
{
|
||||
"customType": "regex",
|
||||
"description": "Update HTML dependencies annotated with a renovate comment, e.g. <!-- renovate: datasource=npm depName=bootstrap --> before the versioned URL",
|
||||
"fileMatch": ["\\.html$"],
|
||||
"managerFilePatterns": ["/\\.html$/"],
|
||||
"matchStrings": [
|
||||
"datasource=(?<datasource>\\S+) depName=(?<depName>\\S+)( versioning=(?<versioning>\\S+))?[\\s\\S]*?(?<currentValue>v?\\d+\\.\\d+\\.\\d+[\\w.-]*)"
|
||||
]
|
||||
@@ -31,7 +42,7 @@
|
||||
{
|
||||
"customType": "regex",
|
||||
"description": "Auto-detect versioned jsDelivr / unpkg npm assets in HTML",
|
||||
"fileMatch": ["\\.html$"],
|
||||
"managerFilePatterns": ["/\\.html$/"],
|
||||
"matchStrings": [
|
||||
"https://cdn\\.jsdelivr\\.net/npm/(?<depName>@?[^@/]+(?:/[^@/]+)?)@(?<currentValue>\\d[^/\"']+)",
|
||||
"https://unpkg\\.com/(?<depName>@?[^@/]+(?:/[^@/]+)?)@(?<currentValue>\\d[^/\"']+)"
|
||||
|
||||
+26
-18
@@ -10,7 +10,6 @@
|
||||
/* Modern DLR — turquoise/teal */
|
||||
[data-theme="modern"] {
|
||||
--bg: #00afaa;
|
||||
--bg-accent: #007e7a;
|
||||
--surface: #ffffff;
|
||||
--text: #ffffff;
|
||||
--message: #ffffff;
|
||||
@@ -20,17 +19,20 @@
|
||||
--button-active-text: #ffffff;
|
||||
}
|
||||
|
||||
/* Original DLR — 1987 red and blue */
|
||||
/* Original DLR — 1987 P86/P89 livery: blue body and skirt, red band and
|
||||
doors, white stripes. Blue is the dominant field, red the accent.
|
||||
1987 branding used the Rockwell slab serif; Rokkitt is a free fallback for
|
||||
systems without Rockwell installed. */
|
||||
[data-theme="original"] {
|
||||
--bg: #002b5c;
|
||||
--bg-accent: #c8102e;
|
||||
--surface: #f5f0e1;
|
||||
--text: #f5f0e1;
|
||||
--message: #f5f0e1;
|
||||
--font-stack: Rockwell, "Rockwell Nova", Rokkitt, Georgia, serif;
|
||||
--bg: #1f3a93;
|
||||
--surface: #c8102e;
|
||||
--text: #ffffff;
|
||||
--message: #ffffff;
|
||||
--button-bg: #c8102e;
|
||||
--button-text: #f5f0e1;
|
||||
--button-active-bg: #f5f0e1;
|
||||
--button-active-text: #002b5c;
|
||||
--button-text: #ffffff;
|
||||
--button-active-bg: #ffffff;
|
||||
--button-active-text: #1f3a93;
|
||||
}
|
||||
|
||||
* {
|
||||
@@ -44,7 +46,7 @@ body {
|
||||
flex-direction: column;
|
||||
font-family: var(--font-stack);
|
||||
color: var(--text);
|
||||
background: linear-gradient(135deg, var(--bg) 0%, var(--bg-accent) 100%);
|
||||
background: var(--bg);
|
||||
transition: background 0.4s ease, color 0.4s ease;
|
||||
}
|
||||
|
||||
@@ -65,10 +67,13 @@ body {
|
||||
padding: 1.5rem;
|
||||
}
|
||||
|
||||
/* Segmented control: both options joined in one rounded container,
|
||||
with the active segment filled. */
|
||||
.theme-toggle {
|
||||
display: flex;
|
||||
gap: 0.5rem;
|
||||
border: none;
|
||||
display: inline-flex;
|
||||
border: 2px solid var(--button-bg);
|
||||
border-radius: 999px;
|
||||
overflow: hidden;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
@@ -77,19 +82,22 @@ body {
|
||||
font-family: inherit;
|
||||
font-size: 0.9rem;
|
||||
font-weight: 600;
|
||||
padding: 0.5rem 1rem;
|
||||
border: 2px solid var(--button-bg);
|
||||
border-radius: 999px;
|
||||
padding: 0.5rem 1.1rem;
|
||||
border: none;
|
||||
background: transparent;
|
||||
color: var(--text);
|
||||
cursor: pointer;
|
||||
transition: background 0.2s ease, color 0.2s ease;
|
||||
}
|
||||
|
||||
/* Divider between the two segments. */
|
||||
.theme-button + .theme-button {
|
||||
border-left: 2px solid var(--button-bg);
|
||||
}
|
||||
|
||||
.theme-button[aria-pressed="true"] {
|
||||
background: var(--button-active-bg);
|
||||
color: var(--button-active-text);
|
||||
border-color: var(--button-active-bg);
|
||||
}
|
||||
|
||||
.stage {
|
||||
|
||||
Reference in New Issue
Block a user