diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml index 4db3080a0..0f7138d17 100644 --- a/.github/workflows/ci-cd.yml +++ b/.github/workflows/ci-cd.yml @@ -292,40 +292,27 @@ jobs: - name: Transform App Spec with secrets run: bash .github/scripts/transform-yaml-with-env.sh .do/prod/app.yml .env.production - + - name: Update App Spec on DigitalOcean run: | - doctl apps update ${{ env.DIGITAL_OCEAN_APP_ID }} --spec .do/prod/app.yml - - - name: Trigger App Platform Redeploy - run: | - RESPONSE=$(curl -s -w "HTTPSTATUS:%{http_code}" \ - -X POST \ - -H "Authorization: Bearer ${{ env.DIGITAL_OCEAN_PAT }}" \ - -H "Content-Type: application/json" \ - https://api.digitalocean.com/v2/apps/${{ env.DIGITAL_OCEAN_APP_ID }}/deployments) - - HTTP_BODY=$(echo "$RESPONSE" | sed -e 's/HTTPSTATUS:.*//g') - HTTP_STATUS=$(echo "$RESPONSE" | tr -d '\n' | sed -e 's/.*HTTPSTATUS://') + OUTPUT=$(doctl apps update ${{ env.DIGITAL_OCEAN_APP_ID }} --spec .do/prod/app.yml --update-sources --output json) - echo "$HTTP_STATUS" + DEPLOYMENT_ID=$(echo "$OUTPUT" | jq -r '.[0].pending_deployment.id // .[0].in_progress_deployment.id // .[0].active_deployment.id // empty' | head -n 1) - if [ "$HTTP_STATUS" -lt 200 ] || [ "$HTTP_STATUS" -ge 300 ]; then - exit 1 - fi - - DEPLOYMENT_ID=$(echo "$HTTP_BODY" | jq -r '.deployment.id') - - echo "deployment_id=$DEPLOYMENT_ID" >> $GITHUB_ENV + if [ -z "$DEPLOYMENT_ID" ] || [ "$DEPLOYMENT_ID" == "null" ]; then + echo "Failed to extract deployment ID from app update response" + exit 1 + fi + echo "DEPLOYMENT_ID=$DEPLOYMENT_ID" >> $GITHUB_ENV + - name: Poll Deployment Status run: | - DEPLOYMENT_ID="$deployment_id" - if [ -z "$DEPLOYMENT_ID" ]; then + if [ -z "$DEPLOYMENT_ID" ]; then echo "Deployment ID is empty." exit 1 - fi + fi echo "Waiting for deployment to be promoted." diff --git a/.github/workflows/deploy-stg.yml b/.github/workflows/deploy-stg.yml index ffada8ae2..d1b3c1322 100644 --- a/.github/workflows/deploy-stg.yml +++ b/.github/workflows/deploy-stg.yml @@ -379,37 +379,24 @@ jobs: - name: Update App Spec on DigitalOcean run: | - doctl apps update ${{ env.DIGITAL_OCEAN_APP_ID }} --spec .do/stg/app.yml + OUTPUT=$(doctl apps update ${{ env.DIGITAL_OCEAN_APP_ID }} --spec .do/stg/app.yml --update-sources --output json) - - name: Trigger App Platform Redeploy - run: | - RESPONSE=$(curl -s -w "HTTPSTATUS:%{http_code}" \ - -X POST \ - -H "Authorization: Bearer ${{ env.DIGITAL_OCEAN_PAT }}" \ - -H "Content-Type: application/json" \ - https://api.digitalocean.com/v2/apps/${{ env.DIGITAL_OCEAN_APP_ID }}/deployments) - - HTTP_BODY=$(echo "$RESPONSE" | sed -e 's/HTTPSTATUS:.*//g') - HTTP_STATUS=$(echo "$RESPONSE" | tr -d '\n' | sed -e 's/.*HTTPSTATUS://') + DEPLOYMENT_ID=$(echo "$OUTPUT" | jq -r '.[0].pending_deployment.id // .[0].in_progress_deployment.id // .[0].active_deployment.id // empty' | head -n 1) - echo "$HTTP_STATUS" - - if [ "$HTTP_STATUS" -lt 200 ] || [ "$HTTP_STATUS" -ge 300 ]; then - exit 1 - fi - - DEPLOYMENT_ID=$(echo "$HTTP_BODY" | jq -r '.deployment.id') + if [ -z "$DEPLOYMENT_ID" ] || [ "$DEPLOYMENT_ID" == "null" ]; then + echo "Failed to extract deployment ID from app update response" + exit 1 + fi - echo "deployment_id=$DEPLOYMENT_ID" >> $GITHUB_ENV + echo "DEPLOYMENT_ID=$DEPLOYMENT_ID" >> $GITHUB_ENV - name: Poll Deployment Status run: | - DEPLOYMENT_ID="$deployment_id" - if [ -z "$DEPLOYMENT_ID" ]; then + if [ -z "$DEPLOYMENT_ID" ]; then echo "Deployment ID is empty." exit 1 - fi + fi echo "Waiting for deployment to be promoted." @@ -491,3 +478,4 @@ jobs: issue_number: parseInt(prId, 10), body: `${statusMessage}\n\n[View run](${runUrl})` }); + \ No newline at end of file