From 5a00763d8fa75030540bcbae64f4ca9800f9014a Mon Sep 17 00:00:00 2001 From: moilanik Date: Mon, 15 Jun 2026 13:26:08 +0300 Subject: [PATCH] asgas --- .gitea/workflows/build_publish-artifact.yml | 54 ++++++++++++++------- 1 file changed, 37 insertions(+), 17 deletions(-) diff --git a/.gitea/workflows/build_publish-artifact.yml b/.gitea/workflows/build_publish-artifact.yml index 523b3a5..347e929 100644 --- a/.gitea/workflows/build_publish-artifact.yml +++ b/.gitea/workflows/build_publish-artifact.yml @@ -259,26 +259,46 @@ jobs: source /tmp/build-ctx/build.env bash scripts/report-status.sh failure "Docker push $NEXT_VERSION FAILED" ci-docker-push - - name: Delete Docker image artifact from Gitea - if: always() # Ajetaan aina, jotta levy ei täyty virhetilanteessakaan + - name: Delete Docker image artifact from Gitea (Python) + if: always() + shell: python + env: + GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} + SERVER_URL: ${{ gitea.server_url }} + REPOSITORY: ${{ gitea.repository }} + RUN_ID: ${{ gitea.run_id }} + ARTIFACT_NAME: "docker-image" run: | - echo "Haetaan artifaktit Giteasta..." - # Haetaan lista tämän ajon artifakteista - ARTIFACTS_JSON=$(curl -s -H "Authorization: token ${{ secrets.GITEA_TOKEN }}" \ - "${{ gitea.server_url }}/api/v1/repos/${{ gitea.repository }}/actions/runs/${{ gitea.run_id }}/artifacts") + import os, urllib.request, json - # Etsitään oikean artifaktin ID JSON-vastauksesta - # (Jos klusterissa ei ole jq-työkalua, käytetään grepiä id:n erottamiseen) - ART_ID=$(echo "$ARTIFACTS_JSON" | grep -B 2 '"name": "docker-image"' | grep '"id":' | awk -F: '{print $2}' | tr -d ', ') + token = os.environ['GITEA_TOKEN'] + server = os.environ['SERVER_URL'] + repo = os.environ['REPOSITORY'] + run_id = os.environ['RUN_ID'] + target_name = os.environ['ARTIFACT_NAME'] - if [ -n "$ART_ID" ]; then - echo "Löytyi artifakti ID:llä $ART_ID. Poistetaan..." - curl -X DELETE -s -H "Authorization: token ${{ secrets.GITEA_TOKEN }}" \ - "${{ gitea.server_url }}/api/v1/repos/${{ gitea.repository }}/actions/artifacts/$ART_ID" - echo "Artifakti poistettu onnistuneesti Giteasta!" - else - echo "Artifaktia 'docker-image' ei löytynyt tai se on jo poistettu." - fi + # 1. Haetaan listaus artifakteista + url = f"{server}/api/v1/repos/{repo}/actions/runs/{run_id}/artifacts" + req = urllib.request.Request(url, headers={"Authorization": f"token {token}"}) + + try: + with urllib.request.urlopen(req) as response: + data = json.loads(response.read().decode()) + + # 2. Etsitään oikea ID + artifacts = data.get("artifacts", []) + artifact_id = next((a["id"] for a in artifacts if a["name"] == target_name), None) + + # 3. Jos löytyi, lähetetään DELETE-pyyntö + if artifact_id: + del_url = f"{server}/api/v1/repos/{repo}/actions/artifacts/{artifact_id}" + del_req = urllib.request.Request(del_url, headers={"Authorization": f"token {token}"}, method="DELETE") + with urllib.request.urlopen(del_req) as del_res: + print(f"Artifakti {target_name} (ID: {artifact_id}) poistettu onnistuneesti levyltä.") + else: + print(f"Artifaktia '{target_name}' ei löytynyt listalta. Se on jo poistettu.") + except Exception as e: + print(f"Poisto ohitettiin virheen vuoksi (esim. puuttuvat oikeudet): {e}") tag-commit: runs-on: ubuntu-latest