Skip to content

Commit

Permalink
chore: workflow to update the list of regions for AWS::CDK::Metadata (
Browse files Browse the repository at this point in the history
#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
otaviomacedo committed Nov 15, 2023
1 parent b21ee35 commit 88a4619
Show file tree
Hide file tree
Showing 2 changed files with 104 additions and 0 deletions.
78 changes: 78 additions & 0 deletions .github/workflows/update-metadata-regions.yml
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 }}
26 changes: 26 additions & 0 deletions scripts/update-metadata-regions.js
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);
}

0 comments on commit 88a4619

Please sign in to comment.