From 52573634df133a7376c68e881f9bf60766f22816 Mon Sep 17 00:00:00 2001 From: Thore Cimbal Date: Sun, 2 Aug 2026 12:00:00 +0000 Subject: [PATCH] ci: Lab-CA mitliefern, 'fetch origin' einsparen (Fund aus Pipeline 159) Der Probelauf des neuen Jobs ist an genau der Stelle gescheitert, an der man es nicht vermutet: 'git fetch gitea' lief durch (Gitea ist oeffentlich lesbar), 'git fetch origin main' dagegen brach ab mit 'unable to get local issuer certificate'. Der Runner stellt die Lab-CA nur seinem eigenen Klon-Schritt bereit, nicht dem Job-Script - der Klon oben im Log gelingt, der eigene git-Aufruf zwei Zeilen spaeter nicht. Zwei Aenderungen: 1. Die CA-Kette liegt jetzt als ci/lab-ca-chain.crt im Repo und wird per GIT_SSL_CAINFO gesetzt (CI_SERVER_TLS_CA_FILE zuerst, falls ein spaeterer Runner sie doch liefert). Ein CA-Zertifikat ist oeffentlich, kein Geheimnis - dieselbe Loesung wie im wiki-bookstack-Repo. Verifiziert: die Kette (aXionLabs Root + Intermediate) validiert https://git.lab. 2. 'git fetch origin main' faellt ganz weg. Der Runner hat main mit voller Historie schon ausgecheckt, CI_COMMIT_SHA ist dessen Stand - ein Netzaufruf weniger und eine Fehlerquelle weniger. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01PKhFj1S3UdD6xL2fbWPeYj --- .gitlab-ci.yml | 22 +++++++++++++++------- ci/lab-ca-chain.crt | 24 ++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 7 deletions(-) create mode 100644 ci/lab-ca-chain.crt diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e096d7f..82599ec 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -53,17 +53,25 @@ canonize_rotation: script: - apk add --no-cache git ca-certificates >/dev/null - | - # Lab-CA: der Runner legt sie je nach Version an unterschiedlichen Orten ab. - for c in /etc/gitlab-runner/certs/git.lab.crt /etc/gitlab-runner/certs/ca.crt; do - [ -f "$c" ] && export GIT_SSL_CAINFO="$c" && break - done - echo "CA: ${GIT_SSL_CAINFO:-Systemspeicher}" + # Lab-CA. Der Runner stellt sie nur seinem eigenen Klon-Schritt bereit, nicht + # dem Job-Script - ein 'git fetch origin' im Script scheiterte deshalb an + # "unable to get local issuer certificate" (live gesehen, Pipeline 159). + # Deshalb liegt die Kette hier im Repo; sie ist ein oeffentliches Zertifikat, + # kein Geheimnis. CI_SERVER_TLS_CA_FILE zuerst, falls der Runner sie doch liefert. + if [ -n "$CI_SERVER_TLS_CA_FILE" ] && [ -f "$CI_SERVER_TLS_CA_FILE" ]; then + export GIT_SSL_CAINFO="$CI_SERVER_TLS_CA_FILE" + else + export GIT_SSL_CAINFO="$CI_PROJECT_DIR/ci/lab-ca-chain.crt" + fi + echo "CA: $GIT_SSL_CAINFO" + test -f "$GIT_SSL_CAINFO" || { echo "ABBRUCH: CA-Datei fehlt."; exit 1; } - git config --global user.email "ci@axion1337.chat" - git config --global user.name "TURN-Rotation (automatische Kanonisierung)" - git remote add gitea https://rohana.axion1337.de/sorb/axion1337.chat-gitops.git - git fetch --quiet gitea - - git fetch --quiet origin main - - git checkout -B main origin/main + # Kein 'fetch origin' noetig: der Runner hat main schon ausgecheckt (GIT_DEPTH 0), + # CI_COMMIT_SHA ist der Stand von main beim Anlegen der Pipeline. + - git checkout -B main "$CI_COMMIT_SHA" - | MERGED=0 for ref in $(git for-each-ref --format='%(refname:short)' 'refs/remotes/gitea/turn-secret-rotation-*'); do diff --git a/ci/lab-ca-chain.crt b/ci/lab-ca-chain.crt new file mode 100644 index 0000000..6e9a407 --- /dev/null +++ b/ci/lab-ca-chain.crt @@ -0,0 +1,24 @@ +-----BEGIN CERTIFICATE----- +MIIBrzCCAVWgAwIBAgIQMZ1JRdPpesdAzJqMZOa9tDAKBggqhkjOPQQDAjA2MRUw +EwYDVQQKEwxhWGlvbkxhYnMgQ0ExHTAbBgNVBAMTFGFYaW9uTGFicyBDQSBSb290 +IENBMB4XDTI1MTIwMjIyMDEyMVoXDTM1MTEzMDIyMDEyMVowNjEVMBMGA1UEChMM +YVhpb25MYWJzIENBMR0wGwYDVQQDExRhWGlvbkxhYnMgQ0EgUm9vdCBDQTBZMBMG +ByqGSM49AgEGCCqGSM49AwEHA0IABFuhwykAsSg2BWI3wqWHjNuL+5xlGjhHyiSt +6YmoSd1tJGa7WA5pdRRm2JZriA3IWuhdkZVTUl8nLduRJVTb5KSjRTBDMA4GA1Ud +DwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEBMB0GA1UdDgQWBBRGPIQeqG1S +CyHYLwSQbe4jQ9RcZDAKBggqhkjOPQQDAgNIADBFAiEA1Z0Dxtj9hJOYkLJ8FLNT +96eatVP/OsKyaRk/MxReIwMCICrCeNSSOGUbiZ8Hd89jtlkCpWiLH1pCzZPUtYDX +R7gr +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIB2DCCAX6gAwIBAgIQLv6q8XwRjaYo8l0gB9NdyjAKBggqhkjOPQQDAjA2MRUw +EwYDVQQKEwxhWGlvbkxhYnMgQ0ExHTAbBgNVBAMTFGFYaW9uTGFicyBDQSBSb290 +IENBMB4XDTI1MTIwMjIyMDEyMloXDTM1MTEzMDIyMDEyMlowPjEVMBMGA1UEChMM +YVhpb25MYWJzIENBMSUwIwYDVQQDExxhWGlvbkxhYnMgQ0EgSW50ZXJtZWRpYXRl +IENBMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAECj764yT9QNMsRjEfmHnuDI1o +11faTeMl5kcwZlnDetHF5O+Ey5d+kKuysqIOF1YX8bPt6o61aJYRmc4RxRDU/aNm +MGQwDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYE +FGpRTHbW0eTgBMJep8w+Qyvy9oWzMB8GA1UdIwQYMBaAFEY8hB6obVILIdgvBJBt +7iND1FxkMAoGCCqGSM49BAMCA0gAMEUCIEAbqm/Y14dyM7h+I5en2l596eDDh3cS +2GwVO3CKuBY2AiEAkjPO/8M8PaFEaoncc/JDFxk9KR2P9IY24BvUA7YVsAU= +-----END CERTIFICATE-----