From 223a1df85e4c56db0299972c5d08f7eafbda1984 Mon Sep 17 00:00:00 2001 From: Kristian Wind Date: Fri, 21 Aug 2026 23:51:06 +0200 Subject: [PATCH] =?UTF-8?q?ci:=20checkout=20pr=C3=B8ver=20begge=20auth-for?= =?UTF-8?q?mer=20og=20siger=20hvilken=20der=20virkede?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Serverens side er bekræftet — Gitea tillader fetch ved hash, målt direkte mod instansen. Tilbage stod kun, om act_runners auto-token duer som kodeord i basic auth, og hvilket brugernavn den vil have. Det kan kun en kørende runner svare på. Feedback-sløjfen går gennem en kø og et andet menneske, så en kørsel, der kun siger 'checkout fejlede', er for dyr. Trinnet prøver nu x-access-token først — den form actions/checkout bruger, og som økosystemet beviser virker mod Gitea — derefter $GITHUB_ACTOR, og skriver hvilken der blev godkendt. Én kørsel besvarer spørgsmålet, uanset om den ender grøn eller rød. --- .gitea/workflows/ci.yml | 88 ++++++++++++++++++++++++++++++++---- .gitea/workflows/release.yml | 22 ++++++++- 2 files changed, 100 insertions(+), 10 deletions(-) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 378e44f..50425ec 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -60,8 +60,26 @@ jobs: git config --global --add safe.directory '*' git init -q . git remote add origin "$GITHUB_SERVER_URL/$GITHUB_REPOSITORY.git" - git -c http.extraheader="Authorization: Basic $(printf '%s:%s' "$GITHUB_ACTOR" "$TOKEN" | base64 | tr -d '\n')" \ - fetch -q --depth=1 origin "$GITHUB_SHA" + # To former for basic auth, fordi kun en kørende runner kan svare på, + # hvilken Gitea tager imod. actions/checkout bruger x-access-token, og + # det er den, økosystemet beviser virker; $GITHUB_ACTOR er reserven. + # Løkken skriver, hvilken der blev godkendt — så ÉN kørsel besvarer + # spørgsmålet, uanset om den ender grøn eller rød. Feedback-sløjfen her + # går gennem en kø og et andet menneske; at bruge en hel runde på at få + # ét bit at vide er for dyrt. + godkendt= + for bruger in x-access-token "$GITHUB_ACTOR"; do + header="Authorization: Basic $(printf '%s:%s' "$bruger" "$TOKEN" | base64 | tr -d '\n')" + if git -c http.extraheader="$header" fetch -q --depth=1 origin "$GITHUB_SHA"; then + godkendt=$bruger + break + fi + done + if [ -z "$godkendt" ]; then + echo "checkout: hverken x-access-token eller $GITHUB_ACTOR blev accepteret" + exit 1 + fi + echo "checkout: godkendt som $godkendt" git checkout -q FETCH_HEAD - name: Formatting @@ -98,8 +116,26 @@ jobs: git config --global --add safe.directory '*' git init -q . git remote add origin "$GITHUB_SERVER_URL/$GITHUB_REPOSITORY.git" - git -c http.extraheader="Authorization: Basic $(printf '%s:%s' "$GITHUB_ACTOR" "$TOKEN" | base64 | tr -d '\n')" \ - fetch -q --depth=1 origin "$GITHUB_SHA" + # To former for basic auth, fordi kun en kørende runner kan svare på, + # hvilken Gitea tager imod. actions/checkout bruger x-access-token, og + # det er den, økosystemet beviser virker; $GITHUB_ACTOR er reserven. + # Løkken skriver, hvilken der blev godkendt — så ÉN kørsel besvarer + # spørgsmålet, uanset om den ender grøn eller rød. Feedback-sløjfen her + # går gennem en kø og et andet menneske; at bruge en hel runde på at få + # ét bit at vide er for dyrt. + godkendt= + for bruger in x-access-token "$GITHUB_ACTOR"; do + header="Authorization: Basic $(printf '%s:%s' "$bruger" "$TOKEN" | base64 | tr -d '\n')" + if git -c http.extraheader="$header" fetch -q --depth=1 origin "$GITHUB_SHA"; then + godkendt=$bruger + break + fi + done + if [ -z "$godkendt" ]; then + echo "checkout: hverken x-access-token eller $GITHUB_ACTOR blev accepteret" + exit 1 + fi + echo "checkout: godkendt som $godkendt" git checkout -q FETCH_HEAD # Structural validity only. That the spec matches the *router* is checked by @@ -123,8 +159,26 @@ jobs: git config --global --add safe.directory '*' git init -q . git remote add origin "$GITHUB_SERVER_URL/$GITHUB_REPOSITORY.git" - git -c http.extraheader="Authorization: Basic $(printf '%s:%s' "$GITHUB_ACTOR" "$TOKEN" | base64 | tr -d '\n')" \ - fetch -q --depth=1 origin "$GITHUB_SHA" + # To former for basic auth, fordi kun en kørende runner kan svare på, + # hvilken Gitea tager imod. actions/checkout bruger x-access-token, og + # det er den, økosystemet beviser virker; $GITHUB_ACTOR er reserven. + # Løkken skriver, hvilken der blev godkendt — så ÉN kørsel besvarer + # spørgsmålet, uanset om den ender grøn eller rød. Feedback-sløjfen her + # går gennem en kø og et andet menneske; at bruge en hel runde på at få + # ét bit at vide er for dyrt. + godkendt= + for bruger in x-access-token "$GITHUB_ACTOR"; do + header="Authorization: Basic $(printf '%s:%s' "$bruger" "$TOKEN" | base64 | tr -d '\n')" + if git -c http.extraheader="$header" fetch -q --depth=1 origin "$GITHUB_SHA"; then + godkendt=$bruger + break + fi + done + if [ -z "$godkendt" ]; then + echo "checkout: hverken x-access-token eller $GITHUB_ACTOR blev accepteret" + exit 1 + fi + echo "checkout: godkendt som $godkendt" git checkout -q FETCH_HEAD - name: Go @@ -182,8 +236,26 @@ jobs: git config --global --add safe.directory '*' git init -q . git remote add origin "$GITHUB_SERVER_URL/$GITHUB_REPOSITORY.git" - git -c http.extraheader="Authorization: Basic $(printf '%s:%s' "$GITHUB_ACTOR" "$TOKEN" | base64 | tr -d '\n')" \ - fetch -q --depth=1 origin "$GITHUB_SHA" + # To former for basic auth, fordi kun en kørende runner kan svare på, + # hvilken Gitea tager imod. actions/checkout bruger x-access-token, og + # det er den, økosystemet beviser virker; $GITHUB_ACTOR er reserven. + # Løkken skriver, hvilken der blev godkendt — så ÉN kørsel besvarer + # spørgsmålet, uanset om den ender grøn eller rød. Feedback-sløjfen her + # går gennem en kø og et andet menneske; at bruge en hel runde på at få + # ét bit at vide er for dyrt. + godkendt= + for bruger in x-access-token "$GITHUB_ACTOR"; do + header="Authorization: Basic $(printf '%s:%s' "$bruger" "$TOKEN" | base64 | tr -d '\n')" + if git -c http.extraheader="$header" fetch -q --depth=1 origin "$GITHUB_SHA"; then + godkendt=$bruger + break + fi + done + if [ -z "$godkendt" ]; then + echo "checkout: hverken x-access-token eller $GITHUB_ACTOR blev accepteret" + exit 1 + fi + echo "checkout: godkendt som $godkendt" git checkout -q FETCH_HEAD # Build only — publishing happens on a tag, in release.yml. This job exists diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index d21fb36..1bcc0fa 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -32,8 +32,26 @@ jobs: git config --global --add safe.directory '*' git init -q . git remote add origin "$GITHUB_SERVER_URL/$GITHUB_REPOSITORY.git" - git -c http.extraheader="Authorization: Basic $(printf '%s:%s' "$GITHUB_ACTOR" "$TOKEN" | base64 | tr -d '\n')" \ - fetch -q --depth=1 origin "$GITHUB_SHA" + # To former for basic auth, fordi kun en kørende runner kan svare på, + # hvilken Gitea tager imod. actions/checkout bruger x-access-token, og + # det er den, økosystemet beviser virker; $GITHUB_ACTOR er reserven. + # Løkken skriver, hvilken der blev godkendt — så ÉN kørsel besvarer + # spørgsmålet, uanset om den ender grøn eller rød. Feedback-sløjfen her + # går gennem en kø og et andet menneske; at bruge en hel runde på at få + # ét bit at vide er for dyrt. + godkendt= + for bruger in x-access-token "$GITHUB_ACTOR"; do + header="Authorization: Basic $(printf '%s:%s' "$bruger" "$TOKEN" | base64 | tr -d '\n')" + if git -c http.extraheader="$header" fetch -q --depth=1 origin "$GITHUB_SHA"; then + godkendt=$bruger + break + fi + done + if [ -z "$godkendt" ]; then + echo "checkout: hverken x-access-token eller $GITHUB_ACTOR blev accepteret" + exit 1 + fi + echo "checkout: godkendt som $godkendt" git checkout -q FETCH_HEAD # setup-qemu-action i rå form. Uden den bygger buildx kun værtens egen