Skip to content

Commit 7642c32

Browse files
authored
Add API changelog check workflow (#47)
* Add workflow to ensure changelog entries are added when manually updating AWS models. * Apply zizmor fixes
1 parent 6db017b commit 7642c32

1 file changed

Lines changed: 70 additions & 0 deletions

File tree

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
name: API Changelog Check
2+
3+
on:
4+
pull_request:
5+
types: [opened, synchronize, reopened, labeled, unlabeled]
6+
paths:
7+
- 'codegen/aws-models/**'
8+
9+
permissions:
10+
contents: read
11+
12+
jobs:
13+
check-changelog:
14+
runs-on: ubuntu-latest
15+
if: ${{ !contains(github.event.pull_request.labels.*.name, 'skip-changelog') }}
16+
steps:
17+
- name: Checkout repository
18+
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
19+
with:
20+
fetch-depth: 0
21+
persist-credentials: false
22+
23+
- name: Get changed model files
24+
id: changed-models
25+
run: |
26+
changed_models=$(git diff --name-only origin/${GITHUB_BASE_REF}...HEAD -- 'codegen/aws-models/*.json' | xargs -I {} basename {} .json)
27+
echo "models<<EOF" >> $GITHUB_OUTPUT
28+
echo "$changed_models" >> $GITHUB_OUTPUT
29+
echo "EOF" >> $GITHUB_OUTPUT
30+
31+
- name: Check for changelog entries
32+
run: |
33+
missing_changelogs=""
34+
35+
while IFS= read -r service; do
36+
[ -z "$service" ] && continue
37+
38+
changelog_dir="clients/aws-sdk-${service}/.changes/next-release"
39+
40+
if [ ! -d "$changelog_dir" ]; then
41+
missing_changelogs="${missing_changelogs}\n - ${service} (directory does not exist: ${changelog_dir})"
42+
continue
43+
fi
44+
45+
# Check for valid changelog JSON files with required fields
46+
valid_entry_found=false
47+
for file in "$changelog_dir"/*.json; do
48+
[ -e "$file" ] || continue
49+
if jq -e '.type == "api-change" and .description' "$file" > /dev/null 2>&1; then
50+
valid_entry_found=true
51+
break
52+
fi
53+
done
54+
55+
if [ "$valid_entry_found" = false ]; then
56+
missing_changelogs="${missing_changelogs}\n - ${service} (no valid changelog entry in ${changelog_dir})"
57+
fi
58+
done <<< "${STEPS_CHANGED_MODELS_OUTPUTS_MODELS}"
59+
60+
if [ -n "$missing_changelogs" ]; then
61+
printf "::error::Missing changelog entries for the following services:%b\n" "$missing_changelogs"
62+
echo ""
63+
echo "Please add a changelog entry in clients/aws-sdk-<service>/.changes/next-release/ for each modified model."
64+
echo "Entry must be a JSON file with 'type: \"api-change\"' and 'description' fields."
65+
exit 1
66+
fi
67+
68+
echo "All modified models have corresponding changelog entries."
69+
env:
70+
STEPS_CHANGED_MODELS_OUTPUTS_MODELS: ${{ steps.changed-models.outputs.models }}

0 commit comments

Comments
 (0)