From 73a7615dd1d5d63c3c5a975d528bb168d5b36ee9 Mon Sep 17 00:00:00 2001 From: Alex Lebens Date: Mon, 1 Dec 2025 16:57:16 -0600 Subject: [PATCH] use single pr pattern --- .gitea/workflows/render-manifests.yaml | 58 ++++++++++++++++++++++++-- 1 file changed, 54 insertions(+), 4 deletions(-) diff --git a/.gitea/workflows/render-manifests.yaml b/.gitea/workflows/render-manifests.yaml index 78894ca01..9e61eff96 100644 --- a/.gitea/workflows/render-manifests.yaml +++ b/.gitea/workflows/render-manifests.yaml @@ -12,6 +12,7 @@ on: env: CLUSTERS: cl01tl BASE_BRANCH: manifests + ASSIGNEE: alexlebens MAIN_DIR: /workspace/alexlebens/infrastructure/infrastructure MANIFEST_DIR: /workspace/alexlebens/infrastructure/infrastructure-manifests @@ -109,7 +110,7 @@ jobs: run: | cd ${MANIFEST_DIR} - BRANCH_NAME="auto/update-manifests-$(date +%s)" + BRANCH_NAME="auto/update-manifests" # Configure Git echo ">> Configure git to use gitea-bot as user ..." @@ -130,9 +131,57 @@ jobs: echo "HEAD_BRANCH=$BRANCH_NAME" >> $GITEA_OUTPUT echo "push=true" >> $GITEA_OUTPUT + - name: Check for Pull Request + id: check-for-pull-requst + if: steps.commit-push.outputs.push == 'true' + env: + GITEA_TOKEN: ${{ secrets.BOT_TOKEN }} + GITEA_URL: ${{ secrets.REPO_URL }} + HEAD_BRANCH: ${{ steps.commit-push.outputs.HEAD_BRANCH }} + run: | + cd ${MANIFEST_DIR} + + API_ENDPOINT="${GITEA_URL}/api/v1/repos/${{ gitea.repository }}/pulls/${BASE_BRANCH}/${HEAD_BRANCH}" + + echo ">> Checking if PR from branch ${HEAD_BRANCH} into ${BASE_BRANCH}" + echo ">> With Endpoint of:" + echo "$API_ENDPOINT" + + HTTP_STATUS=$( + curl -X GET \ + --silent \ + --write-out '%{http_code}' \ + --output response_body.json \ + --dump-header response_headers.txt \ + -H "Authorization: token ${GITEA_TOKEN}" \ + -H "Content-Type: application/json" \ + "$API_ENDPOINT" 2> response_errors.txt + ) + + echo ">> HTTP Status Code: $HTTP_STATUS" + echo ">> Response Output ..." + echo "----" + cat response_body.json + echo "----" + cat response_headers.txt + echo "----" + cat response_errors.txt + echo "----" + + if [ "$HTTP_STATUS" == "200" ]; then + echo ">> Pull Request has been found" + PR_INDEX=$(cat response_body.json | jq -r .number) + echo "pull-request-exists=${PR_INDEX}" >> $GITEA_OUTPUT + echo "pull-request-index=true" >> $GITEA_OUTPUT + + else + echo ">> Pull Request not found" + echo "pull-request-exists=false" >> $GITEA_OUTPUT + fi + - name: Create Pull Request id: create-pull-request - if: steps.commit-push.outputs.push == 'true' + if: steps.commit-push.outputs.push == 'true' && steps.check-for-pull-requst.outputs.exists == 'false' env: GITEA_TOKEN: ${{ secrets.BOT_TOKEN }} GITEA_URL: ${{ secrets.REPO_URL }} @@ -145,7 +194,8 @@ jobs: PAYLOAD=$( jq -n \ --arg head "${HEAD_BRANCH}" \ --arg base "${BASE_BRANCH}" \ - --arg title "Automated Manifest Update: $(date +%F)" \ + --arg assignee "${ASSIGNEE}" \ + --arg title "Automated Manifest Update" \ --arg body "This PR contains newly rendered Kubernetes manifests automatically generated by the CI workflow." \ '{head: $head, base: $base, title: $title, body: $body'} ) @@ -179,13 +229,13 @@ jobs: if [ "$HTTP_STATUS" == "201" ]; then echo ">> Pull Request created successfully!" - PR_URL=$(cat response_body.json | jq -r .html_url) echo "pull-request-url=${PR_URL}" >> $GITEA_OUTPUT echo "pull-request-operation=created" >> $GITEA_OUTPUT elif [ "$HTTP_STATUS" == "422" ]; then echo ">> Failed to create PR (HTTP 422: Unprocessable Entity), PR may already exist" + else echo ">> Failed to create PR, HTTP status code: $HTTP_STATUS" exit 1