Skip to content

Commit 4086b6f

Browse files
committed
adjust version update PR wrt actual updates
We have two tools and often only one updates at a time. An example of a PR generated by the prior state is <#65>. It's ugly that we have to read so carefully to note that `nsc` was not updated there. Unfortunately with GHActions YAML, making the body more dynamic required ugliness elsewhere, namely serializing text into JSON to put it into a single line, to pass as an output between steps.
1 parent fb2acac commit 4086b6f

1 file changed

Lines changed: 29 additions & 22 deletions

File tree

.github/workflows/version-update.yaml

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,11 @@ jobs:
3838
latest() { gh release --repo "$1" view --json tagName --jq .tagName; }
3939
# Get latest natscli release
4040
RELEASE_NATSCLI="$(latest nats-io/natscli)"
41-
echo "release_natscli=$RELEASE_NATSCLI" >> $GITHUB_OUTPUT
41+
echo >> "$GITHUB_OUTPUT" "release_natscli=$RELEASE_NATSCLI"
4242
4343
# Get latest nsc release
4444
RELEASE_NSC="$(latest nats-io/nsc)"
45-
echo "release_nsc=$RELEASE_NSC" >> $GITHUB_OUTPUT
45+
echo >> "$GITHUB_OUTPUT" "release_nsc=$RELEASE_NSC"
4646
4747
echo "Latest natscli release: $RELEASE_NATSCLI"
4848
echo "Latest nsc release: $RELEASE_NSC"
@@ -55,8 +55,8 @@ jobs:
5555
CURRENT_NATSCLI=$(sed -n 's/^VERSION_stable_nats=//p' < synadia-nats-channels.conf)
5656
CURRENT_NSC=$(sed -n 's/^VERSION_stable_nsc=//p' < synadia-nats-channels.conf)
5757
58-
echo "current_natscli=$CURRENT_NATSCLI" >> $GITHUB_OUTPUT
59-
echo "current_nsc=$CURRENT_NSC" >> $GITHUB_OUTPUT
58+
echo >> "$GITHUB_OUTPUT" "current_natscli=$CURRENT_NATSCLI"
59+
echo >> "$GITHUB_OUTPUT" "current_nsc=$CURRENT_NSC"
6060
6161
echo "Current natscli version: $CURRENT_NATSCLI"
6262
echo "Current nsc version: $CURRENT_NSC"
@@ -71,20 +71,31 @@ jobs:
7171
shell: bash
7272
run: |
7373
UPDATED=false
74-
75-
if [[ "$RELEASE_NATSCLI" != "$CURRENT_NATSCLI" ]]; then
76-
echo "Updating natscli from $CURRENT_NATSCLI to $RELEASE_NATSCLI"
77-
sed -i "s/^VERSION_stable_nats=.*/VERSION_stable_nats=$RELEASE_NATSCLI/" synadia-nats-channels.conf
74+
NL=$'\n'
75+
declare -a which_updated=()
76+
commit_message="Update NATS tool versions${NL}${NL}" # paragraph, title vs body
77+
pr_body_table=""
78+
79+
update_one() {
80+
local toolname="$1" config_name="$2" latest="$3" prior="$4"
81+
if [[ "$latest" == "$prior" ]]; then
82+
pr_body_table+="| ${toolname} | \`${prior}\` | (unchanged) |$NL"
83+
return
84+
fi
85+
echo "Updating $toolname from $prior to $latest"
86+
sed -i "s/^VERSION_stable_${config_name}=.*/VERSION_stable_${config_name}=${latest}/" synadia-nats-channels.conf
7887
UPDATED=true
79-
fi
88+
which_updated+=("$toolname")
89+
commit_message+="- ${toolname}: ${prior} → ${latest}$NL"
90+
pr_body_table+="| ${toolname} | \`${prior}\` | \`${latest}\` |$NL"
91+
}
8092
81-
if [[ "$RELEASE_NSC" != "$CURRENT_NSC" ]]; then
82-
echo "Updating nsc from $CURRENT_NSC to $RELEASE_NSC"
83-
sed -i "s/^VERSION_stable_nsc=.*/VERSION_stable_nsc=$RELEASE_NSC/" synadia-nats-channels.conf
84-
UPDATED=true
85-
fi
93+
update_one natscli nats "$RELEASE_NATSCLI" "$CURRENT_NATSCLI"
94+
update_one nsc nsc "$RELEASE_NSC" "$CURRENT_NSC"
8695
87-
echo "updated=$UPDATED" >> $GITHUB_OUTPUT
96+
echo >> "$GITHUB_OUTPUT" "updated=$UPDATED"
97+
echo >> "$GITHUB_OUTPUT" "which_tools=${which_updated[*]}"
98+
echo >> "$GITHUB_OUTPUT" "commit=$(jq -Mcnr --arg cm "$commit_message" --arg table "$pr_body_table" '.message=$cm | .pr_body_table=$table')"
8899
89100
- name: Create Pull Request
90101
if: steps.update_versions.outputs.updated == 'true'
@@ -93,19 +104,15 @@ jobs:
93104
token: ${{ secrets.GITHUB_TOKEN }}
94105

95106
commit-message: |
96-
Update NATS tool versions
97-
98-
- natscli: ${{ steps.check_current.outputs.current_natscli }} → ${{ steps.get_releases.outputs.release_natscli }}
99-
- nsc: ${{ steps.check_current.outputs.current_nsc }} → ${{ steps.get_releases.outputs.release_nsc }}
107+
${{ fromJSON(steps.update_versions.outputs.commit).message }}
100108
101-
title: "Update NATS tool versions"
109+
title: "Update NATS tool versions: ${{ steps.update_versions.outputs.which_updated }}"
102110
body: |
103111
This PR updates the NATS tool versions in `synadia-nats-channels.conf` to the latest stable releases:
104112
105113
| Tool | Current | New |
106114
|------|---------|-----|
107-
| natscli | `${{ steps.check_current.outputs.current_natscli }}` | `${{ steps.get_releases.outputs.release_natscli }}` |
108-
| nsc | `${{ steps.check_current.outputs.current_nsc }}` | `${{ steps.get_releases.outputs.release_nsc }}` |
115+
${{ fromJSON(steps.update_versions.outputs.commit).pr_body_table }}
109116
110117
**Release Notes:**
111118
- [natscli releases](https://github.com/nats-io/natscli/releases)

0 commit comments

Comments
 (0)