Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b6f2589f02 |
@@ -1,30 +1,10 @@
|
|||||||
name: Build and publish container
|
name: Build and publish container
|
||||||
|
|
||||||
on:
|
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:
|
push:
|
||||||
branches: [main]
|
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:
|
pull_request:
|
||||||
branches: [main]
|
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:
|
defaults:
|
||||||
run:
|
run:
|
||||||
@@ -38,7 +18,7 @@ jobs:
|
|||||||
packages: write
|
packages: write
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
|
||||||
with:
|
with:
|
||||||
# Full history and tags are required to derive the next version
|
# Full history and tags are required to derive the next version
|
||||||
# from the conventional-commit messages since the last release.
|
# from the conventional-commit messages since the last release.
|
||||||
@@ -114,21 +94,21 @@ jobs:
|
|||||||
echo "Computed bump=${bump}, release=${release}, base=${base}"
|
echo "Computed bump=${bump}, release=${release}, base=${base}"
|
||||||
|
|
||||||
- name: Set up QEMU
|
- name: Set up QEMU
|
||||||
uses: docker/setup-qemu-action@06116385d9baf250c9f4dcb4858b16962ea869c3 # v4
|
uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v3
|
||||||
|
|
||||||
- name: Set up Buildx
|
- name: Set up Buildx
|
||||||
uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4
|
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3
|
||||||
|
|
||||||
- name: Log in to the Gitea container registry
|
- name: Log in to the Gitea container registry
|
||||||
if: github.event_name != 'pull_request'
|
if: github.event_name != 'pull_request'
|
||||||
uses: docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v4
|
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3
|
||||||
with:
|
with:
|
||||||
registry: ${{ env.REGISTRY }}
|
registry: ${{ env.REGISTRY }}
|
||||||
username: ${{ github.repository_owner }}
|
username: ${{ github.repository_owner }}
|
||||||
password: ${{ secrets.PACKAGES_TOKEN }}
|
password: ${{ secrets.PACKAGES_TOKEN }}
|
||||||
|
|
||||||
- name: Build and push
|
- name: Build and push
|
||||||
uses: docker/build-push-action@f9f3042f7e2789586610d6e8b85c8f03e5195baf # v7
|
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
platforms: linux/amd64,linux/arm64
|
platforms: linux/amd64,linux/arm64
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
# Lightweight, non-root nginx serving the static site.
|
# Lightweight, non-root nginx serving the static site.
|
||||||
# Runs as user "nginx" and listens on 8080, ready to sit behind an
|
# Runs as user "nginx" and listens on 8080, ready to sit behind an
|
||||||
# external reverse proxy that terminates TLS and forwards requests.
|
# external reverse proxy that terminates TLS and forwards requests.
|
||||||
FROM nginxinc/nginx-unprivileged:1.31-alpine-slim@sha256:653c4c45a002a826b4c6c0902c7e21890ffdcae7c464866da79504c93d804f61
|
FROM nginxinc/nginx-unprivileged:1.27-alpine-slim
|
||||||
|
|
||||||
COPY default.conf /etc/nginx/conf.d/default.conf
|
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/
|
COPY --chown=nginx:nginx index.html styles.css script.js messages.js /usr/share/nginx/html/
|
||||||
|
|||||||
@@ -4,9 +4,6 @@
|
|||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>Why is the DLR shut today?</title>
|
<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">
|
<link rel="stylesheet" href="styles.css">
|
||||||
</head>
|
</head>
|
||||||
<body data-theme="modern">
|
<body data-theme="modern">
|
||||||
|
|||||||
+3
-14
@@ -10,31 +10,20 @@
|
|||||||
"semanticCommitType": "fix",
|
"semanticCommitType": "fix",
|
||||||
"semanticCommitScope": "deps",
|
"semanticCommitScope": "deps",
|
||||||
"github-actions": {
|
"github-actions": {
|
||||||
"managerFilePatterns": ["/^\\.gitea/workflows/[^/]+\\.ya?ml$/"]
|
"fileMatch": ["^\\.gitea/workflows/[^/]+\\.ya?ml$"]
|
||||||
},
|
},
|
||||||
"packageRules": [
|
"packageRules": [
|
||||||
{
|
{
|
||||||
"description": "Group nginx base image updates",
|
"description": "Group nginx base image updates",
|
||||||
"matchManagers": ["dockerfile"],
|
"matchManagers": ["dockerfile"],
|
||||||
"groupName": "docker base image"
|
"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": [
|
"customManagers": [
|
||||||
{
|
{
|
||||||
"customType": "regex",
|
"customType": "regex",
|
||||||
"description": "Update HTML dependencies annotated with a renovate comment, e.g. <!-- renovate: datasource=npm depName=bootstrap --> before the versioned URL",
|
"description": "Update HTML dependencies annotated with a renovate comment, e.g. <!-- renovate: datasource=npm depName=bootstrap --> before the versioned URL",
|
||||||
"managerFilePatterns": ["/\\.html$/"],
|
"fileMatch": ["\\.html$"],
|
||||||
"matchStrings": [
|
"matchStrings": [
|
||||||
"datasource=(?<datasource>\\S+) depName=(?<depName>\\S+)( versioning=(?<versioning>\\S+))?[\\s\\S]*?(?<currentValue>v?\\d+\\.\\d+\\.\\d+[\\w.-]*)"
|
"datasource=(?<datasource>\\S+) depName=(?<depName>\\S+)( versioning=(?<versioning>\\S+))?[\\s\\S]*?(?<currentValue>v?\\d+\\.\\d+\\.\\d+[\\w.-]*)"
|
||||||
]
|
]
|
||||||
@@ -42,7 +31,7 @@
|
|||||||
{
|
{
|
||||||
"customType": "regex",
|
"customType": "regex",
|
||||||
"description": "Auto-detect versioned jsDelivr / unpkg npm assets in HTML",
|
"description": "Auto-detect versioned jsDelivr / unpkg npm assets in HTML",
|
||||||
"managerFilePatterns": ["/\\.html$/"],
|
"fileMatch": ["\\.html$"],
|
||||||
"matchStrings": [
|
"matchStrings": [
|
||||||
"https://cdn\\.jsdelivr\\.net/npm/(?<depName>@?[^@/]+(?:/[^@/]+)?)@(?<currentValue>\\d[^/\"']+)",
|
"https://cdn\\.jsdelivr\\.net/npm/(?<depName>@?[^@/]+(?:/[^@/]+)?)@(?<currentValue>\\d[^/\"']+)",
|
||||||
"https://unpkg\\.com/(?<depName>@?[^@/]+(?:/[^@/]+)?)@(?<currentValue>\\d[^/\"']+)"
|
"https://unpkg\\.com/(?<depName>@?[^@/]+(?:/[^@/]+)?)@(?<currentValue>\\d[^/\"']+)"
|
||||||
|
|||||||
+15
-25
@@ -19,20 +19,16 @@
|
|||||||
--button-active-text: #ffffff;
|
--button-active-text: #ffffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Original DLR — 1987 P86/P89 livery: blue body and skirt, red band and
|
/* Original DLR — 1987 red, white and blue */
|
||||||
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"] {
|
[data-theme="original"] {
|
||||||
--font-stack: Rockwell, "Rockwell Nova", Rokkitt, Georgia, serif;
|
--bg: #f5f0e1;
|
||||||
--bg: #1f3a93;
|
--surface: #002b5c;
|
||||||
--surface: #c8102e;
|
--text: #002b5c;
|
||||||
--text: #ffffff;
|
--message: #002b5c;
|
||||||
--message: #ffffff;
|
|
||||||
--button-bg: #c8102e;
|
--button-bg: #c8102e;
|
||||||
--button-text: #ffffff;
|
--button-text: #f5f0e1;
|
||||||
--button-active-bg: #ffffff;
|
--button-active-bg: #002b5c;
|
||||||
--button-active-text: #1f3a93;
|
--button-active-text: #f5f0e1;
|
||||||
}
|
}
|
||||||
|
|
||||||
* {
|
* {
|
||||||
@@ -67,13 +63,10 @@ body {
|
|||||||
padding: 1.5rem;
|
padding: 1.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Segmented control: both options joined in one rounded container,
|
|
||||||
with the active segment filled. */
|
|
||||||
.theme-toggle {
|
.theme-toggle {
|
||||||
display: inline-flex;
|
display: flex;
|
||||||
border: 2px solid var(--button-bg);
|
gap: 0.5rem;
|
||||||
border-radius: 999px;
|
border: none;
|
||||||
overflow: hidden;
|
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
@@ -82,22 +75,19 @@ body {
|
|||||||
font-family: inherit;
|
font-family: inherit;
|
||||||
font-size: 0.9rem;
|
font-size: 0.9rem;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
padding: 0.5rem 1.1rem;
|
padding: 0.5rem 1rem;
|
||||||
border: none;
|
border: 2px solid var(--button-bg);
|
||||||
|
border-radius: 999px;
|
||||||
background: transparent;
|
background: transparent;
|
||||||
color: var(--text);
|
color: var(--text);
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
transition: background 0.2s ease, color 0.2s ease;
|
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"] {
|
.theme-button[aria-pressed="true"] {
|
||||||
background: var(--button-active-bg);
|
background: var(--button-active-bg);
|
||||||
color: var(--button-active-text);
|
color: var(--button-active-text);
|
||||||
|
border-color: var(--button-active-bg);
|
||||||
}
|
}
|
||||||
|
|
||||||
.stage {
|
.stage {
|
||||||
|
|||||||
Reference in New Issue
Block a user