7 Commits

Author SHA1 Message Date
benvin b1470f3158 Merge pull request 'ci: trust artifactapi internal CA when pushing docker-internal' (#5) from benvin/jellyfin-buildkit-ca into main
ci/woodpecker/tag/docker Pipeline failed
Reviewed-on: #5
2026-08-15 16:42:06 +10:00
unkin-agent ec04b35b39 ci: trust artifactapi internal CA when pushing docker-internal
ci/woodpecker/pr/build Pipeline was successful
The v0.1.0 release pipeline built the runtime image fine but failed the
push to artifactapi.k8s.syd1.au.unkin.net/docker-internal with a TLS
x509 unknown-authority error: buildkit did not trust artifactapi's
Vault-signed cert.

Stage the internal CA into the shared workspace via the almalinux9-base
image (already trusts the unkin CA; same image the RPM release pipelines
use to reach artifactapi over HTTPS) and point the docker-buildx plugin
at it through buildkit_config. buildx copies the referenced CA into the
buildkitd container at builder-create time, so the push handshake now
verifies. No credentials needed: anonymous push to docker-internal is
allowed for trusted clients.
2026-08-15 16:34:44 +10:00
benvin a369c49457 Merge pull request 'build: source release image from fork main (scan-leader)' (#4) from benvin/upstream-ref-scanleader into main
ci/woodpecker/tag/docker Pipeline failed
Reviewed-on: #4
2026-08-12 00:30:32 +10:00
unkinben 8738315c52 build: bump UPSTREAM_REF to fork main with scan-leader
ci/woodpecker/pr/build Pipeline was successful
2026-08-11 22:03:13 +10:00
benvin ac507021f3 Merge pull request 'build: container build from the unkin jellyfin-ha-src fork' (#3) from benvin/jellyfin-ha-build into main
Reviewed-on: #3
2026-08-11 21:13:46 +10:00
unkinben 26e57c8655 ci: pin .NET SDK image to 9.0 to match global.json
ci/woodpecker/pr/build Pipeline was successful
The pinned jellyfin-ha-src fork sets global.json sdk 9.0.0 (rollForward
latestMinor), so the publish steps in build.yaml and docker.yaml must run
on the .NET 9 SDK. They referenced sdk:10.0, which fails the pinned build.
Repoint both publish steps to mcr.microsoft.com/dotnet/sdk:9.0.
2026-08-11 20:41:43 +10:00
unkinben 9f8d9014d3 build: source from the unkin jellyfin-ha-src fork
Why:
- The build should pull from our own source fork so local HA patches can be
  carried and pinned, rather than cloning the upstream GitHub tree directly.

How:
- Point the clone URL in the Makefile and both Woodpecker pipelines at
  https://git.unkin.net/unkin/jellyfin-ha-src.git.
- Keep UPSTREAM_REF at d4f9c12c22d3a640f3b0a3622b23b8cd01d044ad, which is the
  seeded fork main, so the produced image is byte-identical for now; the
  feature bump is a later change.
2026-08-11 07:25:03 +10:00
4 changed files with 34 additions and 7 deletions
+2 -2
View File
@@ -5,11 +5,11 @@ steps:
# Clone the pinned upstream jellyfin-ha source and publish the .NET server
# into ./publish-output (consumed by Dockerfile.runtime).
- name: publish
image: mcr.microsoft.com/dotnet/sdk:10.0
image: mcr.microsoft.com/dotnet/sdk:9.0
commands:
- |
REF=$$(cat UPSTREAM_REF)
git clone https://github.com/ZoltyMat/jellyfin-ha.git src
git clone https://git.unkin.net/unkin/jellyfin-ha-src.git src
git -C src checkout "$$REF"
dotnet publish src/Jellyfin.Server/Jellyfin.Server.csproj \
-c Release -r linux-x64 --self-contained false -o ./publish-output
+30 -3
View File
@@ -5,11 +5,11 @@ when:
steps:
# Same publish step as the PR pipeline: clone pinned upstream + dotnet publish.
- name: publish
image: mcr.microsoft.com/dotnet/sdk:10.0
image: mcr.microsoft.com/dotnet/sdk:9.0
commands:
- |
REF=$$(cat UPSTREAM_REF)
git clone https://github.com/ZoltyMat/jellyfin-ha.git src
git clone https://git.unkin.net/unkin/jellyfin-ha-src.git src
git -C src checkout "$$REF"
dotnet publish src/Jellyfin.Server/Jellyfin.Server.csproj \
-c Release -r linux-x64 --self-contained false -o ./publish-output
@@ -24,17 +24,44 @@ steps:
memory: 6Gi
cpu: 4
# Stage the internal (Vault) CA into the shared workspace so the buildkit push
# below can verify artifactapi's TLS cert. almalinux9-base already trusts the
# unkin CA (it is the image the RPM release pipelines use to reach artifactapi
# over HTTPS), so its consolidated trust bundle contains the chain we need.
- name: ca-trust
image: git.unkin.net/unkin/almalinux9-base:20260606
commands:
- cp /etc/pki/tls/certs/ca-bundle.crt "$${CI_WORKSPACE}/artifactapi-ca.crt"
depends_on: [publish]
backend_options:
kubernetes:
serviceAccountName: default
resources:
requests:
memory: 256Mi
cpu: 250m
limits:
memory: 512Mi
cpu: 1
# Build the runtime image and push it to the artifactapi local docker registry.
# buildkit_config points buildkit at the staged CA so the TLS handshake with
# artifactapi (Vault-signed cert) verifies; buildx copies the referenced CA
# into the buildkitd container under /etc/buildkit/certs when it creates the
# builder. CI_WORKSPACE is runtime-only so the path is the fixed workspace path.
- name: docker
image: woodpeckerci/plugin-docker-buildx
settings:
registry: artifactapi.k8s.syd1.au.unkin.net
repo: artifactapi.k8s.syd1.au.unkin.net/docker-internal/jellyfin-ha
dockerfile: Dockerfile.runtime
buildkit_config: |
[registry."artifactapi.k8s.syd1.au.unkin.net"]
ca = ["/woodpecker/src/git.unkin.net/unkin/jellyfin-ha/artifactapi-ca.crt"]
tags:
- ${CI_COMMIT_TAG}
- latest
depends_on: [publish]
depends_on: [ca-trust]
backend_options:
kubernetes:
serviceAccountName: default
+1 -1
View File
@@ -8,7 +8,7 @@ REF := $(shell cat UPSTREAM_REF)
# ./publish-output (consumed by Dockerfile.runtime). Mirrors CI.
publish:
rm -rf src publish-output
git clone https://github.com/ZoltyMat/jellyfin-ha.git src
git clone https://git.unkin.net/unkin/jellyfin-ha-src.git src
git -C src checkout $(REF)
dotnet publish src/Jellyfin.Server/Jellyfin.Server.csproj \
-c Release -r linux-x64 --self-contained false -o ./publish-output
+1 -1
View File
@@ -1 +1 @@
d4f9c12c22d3a640f3b0a3622b23b8cd01d044ad
2e1e445e470c2f2c1520f66678a73faa226c2058