Skip to content

Commit c31d48d

Browse files
o-baggeDennisMoschina
authored andcommitted
Fix prerelease workflow file
1 parent f9b83e7 commit c31d48d

1 file changed

Lines changed: 16 additions & 25 deletions

File tree

.github/workflows/prerelease_open_pr_builds.yaml

Lines changed: 16 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -38,24 +38,22 @@ jobs:
3838
--prerelease \
3939
--title "Open PR builds" \
4040
--notes "Rolling prerelease containing build outputs from all open PRs."
41-
4241
- name: List open PRs
4342
env:
4443
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
4544
run: |
46-
gh pr list --repo "${{ github.repository }}" --state open --json number,headRefOid --limit 200 > prs.json
47-
45+
gh pr list --repo "${{ github.repository }}" --state open --json number,headRefOid,title --limit 200 > prs.json
4846
- name: Download artifacts from each PR's latest successful build
4947
env:
5048
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
5149
run: |
5250
set -euo pipefail
5351
rm -rf collected && mkdir -p collected
54-
5552
jq -c '.[]' prs.json | while read -r pr; do
5653
num=$(echo "$pr" | jq -r .number)
5754
sha=$(echo "$pr" | jq -r .headRefOid)
58-
55+
title=$(echo "$pr" | jq -r .title)
56+
safe_title=$(echo "$title" | sed 's/[^a-zA-Z0-9_-]/_/g' | cut -c1-50)
5957
run_id=$(gh run list \
6058
--repo "${{ github.repository }}" \
6159
--workflow "$BUILD_WORKFLOW_NAME" \
@@ -64,63 +62,56 @@ jobs:
6462
--limit 1 \
6563
--json databaseId \
6664
--jq '.[0].databaseId')
67-
6865
if [ -z "$run_id" ] || [ "$run_id" = "null" ]; then
6966
echo "PR #$num: no successful run found"
7067
continue
7168
fi
72-
7369
out="collected/pr-$num"
7470
rm -rf "$out" && mkdir -p "$out"
75-
7671
if ! gh run download "$run_id" --repo "${{ github.repository }}" -n "openearable_v2_firmware.elf" -D "$out/elf" 2>&1; then
7772
echo "PR #$num: failed to download firmware.elf artifact (may be expired)"
7873
rm -rf "$out"
7974
continue
8075
fi
81-
8276
if ! gh run download "$run_id" --repo "${{ github.repository }}" -n "openearable_v2_fota.zip" -D "$out/fota" 2>&1; then
8377
echo "PR #$num: failed to download fota.zip artifact (may be expired)"
8478
rm -rf "$out"
8579
continue
8680
fi
87-
8881
(cd "$out/fota" && zip -r "../openearable_v2_fota.zip" .)
89-
9082
mv "$out/elf/openearable_v2_firmware.elf" "$out/openearable_v2_firmware.elf"
91-
mv "$out/openearable_v2_fota.zip" "$out/openearable_v2_fota.zip"
92-
9383
rm -rf "$out/elf" "$out/fota"
9484
95-
echo "PR #$num: artifacts downloaded and prepared successfully"
85+
echo "$safe_title" > "$out/title.txt"
86+
87+
echo "PR #$num ($title): artifacts downloaded and prepared successfully"
9688
done
97-
98-
9989
- name: Upload all PR assets to prerelease (overwrite)
10090
env:
10191
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
10292
run: |
10393
set -euo pipefail
104-
94+
mkdir -p collected/upload
10595
find collected -type f \( -name "*.elf" -o -name "*.zip" \) | while read -r f; do
10696
pr=$(echo "$f" | sed -n 's#.*/pr-\([0-9]\+\)/.*#\1#p')
10797
base=$(basename "$f")
108-
asset="pr-${pr}-${base}"
109-
gh release upload "$TAG" "$f" --repo "${{ github.repository }}" --clobber --name "$asset"
98+
title_file="collected/pr-$pr/title.txt"
99+
if [ -f "$title_file" ]; then
100+
safe_title=$(cat "$title_file")
101+
asset="pr-${pr}-${safe_title}-${base}"
102+
else
103+
asset="pr-${pr}-${base}"
104+
fi
105+
cp "$f" "collected/upload/$asset"
106+
gh release upload "$TAG" "collected/upload/$asset" --repo "${{ github.repository }}" --clobber
110107
done
111-
112108
# delete assets of closed PRs
113109
open_prs="$(jq -r '.[].number' prs.json || true)"
114-
115110
gh release view "$TAG" --repo "${{ github.repository }}" --json assets -q '.assets[].name' | while read -r asset; do
116111
pr="$(echo "$asset" | sed -n 's/^pr-\([0-9]\+\)-.*$/\1/p')"
117112
[ -n "$pr" ] || continue
118-
119113
if ! echo "$open_prs" | grep -qx "$pr"; then
120114
echo "Deleting asset $asset (PR #$pr is closed/merged)"
121115
gh release delete-asset "$TAG" "$asset" --repo "${{ github.repository }}" --yes
122116
fi
123117
done
124-
125-
126-

0 commit comments

Comments
 (0)