Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: workflow to update the list of regions for AWS::CDK::Metadata #27981

Merged
merged 2 commits into from
Nov 15, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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 <[email protected]>
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);
}