Skip to content

Commit 30bda90

Browse files
authored
Merge pull request #634 from awslabs/release/v6.1.0
Release v6.1.0 into Main
2 parents ad62c27 + 72b15c7 commit 30bda90

327 files changed

Lines changed: 58419 additions & 9922 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.devcontainer/devcontainer.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "LISA Dev Container",
3-
"image": "mcr.microsoft.com/devcontainers/python:1-3.11-bookworm",
3+
"image": "mcr.microsoft.com/devcontainers/python:1-3.13-bookworm",
44
"features": {
55
"ghcr.io/devcontainers/features/docker-in-docker:2": {
66
"moby": true,
@@ -18,7 +18,7 @@
1818
},
1919
"ghcr.io/devcontainers/features/python:1": {
2020
"installTools": true,
21-
"version": "3.11"
21+
"version": "3.13"
2222
},
2323
"ghcr.io/devcontainers/features/aws-cli:1": {
2424
"version": "latest"

.github/workflows/code.ai-review.yml

Lines changed: 115 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,134 @@ permissions:
44
id-token: write
55
contents: read
66
pull-requests: write
7+
issues: write
8+
actions: read
79

810
on:
9-
pull_request:
11+
issue_comment:
12+
types: [created]
1013
pull_request_review_comment:
1114
types: [created]
1215

1316
concurrency:
14-
group: ${{ github.repository }}-${{ github.event.number || github.head_ref ||
15-
github.sha }}-${{ github.workflow }}-${{ github.event_name ==
16-
'pull_request_review_comment' && 'pr_comment' || 'pr' }}
17-
cancel-in-progress: ${{ github.event_name != 'pull_request_review_comment' }}
17+
group: ${{ github.repository }}-${{ github.event.number || github.event.issue.number || github.head_ref || github.sha }}-${{ github.workflow }}-ai-review
18+
cancel-in-progress: true
1819

1920
jobs:
2021
review:
2122
environment: dev
2223
runs-on: ubuntu-latest
24+
# Only run if the comment contains "/ai-review" or if it's a PR review comment
25+
if: |
26+
(github.event_name == 'issue_comment' &&
27+
github.event.issue.pull_request &&
28+
contains(github.event.comment.body, '/ai-review')) ||
29+
github.event_name == 'pull_request_review_comment'
2330
steps:
31+
- name: Get PR details
32+
id: pr
33+
uses: actions/github-script@v8
34+
with:
35+
script: |
36+
let pr;
37+
if (context.eventName === 'issue_comment') {
38+
// Get PR from issue comment
39+
const issue = await github.rest.issues.get({
40+
owner: context.repo.owner,
41+
repo: context.repo.repo,
42+
issue_number: context.issue.number,
43+
});
44+
pr = await github.rest.pulls.get({
45+
owner: context.repo.owner,
46+
repo: context.repo.repo,
47+
pull_number: context.issue.number,
48+
});
49+
} else {
50+
// Get PR from review comment
51+
pr = await github.rest.pulls.get({
52+
owner: context.repo.owner,
53+
repo: context.repo.repo,
54+
pull_number: context.payload.pull_request.number,
55+
});
56+
}
57+
core.setOutput('number', pr.data.number);
58+
core.setOutput('head_sha', pr.data.head.sha);
59+
60+
- name: Clean up old AI review comments
61+
uses: actions/github-script@v8
62+
with:
63+
script: |
64+
// Get all PR comments
65+
const comments = await github.rest.issues.listComments({
66+
owner: context.repo.owner,
67+
repo: context.repo.repo,
68+
issue_number: ${{ steps.pr.outputs.number }},
69+
});
70+
71+
// Delete ALL comments from bots
72+
const botComments = comments.data.filter(comment =>
73+
comment.user.type === 'Bot' || comment.user.login.includes('[bot]')
74+
);
75+
76+
console.log(`Found ${botComments.length} bot comments to delete`);
77+
78+
for (const comment of botComments) {
79+
try {
80+
await github.rest.issues.deleteComment({
81+
owner: context.repo.owner,
82+
repo: context.repo.repo,
83+
comment_id: comment.id,
84+
});
85+
console.log(`Deleted comment ${comment.id} by ${comment.user.login}`);
86+
} catch (error) {
87+
console.log(`Failed to delete comment ${comment.id}: ${error.message}`);
88+
}
89+
}
90+
91+
// Also clean up ALL bot review comments
92+
try {
93+
const reviewComments = await github.rest.pulls.listReviewComments({
94+
owner: context.repo.owner,
95+
repo: context.repo.repo,
96+
pull_number: ${{ steps.pr.outputs.number }},
97+
});
98+
99+
const botReviewComments = reviewComments.data.filter(comment =>
100+
comment.user.type === 'Bot' || comment.user.login.includes('[bot]')
101+
);
102+
103+
console.log(`Found ${botReviewComments.length} bot review comments to delete`);
104+
105+
for (const comment of botReviewComments) {
106+
try {
107+
await github.rest.pulls.deleteReviewComment({
108+
owner: context.repo.owner,
109+
repo: context.repo.repo,
110+
comment_id: comment.id,
111+
});
112+
console.log(`Deleted review comment ${comment.id} by ${comment.user.login}`);
113+
} catch (error) {
114+
console.log(`Failed to delete review comment ${comment.id}: ${error.message}`);
115+
}
116+
}
117+
} catch (error) {
118+
console.log(`Error cleaning up review comments: ${error.message}`);
119+
}
120+
121+
- name: React to trigger comment
122+
if: github.event_name == 'issue_comment'
123+
uses: actions/github-script@v8
124+
with:
125+
script: |
126+
await github.rest.reactions.createForIssueComment({
127+
owner: context.repo.owner,
128+
repo: context.repo.repo,
129+
comment_id: context.payload.comment.id,
130+
content: 'eyes'
131+
});
132+
24133
- name: Configure AWS Credentials
25-
uses: aws-actions/configure-aws-credentials@v4
134+
uses: aws-actions/configure-aws-credentials@v5
26135
with:
27136
aws-region: ${{ vars.AWS_REGION }}
28137
role-to-assume: arn:aws:iam::${{ vars.AWS_ACCOUNT }}:role/${{ vars.ROLE_NAME_TO_ASSUME }}

.github/workflows/code.deploy.demo.yml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ jobs:
2020
environment: demo
2121
runs-on: ubuntu-latest
2222
steps:
23-
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v4
23+
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v4
2424
- name: Configure AWS Credentials
25-
uses: aws-actions/configure-aws-credentials@3d21ddcb5087c3d29b7e19fe293e3455fabe32af # v4
25+
uses: aws-actions/configure-aws-credentials@cf459bd40262a8603163308e488de922e4eb5a95 # v4
2626
with:
2727
aws-region: ${{ vars.AWS_REGION }}
2828
role-to-assume: arn:aws:iam::${{ vars.AWS_ACCOUNT }}:role/${{ vars.ROLE_NAME_TO_ASSUME }}
@@ -32,14 +32,14 @@ jobs:
3232
id: create-yaml
3333
run: |
3434
echo "${{vars.CONFIG_YAML}}" > config-custom.yaml
35-
- name: Set up Python 3.11
36-
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v5
35+
- name: Set up Python 3.13
36+
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v5
3737
with:
38-
python-version: "3.11"
39-
- name: Use Node.js 20.x
40-
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v4
38+
python-version: "3.13"
39+
- name: Use Node.js 24.x
40+
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v4
4141
with:
42-
node-version: 20.x
42+
node-version: 24.x
4343
- name: Install CDK dependencies
4444
run: |
4545
npm ci
@@ -53,7 +53,7 @@ jobs:
5353
if: always()
5454
steps:
5555
- name: Send Notification that Demo Deploy Finished
56-
uses: rtCamp/action-slack-notify@cdf0a2130cbcdfd82ba5fcac8e076370bf381b36 # v2
56+
uses: rtCamp/action-slack-notify@e31e87e03dd19038e411e38ae27cbad084a90661 # v2
5757
env:
5858
SLACK_WEBHOOK: ${{ secrets.INTERNAL_DEV_SLACK_WEBHOOK_URL }}
5959
SLACK_COLOR: ${{ contains(join(needs.*.result, ' '), 'failure') && 'failure' || 'success' }}

.github/workflows/code.deploy.dev.yml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ jobs:
2020
environment: dev
2121
runs-on: ubuntu-latest
2222
steps:
23-
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v4
23+
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v4
2424
- name: Configure AWS Credentials
25-
uses: aws-actions/configure-aws-credentials@3d21ddcb5087c3d29b7e19fe293e3455fabe32af # v4
25+
uses: aws-actions/configure-aws-credentials@cf459bd40262a8603163308e488de922e4eb5a95 # v4
2626
with:
2727
aws-region: ${{ vars.AWS_REGION }}
2828
role-to-assume: arn:aws:iam::${{ vars.AWS_ACCOUNT }}:role/${{ vars.ROLE_NAME_TO_ASSUME }}
@@ -32,14 +32,14 @@ jobs:
3232
id: create-yaml
3333
run: |
3434
echo "${{vars.CONFIG_YAML}}" > config-custom.yaml
35-
- name: Set up Python 3.11
36-
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v5
35+
- name: Set up Python 3.13
36+
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v5
3737
with:
38-
python-version: "3.11"
39-
- name: Use Node.js 20.x
40-
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v4
38+
python-version: "3.13"
39+
- name: Use Node.js 24.x
40+
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v4
4141
with:
42-
node-version: 20.x
42+
node-version: 24.x
4343
- name: Install CDK dependencies
4444
run: |
4545
npm ci
@@ -53,7 +53,7 @@ jobs:
5353
if: always()
5454
steps:
5555
- name: Send Notification that Dev Deploy Finished
56-
uses: rtCamp/action-slack-notify@cdf0a2130cbcdfd82ba5fcac8e076370bf381b36 # v2
56+
uses: rtCamp/action-slack-notify@e31e87e03dd19038e411e38ae27cbad084a90661 # v2
5757
env:
5858
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
5959
SLACK_COLOR: ${{ contains(join(needs.*.result, ' '), 'failure') && 'failure' || 'success' }}

.github/workflows/code.draft-release-and-tag.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ jobs:
1616
if: (startsWith(github.event.pull_request.head.ref, 'release/' ) || startsWith(github.event.pull_request.head.ref, 'hotfix/')) && github.event.pull_request.merged == true && github.event.pull_request.base.ref == 'main'
1717
steps:
1818
- name: Checkout Source Tag
19-
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v4
19+
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v4
2020
with:
2121
ref: main
2222
- name: Get Version
@@ -49,7 +49,7 @@ jobs:
4949
env:
5050
GITHUB_HEAD_REF: ${{ github.event.pull_request.head.ref }}
5151
- name: Send Notification that Draft Release is Ready
52-
uses: rtCamp/action-slack-notify@cdf0a2130cbcdfd82ba5fcac8e076370bf381b36 # v2
52+
uses: rtCamp/action-slack-notify@e31e87e03dd19038e411e38ae27cbad084a90661 # v2
5353
if: (startsWith(github.event.pull_request.head.ref, 'release/' ) || startsWith(github.event.pull_request.head.ref, 'hotfix/')) && github.event.pull_request.merged == true && github.event.pull_request.base.ref == 'main'
5454
with:
5555
status: success()

.github/workflows/code.end-to-end-test.nightly.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
runs-on: ubuntu-latest
1818
steps:
1919
- name: Send “E2E Tests Starting” to Slack
20-
uses: rtCamp/action-slack-notify@cdf0a2130cbcdfd82ba5fcac8e076370bf381b36 # v2
20+
uses: rtCamp/action-slack-notify@e31e87e03dd19038e411e38ae27cbad084a90661 # v2
2121
env:
2222
SLACK_TITLE: 'E2E Tests Starting'
2323
MSG_MINIMAL: true
@@ -28,13 +28,13 @@ jobs:
2828
runs-on: ubuntu-latest
2929
needs: notify_e2e_start
3030
steps:
31-
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v4
31+
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v4
3232
with:
3333
ref: develop
3434
- name: Setup Node.js
35-
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v4
35+
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v4
3636
with:
37-
node-version: '18'
37+
node-version: '24'
3838
cache: 'npm'
3939
- name: Install base dependencies
4040
run: npm ci
@@ -44,7 +44,7 @@ jobs:
4444
run: npx cypress run --config-file cypress/cypress.e2e.config.ts
4545
- name: Archive Cypress videos & screenshots
4646
if: failure() || always()
47-
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
47+
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v4
4848
with:
4949
name: cypress-e2e-artifacts
5050
path: |
@@ -58,7 +58,7 @@ jobs:
5858
if: always()
5959
steps:
6060
- name: Notify E2E results to Slack
61-
uses: rtCamp/action-slack-notify@cdf0a2130cbcdfd82ba5fcac8e076370bf381b36 # v2
61+
uses: rtCamp/action-slack-notify@e31e87e03dd19038e411e38ae27cbad084a90661 # v2
6262
env:
6363
SLACK_COLOR: ${{ needs.e2e.result == 'success' && 'good' || 'danger' }}
6464
SLACK_TITLE: 'E2E Tests Finished'

.github/workflows/code.hotfix.branch.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121
pull-requests: write # Required for creating PRs
2222
steps:
2323
- name: Checkout Source Tag
24-
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v4
24+
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v4
2525
with:
2626
ref: refs/tags/${{ github.event.inputs.source_tag }}
2727
- name: Create Hotfix Branch and Update Version

.github/workflows/code.merge.main-to-develop.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ jobs:
1414
contents: write # Required for merging branches
1515
steps:
1616
- name: Checkout main
17-
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v4
17+
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v4
1818
with:
1919
ref: main
2020
ssh-key: ${{ secrets.DEPLOYMENT_SSH_KEY }}
@@ -34,7 +34,7 @@ jobs:
3434
if: always()
3535
steps:
3636
- name: Send Notification that Develop is up to date
37-
uses: rtCamp/action-slack-notify@cdf0a2130cbcdfd82ba5fcac8e076370bf381b36 # v2
37+
uses: rtCamp/action-slack-notify@e31e87e03dd19038e411e38ae27cbad084a90661 # v2
3838
env:
3939
SLACK_WEBHOOK: ${{ secrets.INTERNAL_DEV_SLACK_WEBHOOK_URL }}
4040
SLACK_COLOR: ${{ contains(join(needs.*.result, ' '), 'failure') && 'failure' || 'success' }}

.github/workflows/code.publish.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@ jobs:
1313
contents: read
1414
packages: write # Required for npm package publishing
1515
steps:
16-
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v4
16+
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v4
1717
# Setup .npmrc file to publish to GitHub Packages
18-
- uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v4
18+
- uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v4
1919
with:
20-
node-version: '20.x'
20+
node-version: '24.x'
2121
registry-url: 'https://npm.pkg.github.com'
2222
- run: npm ci
2323
- run: npm publish
@@ -33,7 +33,7 @@ jobs:
3333
contents: read
3434
steps:
3535
- name: Send Notification that package has published
36-
uses: rtCamp/action-slack-notify@cdf0a2130cbcdfd82ba5fcac8e076370bf381b36 # v2
36+
uses: rtCamp/action-slack-notify@e31e87e03dd19038e411e38ae27cbad084a90661 # v2
3737
env:
3838
SLACK_WEBHOOK: ${{ secrets.INTERNAL_DEV_SLACK_WEBHOOK_URL }}
3939
SLACK_COLOR: ${{ contains(join(needs.*.result, ' '), 'failure') && 'failure' || 'success' }}

.github/workflows/code.release.branch.yml

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,13 @@ jobs:
1919
pull-requests: write # Required for creating PRs
2020
steps:
2121
- name: Checkout Develop Branch
22-
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v4
22+
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v4
2323
with:
2424
ref: develop
2525
fetch-depth: 0 # Fetch full history for proper branch comparison
2626
ssh-key: ${{ secrets.DEPLOYMENT_SSH_KEY }}
2727
- name: Configure AWS Credentials
28-
uses: aws-actions/configure-aws-credentials@3d21ddcb5087c3d29b7e19fe293e3455fabe32af # v4
28+
uses: aws-actions/configure-aws-credentials@cf459bd40262a8603163308e488de922e4eb5a95 # v4
2929
with:
3030
aws-region: ${{ vars.AWS_REGION }}
3131
role-to-assume: arn:aws:iam::${{ vars.AWS_ACCOUNT }}:role/${{ vars.ROLE_NAME_TO_ASSUME }}
@@ -62,7 +62,7 @@ jobs:
6262
echo "📝 Regenerating CDK baselines..."
6363
rm -rf test/cdk/stacks/__baselines__
6464
mkdir -p test/cdk/stacks/__baselines__
65-
npm test -- test/cdk/stacks/snapshot.test.ts --testNamePattern="is compatible with baseline"
65+
npx jest test/cdk/stacks/snapshot.test.ts
6666
echo "✅ CDK baselines regenerated"
6767
# Add the generated PR description to the top of CHANGELOG.md
6868
echo "📝 Adding release notes to CHANGELOG.md..."
@@ -88,9 +88,11 @@ jobs:
8888
# Create the draft pull request
8989
gh pr create -d \
9090
--title "Release ${{github.event.inputs.release_tag}} into Main" \
91-
--body "${{ steps.generate_description.outputs.DESCRIPTION }}" \
91+
--body-file - \
9292
--base main \
93-
--head release/${{ github.event.inputs.release_tag }}
93+
--head release/${{ github.event.inputs.release_tag }} << 'EOF'
94+
${{ steps.generate_description.outputs.DESCRIPTION }}
95+
EOF
9496
env:
9597
GH_TOKEN: ${{ github.token }}
9698
GITHUB_TOKEN: ${{ secrets.LEAD_ACCESS_TOKEN }}

0 commit comments

Comments
 (0)