-
Notifications
You must be signed in to change notification settings - Fork 3.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore: workflow to update the list of regions for
AWS::CDK::Metadata
(
#27981) Steps: 1. Get the list of regions from our single source of truth. 2. Convert that list into the TypeScript code that should be the content of `packages/aws-cdk-lib/region-info/build-tools/metadata.ts`. 3. Create a PR if there were any changes. The workflow is triggered every day at 00:00. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
- Loading branch information
1 parent
b21ee35
commit 88a4619
Showing
2 changed files
with
104 additions
and
0 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
name: Update Metadata Regions | ||
on: | ||
workflow_dispatch: | ||
schedule: | ||
- cron: "0 0 * * *" | ||
|
||
jobs: | ||
update-regions: | ||
name: Update Regions | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Download regions | ||
env: | ||
URL: https://d3mqmgkwnwa8vm.cloudfront.net/regions.json | ||
id: download | ||
run: | | ||
response=$(curl $URL) | ||
echo "REGIONS=${response}" >> "$GITHUB_OUTPUT" | ||
status=$(curl -s -o /dev/null -w "%{http_code}" $URL) | ||
echo "STATUS=${status}" >> "$GITHUB_OUTPUT" | ||
- uses: actions/checkout@v3 | ||
- uses: actions/github-script@v7 | ||
if: ${{ steps.download.outputs.STATUS == 200 }} | ||
env: | ||
REGIONS: ${{ steps.download.outputs.REGIONS }} | ||
with: | ||
script: | | ||
const script = require('./scripts/update-metadata-regions.js') | ||
script() | ||
- name: Create Patch | ||
run: |- | ||
git add . | ||
git diff --patch --staged > ${{ runner.temp }}/update-spec.patch | ||
- name: Upload Patch | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: update-spec.patch | ||
path: ${{ runner.temp }}/update-spec.patch | ||
|
||
pr: | ||
name: Create Pull Request | ||
needs: update-regions | ||
permissions: | ||
contents: write | ||
pull-requests: write | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Check Out | ||
uses: actions/checkout@v4 | ||
|
||
- name: Download patch | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: update-spec.patch | ||
path: ${{ runner.temp }} | ||
|
||
- name: Apply patch | ||
run: '[ -s ${{ runner.temp }}/update-spec.patch ] && git apply ${{ runner.temp }}/update-spec.patch || echo "Empty patch. Skipping."' | ||
|
||
- name: Make Pull Request | ||
uses: peter-evans/create-pull-request@v5 | ||
with: | ||
# Git commit details | ||
branch: automation/region-update | ||
author: aws-cdk-automation <aws-cdk-automation@users.noreply.github.com> | ||
commit-message: |- | ||
feat(region-info): update Metadata regions | ||
Update the list of regions where the CDK deploys the `AWS::CDK::Metadata` resource. | ||
# Pull Request details | ||
title: "feat(region-info): update Metadata regions" | ||
body: |- | ||
Update the list of regions where the CDK deploys the `AWS::CDK::Metadata` resource. | ||
labels: contribution/core,dependencies,auto-approve,pr-linter/exempt-integ-test,pr-linter/exempt-readme,pr-linter/exempt-test | ||
team-reviewers: aws-cdk-team | ||
# Github prevents further Github actions to be run if the default Github token is used. | ||
# Instead use a privileged token here, so further GH actions can be triggered on this PR. | ||
token: ${{ secrets.PROJEN_GITHUB_TOKEN }} |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
module.exports = () => { | ||
const fs= require('fs'); | ||
const regions = JSON.parse(process.env.REGIONS); | ||
const content = generateFileContent(regions); | ||
const path = './packages/aws-cdk-lib/region-info/build-tools/metadata.ts'; | ||
fs.writeFileSync(path, content); | ||
} | ||
|
||
function generateFileContent(regions) { | ||
const template = `/* | ||
* Do not edit this file manually. To prevent misconfiguration, this file | ||
* should only be modified by an automated GitHub workflow, that ensures | ||
* that the regions present in this list correspond to all the regions | ||
* where we have the AWS::CDK::Metadata handler deployed. | ||
* | ||
* See: https://github.com/aws/aws-cdk/issues/27189 | ||
*/ | ||
export const AWS_CDK_METADATA = new Set([ | ||
$REGIONS | ||
]); | ||
`; | ||
|
||
const list = regions.sort().map(r => ` '${r}',`).join('\n'); | ||
return template.replace('$REGIONS', list); | ||
} |