Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 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
172 changes: 99 additions & 73 deletions .github/workflows/enum-auto-updater.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
name: CDK Enums Auto Updater
on:
workflow_dispatch:
schedule:
- cron: '0 0 * * 1'
schedule: # Runs every Monday at 1pm PT
- cron: '0 13 * * 1'

jobs:
update-l2-enums:
Expand All @@ -25,11 +25,6 @@ jobs:
- name: Install dependencies
run: cd tools/@aws-cdk/enum-updater && yarn install --frozen-lockfile && yarn build

- name: Update enum static mapping
run: |
cd tools/@aws-cdk/enum-updater
./bin/update-static-enum-mapping

- name: Check for changes
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this step needs to move the other workflow, so we will only create a PR if there is changes to the static mapping file, or we do not need to push any prs

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

actually, it is already in the other flow, so it should be removed from this one

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I ment this section static-mapping-check

id: static-mapping-check
run: |
Expand All @@ -39,29 +34,6 @@ jobs:
else
echo "changes=false" >> $GITHUB_OUTPUT
fi

- name: Create PR for static mapping changes
if: steps.static-mapping-check.outputs.changes == 'true'
run: |
cd tools/@aws-cdk/enum-updater
git config --global user.name 'aws-cdk-automation'
git config --global user.email '[email protected]'

# Create a new branch for the module
branchName="enum-update/static-mapping-update"
git checkout -b "$branchName"

git add . # Add all files changed
git commit -m "chore: update enum static mapping"
git push origin "$branchName"

gh pr create --title "chore: update enum static mapping" \
--body "This PR updates the CDK enum mapping file." \
--base main \
--head "$branchName" \
--label "contribution/core,pr-linter/exempt-integ-test,pr-linter/exempt-readme,pr-linter/exempt-test"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Identify Missing Values and Apply Code Changes
run: |
Expand All @@ -77,49 +49,103 @@ jobs:
echo "changes=false" >> $GITHUB_OUTPUT
fi

- name: Commit & Push changes
if: steps.git-check.outputs.changes == 'true'
run: |
# Iterate through each module directory that has changes
git config --global user.name 'aws-cdk-automation'
git config --global user.email '[email protected]'
for module in $(git diff --name-only | grep -E '^packages/(@aws-cdk|aws-cdk-lib)/.*' | sed -E 's|^packages/(@aws-cdk\|aws-cdk-lib)/([^/]+).*|\2|' | sort -u); do
moduleName=$(basename $module)

# Determine the correct path for the module
if [[ -d "packages/aws-cdk-lib/$module" ]]; then
modulePath="packages/aws-cdk-lib/$module"
elif [[ -d "packages/@aws-cdk/$module" ]]; then
modulePath="packages/@aws-cdk/$module"
else
echo "Cannot find module directory for $module"
continue
fi

# Check for existing PR with the same name
prExists=$(gh pr list --state open --search "feat(${moduleName#aws-}): add new enum values for ${moduleName#aws-}" --json number,title -q '.[].number')

# If a PR exists, close it and continue
if [[ -n "$prExists" ]]; then
echo "PR already exists for module ${moduleName#aws-}, closing the existing PR."
gh pr close "$prExists" --confirm # Close the PR by its number
fi

# Create a new branch for the module
branchName="enum-update/${moduleName#aws-}"
git checkout -b "$branchName"
- name: Commit & Push changes
if: steps.git-check.outputs.changes == 'true'
run: |
# Enable command logging
set -x

echo "=== Starting PR creation process ==="

# Iterate through each module directory that has changes
echo "Storing original branch name..."
git config --global user.name 'aws-cdk-automation'
git config --global user.email '[email protected]'

# Store the original branch name
echo "Storing original branch name..."
original_branch=$(git rev-parse --abbrev-ref HEAD)
echo "Original branch: $original_branch"

for module in $(git diff --name-only | grep -E '^packages/(@aws-cdk|aws-cdk-lib)/.*' | sed -E 's|^packages/(@aws-cdk\|aws-cdk-lib)/([^/]+).*|\2|' | sort -u); do
echo "=== Processing module: $module ==="
moduleName=$(basename $module)
echo "Module name: $moduleName"

# Reset to clean state
echo "Resetting to clean state..."
git reset --hard HEAD
git clean -fd

# Determine the correct path for the module
echo "Determining module path..."
if [[ -d "packages/aws-cdk-lib/$module" ]]; then
modulePath="packages/aws-cdk-lib/$module"
echo "Found module in aws-cdk-lib: $modulePath"
elif [[ -d "packages/@aws-cdk/$module" ]]; then
modulePath="packages/@aws-cdk/$module"
echo "Found module in @aws-cdk: $modulePath"
else
echo "ERROR: Cannot find module directory for $module"
continue
fi

