2525 REPO : ${{ github.repository }}
2626 steps :
2727 - uses : actions/checkout@v4
28+ with :
29+ fetch-depth : 0
30+ fetch-tags : true
31+ - run : git fetch --tags --force
2832 - uses : ./.github/actions/add-reaction
2933 with :
3034 token : ${{ secrets.GITHUB_TOKEN }}
@@ -33,28 +37,48 @@ jobs:
3337 reaction : eyes
3438 - id : resolve
3539 run : |
36- PR_DATA=$(gh api repos/$REPO/pulls/${{ inputs.issue_number }} 2>/dev/null) || {
37- echo "merged=false" >> $GITHUB_OUTPUT
38- echo "error=Not a pull request or PR not found" >> $GITHUB_OUTPUT
39- exit 0
40- }
40+ if [ "${{ inputs.channel }}" == "stable" ]; then
41+ NIGHTLY_TAG=$(git tag -l 'desktop_v*-nightly.*' --sort=-v:refname | head -n1)
42+ if [ -z "$NIGHTLY_TAG" ]; then
43+ echo "resolved=false" >> $GITHUB_OUTPUT
44+ echo "error=No nightly release tag found" >> $GITHUB_OUTPUT
45+ exit 0
46+ fi
4147
42- MERGED=$(echo "$PR_DATA" | jq -r '.merged')
43- if [ "$MERGED" != "true" ]; then
44- echo "merged=false" >> $GITHUB_OUTPUT
45- echo "error=PR must be merged first" >> $GITHUB_OUTPUT
46- exit 0
47- fi
48+ TAG_SHA=$(git rev-list -n 1 "$NIGHTLY_TAG")
49+ TEMP_BRANCH="release-temp-${TAG_SHA:0:8}"
4850
49- MERGE_SHA=$(echo "$PR_DATA" | jq -r '.merge_commit_sha')
50- TEMP_BRANCH="release-temp-${MERGE_SHA:0:8}"
51+ GH_TOKEN=${{ secrets.PAT_TOKEN }} gh api repos/$REPO/git/refs -f ref="refs/heads/$TEMP_BRANCH" -f sha="$TAG_SHA"
52+
53+ echo "resolved=true" >> $GITHUB_OUTPUT
54+ echo "target_sha=$TAG_SHA" >> $GITHUB_OUTPUT
55+ echo "target_ref=$NIGHTLY_TAG" >> $GITHUB_OUTPUT
56+ echo "branch=$TEMP_BRANCH" >> $GITHUB_OUTPUT
57+ else
58+ PR_DATA=$(gh api repos/$REPO/pulls/${{ inputs.issue_number }} 2>/dev/null) || {
59+ echo "resolved=false" >> $GITHUB_OUTPUT
60+ echo "error=Not a pull request or PR not found" >> $GITHUB_OUTPUT
61+ exit 0
62+ }
5163
52- GH_TOKEN=${{ secrets.PAT_TOKEN }} gh api repos/$REPO/git/refs -f ref="refs/heads/$TEMP_BRANCH" -f sha="$MERGE_SHA"
64+ MERGED=$(echo "$PR_DATA" | jq -r '.merged')
65+ if [ "$MERGED" != "true" ]; then
66+ echo "resolved=false" >> $GITHUB_OUTPUT
67+ echo "error=PR must be merged first" >> $GITHUB_OUTPUT
68+ exit 0
69+ fi
5370
54- echo "merged=true" >> $GITHUB_OUTPUT
55- echo "merge_sha=$MERGE_SHA" >> $GITHUB_OUTPUT
56- echo "branch=$TEMP_BRANCH" >> $GITHUB_OUTPUT
57- - if : steps.resolve.outputs.merged == 'true'
71+ MERGE_SHA=$(echo "$PR_DATA" | jq -r '.merge_commit_sha')
72+ TEMP_BRANCH="release-temp-${MERGE_SHA:0:8}"
73+
74+ GH_TOKEN=${{ secrets.PAT_TOKEN }} gh api repos/$REPO/git/refs -f ref="refs/heads/$TEMP_BRANCH" -f sha="$MERGE_SHA"
75+
76+ echo "resolved=true" >> $GITHUB_OUTPUT
77+ echo "target_sha=$MERGE_SHA" >> $GITHUB_OUTPUT
78+ echo "target_ref=$MERGE_SHA" >> $GITHUB_OUTPUT
79+ echo "branch=$TEMP_BRANCH" >> $GITHUB_OUTPUT
80+ fi
81+ - if : steps.resolve.outputs.resolved == 'true'
5882 id : trigger
5983 uses : ./.github/actions/trigger-workflow
6084 with :
@@ -67,26 +91,28 @@ jobs:
6791 - id : result
6892 run : |
6993 CHANNEL="${{ inputs.channel }}"
70- MERGED="${{ steps.resolve.outputs.merged }}"
71- MERGE_SHA="${{ steps.resolve.outputs.merge_sha }}"
94+ RESOLVED="${{ steps.resolve.outputs.resolved }}"
95+ TARGET_SHA="${{ steps.resolve.outputs.target_sha }}"
96+ TARGET_REF="${{ steps.resolve.outputs.target_ref }}"
97+ ERROR="${{ steps.resolve.outputs.error }}"
7298 RUN_ID="${{ steps.trigger.outputs.run_id }}"
7399
74- if [ "$MERGED " != "true" ]; then
100+ if [ "$RESOLVED " != "true" ]; then
75101 DATA=$(jq -cn \
76102 --arg channel "\`$CHANNEL\`" \
77103 --arg sha "-" \
78- --arg status "PR must be merged first " \
104+ --arg status "$ERROR " \
79105 '[{header: "Channel", value: $channel}, {header: "Commit", value: $sha}, {header: "Status", value: $status}]')
80106 elif [ -n "$RUN_ID" ]; then
81107 DATA=$(jq -cn \
82108 --arg channel "\`$CHANNEL\`" \
83- --arg sha "[\`${MERGE_SHA :0:8}\`](https://github.com/$REPO/commit/$MERGE_SHA )" \
109+ --arg sha "[\`${TARGET_SHA :0:8}\`](https://github.com/$REPO/commit/$TARGET_SHA) ($TARGET_REF )" \
84110 --arg status "[View](https://github.com/$REPO/actions/runs/$RUN_ID)" \
85111 '[{header: "Channel", value: $channel}, {header: "Commit", value: $sha}, {header: "Status", value: $status}]')
86112 else
87113 DATA=$(jq -cn \
88114 --arg channel "\`$CHANNEL\`" \
89- --arg sha "[\`${MERGE_SHA :0:8}\`](https://github.com/$REPO/commit/$MERGE_SHA )" \
115+ --arg sha "[\`${TARGET_SHA :0:8}\`](https://github.com/$REPO/commit/$TARGET_SHA) ($TARGET_REF )" \
90116 --arg status "[Logs](https://github.com/$REPO/actions/runs/${{ github.run_id }})" \
91117 '[{header: "Channel", value: $channel}, {header: "Commit", value: $sha}, {header: "Status", value: $status}]')
92118 fi
97123 repo : ${{ github.repository }}
98124 issue_number : ${{ inputs.issue_number }}
99125 data : ${{ steps.result.outputs.data }}
100- - if : steps.resolve.outputs.merged == 'true'
126+ - if : steps.resolve.outputs.resolved == 'true'
101127 env :
102128 GH_TOKEN : ${{ secrets.PAT_TOKEN }}
103129 run : gh api repos/${{ github.repository }}/git/refs/heads/${{ steps.resolve.outputs.branch }} -X DELETE || true
0 commit comments