fix: Response view not passing error to support (#38579) #748
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Merge release to pg | |
on: | |
push: | |
branches: | |
- release # Trigger on push to the release branch | |
jobs: | |
merge-release-to-pg: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout release branch | |
uses: actions/checkout@v3 | |
with: | |
ref: release # Checkout the release branch | |
fetch-depth: 0 | |
- name: Set Git config values | |
run: | | |
git config pull.rebase false | |
git config user.email "automated@github.com" | |
git config user.name "Automated Github Action" | |
- name: Checkout pg branch | |
run: git checkout pg | |
- name: Merge release to pg | |
id: merge_commits | |
run: | | |
PG_HEAD=$(git rev-parse pg) | |
RELEASE_HEAD=$(git rev-parse release) | |
echo "PG_HEAD=$PG_HEAD" | |
echo "RELEASE_HEAD=$RELEASE_HEAD" | |
# Attempt to merge release into pg | |
if ! git merge release; then | |
echo "Merge conflict detected during merge" | |
# Capture the conflicting commit SHAs (both HEAD of pg and the merge commit from release) | |
CONFLICTING_COMMIT=$(git log -1 --pretty=format:"%H") | |
echo "CONFLICTING_COMMIT=$CONFLICTING_COMMIT" >> $GITHUB_ENV | |
echo "MERGE_CONFLICT=true" >> $GITHUB_ENV | |
else | |
echo "MERGE_CONFLICT=false" >> $GITHUB_ENV | |
fi | |
- name: Push changes | |
if: env.MERGE_CONFLICT == 'false' | |
run: | | |
set -e | |
git push https://${{ secrets.PAT_GITHUB }}@github.com/${{ github.repository }} HEAD:pg || echo "PUSH_FAILURE=true" >> $GITHUB_ENV | |
- name: Capture push failure message | |
if: env.PUSH_FAILURE == 'true' | |
run: | | |
# Capture the last git error message | |
push_error_message=$(git push https://${{ secrets.PAT_GITHUB }}@github.com/${{ github.repository }} HEAD:pg 2>&1 | tail -n 1) | |
echo "PUSH_ERROR_MESSAGE=$push_error_message" >> $GITHUB_ENV | |
- name: Notify on push failure | |
if: env.PUSH_FAILURE == 'true' | |
env: | |
SLACK_MESSAGE: "Push to pg branch failed: ${{ env.PUSH_ERROR_MESSAGE }}" | |
run: | | |
# Format the Slack message | |
slack_message="${{ env.SLACK_MESSAGE }}" | |
# Set the Slack message body with channel ID and text | |
body="$(jq -nc \ | |
--arg channel C07JMLWEXDJ \ | |
--arg text "$slack_message" \ | |
'$ARGS.named' | |
)" | |
# Send the message to Slack | |
curl -v https://slack.com/api/chat.postMessage \ | |
--header "Authorization: Bearer ${{ secrets.SLACK_APPSMITH_ALERTS_TOKEN }}" \ | |
--header "Content-Type: application/json; charset=utf-8" \ | |
--data-raw "$body" | |
- name: Notify on merge conflicts | |
if: env.MERGE_CONFLICT == 'true' | |
env: | |
REPOSITORY_URL: ${{ github.repositoryUrl }} | |
CONFLICTING_COMMIT: ${{ env.CONFLICTING_COMMIT }} | |
run: | | |
# Prepare the message for Slack | |
message="Merge conflict detected while merging release into pg branch. Conflicted commits:" | |
commit_url="$REPOSITORY_URL/commit/$CONFLICTING_COMMIT" | |
message+="$commit_url" | |
# Send the message to Slack | |
# This unwieldy horror of a sed command, converts standard Markdown links to Slack's unwieldy link syntax. | |
slack_message="$(echo "$message" | sed -E 's/\[([^]]+)\]\(([^)]+)\)/<\2|\1>/g')" | |
echo "$slack_message" | |
# This is the ChannelId of the proj postgres channel. | |
body="$(jq -nc \ | |
--arg channel C07JMLWEXDJ \ | |
--arg text "$slack_message" \ | |
'$ARGS.named' | |
)" | |
curl --version | |
curl -v https://slack.com/api/chat.postMessage \ | |
--header 'Authorization: Bearer ${{ secrets.SLACK_APPSMITH_ALERTS_TOKEN }}' \ | |
--header 'Content-Type: application/json; charset=utf-8' \ | |
--data-raw "$body" |