# Check for existing PR with the same name
prExists=$(gh pr list --state open --search "chore(${moduleName#aws-}): add new enum values for ${moduleName#aws-}" --json number,title -q '.[].number')

# Stage, commit, and push changes for the module
git add "$modulePath" # Using the correct path
git commit -m "chore(${moduleName#aws-}): add new enum values for ${moduleName#aws-}"
git push origin "$branchName"

# Create a new pull request
gh pr create --title "chore(${moduleName#aws-}): add new enum values for ${moduleName#aws-}" \
--body "This PR updates the enum values for ${moduleName#aws-}." \
--base main \
--head "$branchName" \
--label "contribution/core,pr-linter/exempt-integ-test,pr-linter/exempt-readme,pr-linter/exempt-test"
done
# If a PR exists, close it
if [[ -n "$prExists" ]]; then
echo "Found existing PR #$prExists for module ${moduleName#aws-}, closing it..."
gh pr close "$prExists" --confirm
else
echo "No existing PR found for ${moduleName#aws-}"
fi

# Create/switch to branch for the module
branchName="enum-update/${moduleName#aws-}"
echo "Creating/switching to branch: $branchName"
git checkout -B "$branchName" $original_branch # -B forces branch creation/reset

# Re-run the update script for this specific module
echo "Re-running update script..."
echo "Current directory: $(pwd)"
cd tools/@aws-cdk/enum-updater
echo "Running update-missing-enums script..."
./bin/update-missing-enums
cd ../../..
echo "Returned to: $(pwd)"

echo "Checking for changes after update..."
git status

# Stage, commit, and push changes for the module
echo "Staging changes for $modulePath"
git add "$modulePath"

echo "Committing changes..."
git commit -m "chore(${moduleName#aws-}): add new enum values for ${moduleName#aws-}"

# Force push to overwrite any existing branch
echo "Force pushing to remote..."
git push -f origin "$branchName"


# Create a new pull request
echo "Creating pull request..."
gh pr create --title "chore(${moduleName#aws-}): add new enum values for ${moduleName#aws-}" \
--body "This PR updates the enum values for ${moduleName#aws-}." \
--base main \
--head "$branchName" \
--label "contribution/core,pr-linter/exempt-integ-test,pr-linter/exempt-readme,pr-linter/exempt-test"

# Return to original branch
echo "Returning to original branch: $original_branch"
git checkout $original_branch

echo "=== Completed processing for module: $module ==="
done

# Disable command logging
set +x
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
64 changes: 64 additions & 0 deletions .github/workflows/enum-static-mapping-updater.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
name: CDK Enums Auto Updater
on:
workflow_dispatch:
schedule: # Runs every Monday at 12am PT
- cron: '0 0 * * 1'

jobs:
update-l2-enums:
if: github.repository == 'aws/aws-cdk'
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- name: Check Out
uses: actions/checkout@v4

- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: "*"
env:
NODE_OPTIONS: "--max-old-space-size=8196 --experimental-worker ${NODE_OPTIONS:-}"

- name: Install dependencies
run: cd tools/@aws-cdk/enum-updater && yarn install --frozen-lockfile && yarn build

- name: Update enum static mapping
run: |
cd tools/@aws-cdk/enum-updater
./bin/update-static-enum-mapping
- name: Check for changes
id: static-mapping-check
run: |
cd tools/@aws-cdk/enum-updater
if [[ -n "$(git status --porcelain ./lib/static-enum-mapping.json)" ]]; then
echo "changes=true" >> $GITHUB_OUTPUT
else
echo "changes=false" >> $GITHUB_OUTPUT
fi
- name: Create PR for static mapping changes
if: steps.static-mapping-check.outputs.changes == 'true'
run: |
cd tools/@aws-cdk/enum-updater
git config --global user.name 'aws-cdk-automation'
git config --global user.email '[email protected]'
# Create a new branch for the module
branchName="enum-update/static-mapping-update"
git checkout -b "$branchName"
git add . # Add all files changed
git commit -m "chore: update enum static mapping"
git push origin "$branchName"
gh pr create --title "chore: update enum static mapping" \
--body "This PR updates the CDK enum mapping file." \
--base main \
--head "$branchName" \
--label "contribution/core,pr-linter/exempt-integ-test,pr-linter/exempt-readme,pr-linter/exempt-test"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Loading