@jjrawlins/cdk-diff-pr-github-action 0.0.1-beta → 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/.jsii +475 -33
  2. package/.mergify.yml +102 -0
  3. package/API.md +351 -11
  4. package/README.md +223 -39
  5. package/lib/CdkDiffIamTemplate.d.ts +3 -1
  6. package/lib/CdkDiffIamTemplate.js +10 -5
  7. package/lib/CdkDiffStackWorkflow.d.ts +2 -2
  8. package/lib/CdkDiffStackWorkflow.js +19 -20
  9. package/lib/CdkDriftDetectionWorkflow.d.ts +32 -0
  10. package/lib/CdkDriftDetectionWorkflow.js +281 -0
  11. package/lib/CdkDriftIamTemplate.d.ts +10 -0
  12. package/lib/CdkDriftIamTemplate.js +77 -0
  13. package/lib/bin/cdk-changeset-script.js +3 -3
  14. package/lib/bin/cdk-drift-detection-script.d.ts +15 -0
  15. package/lib/bin/cdk-drift-detection-script.js +196 -0
  16. package/lib/bin/detect-drift.js +162 -0
  17. package/lib/index.d.ts +2 -0
  18. package/lib/index.js +3 -1
  19. package/package.json +7 -2
  20. package/sonar-project.properties +17 -0
  21. package/.junie/guidelines.md +0 -62
  22. package/.yalc/@jjrawlins/cdk-diff-pr-github-action/.jsii +0 -3917
  23. package/.yalc/@jjrawlins/cdk-diff-pr-github-action/.junie/guidelines.md +0 -62
  24. package/.yalc/@jjrawlins/cdk-diff-pr-github-action/.tool-versions +0 -3
  25. package/.yalc/@jjrawlins/cdk-diff-pr-github-action/API.md +0 -276
  26. package/.yalc/@jjrawlins/cdk-diff-pr-github-action/LICENSE +0 -202
  27. package/.yalc/@jjrawlins/cdk-diff-pr-github-action/README.md +0 -146
  28. package/.yalc/@jjrawlins/cdk-diff-pr-github-action/lib/CdkDiffIamTemplate.d.ts +0 -8
  29. package/.yalc/@jjrawlins/cdk-diff-pr-github-action/lib/CdkDiffIamTemplate.js +0 -96
  30. package/.yalc/@jjrawlins/cdk-diff-pr-github-action/lib/CdkDiffStackWorkflow.d.ts +0 -22
  31. package/.yalc/@jjrawlins/cdk-diff-pr-github-action/lib/CdkDiffStackWorkflow.js +0 -144
  32. package/.yalc/@jjrawlins/cdk-diff-pr-github-action/lib/bin/cdk-changeset-script.d.ts +0 -9
  33. package/.yalc/@jjrawlins/cdk-diff-pr-github-action/lib/bin/cdk-changeset-script.js +0 -256
  34. package/.yalc/@jjrawlins/cdk-diff-pr-github-action/lib/bin/describe-cfn-changeset.js +0 -204
  35. package/.yalc/@jjrawlins/cdk-diff-pr-github-action/lib/index.d.ts +0 -2
  36. package/.yalc/@jjrawlins/cdk-diff-pr-github-action/lib/index.js +0 -19
  37. package/.yalc/@jjrawlins/cdk-diff-pr-github-action/package.json +0 -137
  38. package/.yalc/@jjrawlins/cdk-diff-pr-github-action/yalc.lock +0 -10
  39. package/.yalc/@jjrawlins/cdk-diff-pr-github-action/yalc.sig +0 -1
  40. package/lib/bin/describe-cfn-changeset.d.ts +0 -1
  41. package/lib/bin/describe-cfn-changeset.js +0 -204
  42. package/yalc.lock +0 -10
  43. /package/{.yalc/@jjrawlins/cdk-diff-pr-github-action/lib/bin/describe-cfn-changeset.d.ts → lib/bin/detect-drift.d.ts} +0 -0
package/.jsii CHANGED
@@ -3525,7 +3525,7 @@
3525
3525
  },
3526
3526
  "description": "A GitHub Action that creates a CDK diff for a pull request.",
3527
3527
  "docs": {
3528
- "stability": "stable"
3528
+ "stability": "experimental"
3529
3529
  },
3530
3530
  "homepage": "https://jjrawlins@github.com/JaysonRawlins/cdk-diff-pr-github-action.git",
3531
3531
  "jsiiVersion": "5.8.22 (build 160a3ef)",
@@ -3548,7 +3548,7 @@
3548
3548
  },
3549
3549
  "name": "@jjrawlins/cdk-diff-pr-github-action",
3550
3550
  "readme": {
3551
- "markdown": "# cdk-diff-pr-github-action\n\nA small Projen-based helper library that wires a GitHub workflow to create a CloudFormation Change Set for a CDK stack on every pull request, then comments the formatted diff back on the PR. It also provides a ready‑to‑deploy IAM template you can use to grant the minimal permissions required for the workflow to create and inspect change sets.\n\nThis package exposes two constructs:\n\n- `CdkDiffStackWorkflow` — Generates one GitHub Actions workflow per stack that:\n - Assumes your GitHub OIDC role\n - Optionally chains into a separate CDK deploy role\n - Runs `cdk deploy --no-execute` to create a change set\n - Runs a generated script to render the change set as an HTML table and posts it to the PR and to the GitHub Step Summary\n - Cleans up the change set\n\n- `CdkDiffIamTemplate` — Emits a CloudFormation template file (`cdk-diff-workflow-iam-template.yaml`) containing an example IAM role policy with the minimal permissions to create, describe, and delete CloudFormation change sets and read common CDK bootstrap resources. You can launch this in your account and then reference the created role.\n\n## Quick start\n\n1) Add the constructs to your Projen project (in `.projenrc.ts`).\n2) Synthesize with `npx projen`.\n3) Commit the generated files.\n4) Open a pull request — the workflow will create a change set and comment the diff.\n\n## Usage: CdkDiffStackWorkflow\n\n`CdkDiffStackWorkflow` renders a workflow per stack named `diff-<StackName>.yml` under `.github/workflows/`. It also generates a helper script at `.github/workflows/scripts/describe-cfn-changeset.ts` that formats the change set output and takes care of posting the PR comment and Step Summary.\n\nExample `.projenrc.ts`:\n\n```ts\nimport { awscdk } from 'projen';\nimport { CdkDiffStackWorkflow } from '@jjrawlins/cdk-diff-pr-github-action';\n\nconst project = new awscdk.AwsCdkConstructLibrary({\n // ... your usual settings ...\n name: 'my-lib',\n defaultReleaseBranch: 'main',\n cdkVersion: '2.85.0',\n github: true,\n});\n\nnew CdkDiffStackWorkflow({\n project,\n // Stacks to diff on PRs\n stacks: [\n {\n stackName: 'MyAppStack',\n cdkDiffRoleToAssumeArn: 'arn:aws:iam::123456789012:role/cdk-diff-role',\n cdkDiffRoleToAssumeRegion: 'us-east-1',\n // Optional per‑stack OIDC override (if not using the defaults below)\n // oidcRoleArn: 'arn:aws:iam::123456789012:role/github-oidc-role',\n // oidcRegion: 'us-east-1',\n },\n ],\n // Default OIDC role/region used by all stacks unless overridden per‑stack\n oidcRoleArn: 'arn:aws:iam::123456789012:role/github-oidc-role',\n oidcRegion: 'us-east-1',\n // Optional: Node version used in the workflow (default: '24.x')\n // nodeVersion: '20.x',\n // Optional: Yarn command to run CDK (default: 'cdk')\n // cdkYarnCommand: 'cdk',\n // Optional: Where to place the helper script\n // scriptOutputPath: '.github/workflows/scripts/describe-cfn-changeset.ts',\n});\n\nproject.synth();\n```\n\n### Required properties\n- `project` (AwsCdkTypeScriptApp) — Your Projen project instance.\n- `stacks` (array) — One entry per CDK stack you want a diff for.\n- OIDC configuration: either\n - Provide `oidcRoleArn` and `oidcRegion` at the top level, or\n - Provide `oidcRoleArn` and `oidcRegion` on every stack item.\n\nIf neither the defaults nor all per‑stack values are supplied, the construct throws with a helpful error.\n\n### Stack item fields\n- `stackName` — The CDK stack name to create the change set for.\n- `cdkDiffRoleToAssumeArn` — The ARN of the role used to create the change set (role chaining after OIDC).\n- `cdkDiffRoleToAssumeRegion` — The region for that role.\n- `oidcRoleArn` (optional) — Per‑stack override for the OIDC role.\n- `oidcRegion` (optional) — Per‑stack override for the OIDC region.\n\n### What gets generated\n- `.github/workflows/diff-<StackName>.yml` — One workflow per stack, triggered on PR open/sync/reopen.\n- `.github/workflows/scripts/describe-cfn-changeset.ts` — A helper script that:\n - Polls `DescribeChangeSet` until terminal\n - Filters out ignorable logical IDs or resource types using environment variables `IGNORE_LOGICAL_IDS` and `IGNORE_RESOURCE_TYPES`\n - Renders an HTML table with actions, logical IDs, types, replacements, and changed properties\n - Prints the HTML, appends to the GitHub Step Summary, and (if `GITHUB_TOKEN` and `GITHUB_COMMENT_URL` are present) posts a PR comment\n\n### Environment variables used by the script\n- `STACK_NAME` (required) — Stack name to describe.\n- `CHANGE_SET_NAME` (default: same as `STACK_NAME`).\n- `AWS_REGION` — Region for CloudFormation API calls. The workflow sets this via the credentials action.\n- `GITHUB_TOKEN` (optional) — If set with `GITHUB_COMMENT_URL`, posts a PR comment.\n- `GITHUB_COMMENT_URL` (optional) — PR comments URL.\n- `GITHUB_STEP_SUMMARY` (optional) — When present, appends the HTML to the step summary file.\n- `IGNORE_LOGICAL_IDS` (optional) — Comma‑separated logical IDs to ignore (default includes `CDKMetadata`).\n- `IGNORE_RESOURCE_TYPES` (optional) — Comma‑separated resource types to ignore (e.g., `AWS::CDK::Metadata`).\n\n## Usage: CdkDiffIamTemplate\n\nAdd `CdkDiffIamTemplate` to your Projen project to emit an example IAM template you can deploy in your account:\n\n```ts\nimport { awscdk } from 'projen';\nimport { CdkDiffIamTemplate } from '@jjrawlins/cdk-diff-pr-github-action';\n\nconst project = new awscdk.AwsCdkConstructLibrary({\n // ...\n});\n\nnew CdkDiffIamTemplate({ project });\n\nproject.synth();\n```\n\nThis will write `cdk-diff-workflow-iam-template.yaml` at the project root. The template defines:\n- A parameter `GitHubOIDCRoleArn` — pass the ARN of your existing GitHub OIDC role that will assume the change set role.\n- An IAM role `CdkChangesetRole` with minimal permissions for:\n - CloudFormation Change Set operations\n - Access to common CDK bootstrap S3 buckets and SSM parameters\n - `iam:PassRole` to `cloudformation.amazonaws.com`\n- Outputs exporting the role name and ARN.\n\nYou can deploy the file via CloudFormation/StackSets and then use the created role ARN as the `cdkDiffRoleToAssumeArn` in your workflow configuration.\n\n## Testing\n\nThis repository includes Jest tests that snapshot the synthesized outputs from Projen and assert that:\n- Workflows are created per stack and contain all expected steps.\n- Only one script file is generated.\n- Per‑stack OIDC overrides are respected.\n- Helpful validation errors are thrown for missing OIDC settings.\n- The IAM template file contains the expected resources and outputs.\n\nRun tests with:\n\n```bash\nyarn test\n```\n\n## Notes\n- This package assumes your repository is configured with GitHub Actions and that you have a GitHub OIDC role configured in AWS.\n- The generated script uses the AWS SDK v3 for CloudFormation and posts comments using the GitHub REST API.\n"
3551
+ "markdown": "# cdk-diff-pr-github-action\n\nA small Projen-based helper library that wires GitHub workflows for:\n- Creating CloudFormation Change Sets for your CDK stacks on pull requests and commenting a formatted diff back on the PR.\n- Detecting CloudFormation drift on a schedule or manual trigger and producing a consolidated summary (optionally creating an issue).\n\nIt also provides ready‑to‑deploy IAM templates with the minimal permissions required for each workflow.\n\nThis package exposes four constructs:\n\n- `CdkDiffStackWorkflow` — Generates one GitHub Actions workflow per stack to create a change set and render the diff back to the PR and Step Summary.\n- `CdkDiffIamTemplate` — Emits a CloudFormation template file with minimal permissions for the Change Set workflow.\n- `CdkDriftDetectionWorkflow` — Generates a GitHub Actions workflow to detect CloudFormation drift per stack, upload machine‑readable results, and aggregate a summary.\n- `CdkDriftIamTemplate` — Emits a CloudFormation template file with minimal permissions for the Drift Detection workflow.\n\n## Quick start\n\n1) Add the constructs to your Projen project (in `.projenrc.ts`).\n2) Synthesize with `npx projen`.\n3) Commit the generated files.\n4) Open a pull request or run the drift detection workflow.\n\n## Usage: CdkDiffStackWorkflow\n\n`CdkDiffStackWorkflow` renders a workflow per stack named `diff-<StackName>.yml` under `.github/workflows/`. It also generates a helper script at `.github/workflows/scripts/describe-cfn-changeset.ts` that formats the change set output and takes care of posting the PR comment and Step Summary.\n\nExample `.projenrc.ts`:\n\n```ts\nimport { awscdk } from 'projen';\nimport { CdkDiffStackWorkflow } from '@jjrawlins/cdk-diff-pr-github-action';\n\nconst project = new awscdk.AwsCdkConstructLibrary({\n // ... your usual settings ...\n workflowName: 'my-lib',\n defaultReleaseBranch: 'main',\n cdkVersion: '2.85.0',\n github: true,\n});\n\nnew CdkDiffStackWorkflow({\n project,\n stacks: [\n {\n stackName: 'MyAppStack',\n changesetRoleToAssumeArn: 'arn:aws:iam::123456789012:role/cdk-diff-role',\n changesetRoleToAssumeRegion: 'us-east-1',\n // Optional per‑stack OIDC override (if not using the defaults below)\n // oidcRoleArn: 'arn:aws:iam::123456789012:role/github-oidc-role',\n // oidcRegion: 'us-east-1',\n },\n ],\n // Default OIDC role/region used by all stacks unless overridden per‑stack\n oidcRoleArn: 'arn:aws:iam::123456789012:role/github-oidc-role',\n oidcRegion: 'us-east-1',\n // Optional: Node version used in the workflow (default: '24.x')\n // nodeVersion: '24.x',\n // Optional: Yarn command to run CDK (default: 'cdk')\n // cdkYarnCommand: 'cdk',\n // Optional: Where to place the helper script (default: '.github/workflows/scripts/describe-cfn-changeset.ts')\n // scriptOutputPath: '.github/workflows/scripts/describe-cfn-changeset.ts',\n});\n\nproject.synth();\n```\n\n### CdkDiffStackWorkflow props\n- `project` (required) — Your Projen project instance.\n- `stacks` (required) — Array of stack entries.\n- `oidcRoleArn` (required unless provided per‑stack) — Default OIDC role ARN.\n- `oidcRegion` (required unless provided per‑stack) — Default OIDC region.\n- `nodeVersion` (optional, default `'24.x'`) — Node.js version for the workflow runner.\n- `cdkYarnCommand` (optional, default `'cdk'`) — Yarn script/command to invoke CDK.\n- `scriptOutputPath` (optional, default `'.github/workflows/scripts/describe-cfn-changeset.ts'`) — Where to write the helper script.\n\nIf neither top‑level OIDC defaults nor all per‑stack values are supplied, the construct throws a helpful error.\n\n### Stack item fields\n- `stackName` (required) — The CDK stack name to create the change set for.\n- `changesetRoleToAssumeArn` (required) — The ARN of the role used to create the change set (role chaining after OIDC).\n- `changesetRoleToAssumeRegion` (required) — The region for that role.\n- `oidcRoleArn` (optional) — Per‑stack override for the OIDC role.\n- `oidcRegion` (optional) — Per‑stack override for the OIDC region.\n\n### What gets generated\n- `.github/workflows/diff-<StackName>.yml` — One workflow per stack, triggered on PR open/sync/reopen.\n- `.github/workflows/scripts/describe-cfn-changeset.ts` — A helper script that:\n - Polls `DescribeChangeSet` until terminal\n - Filters out ignorable logical IDs or resource types using environment variables `IGNORE_LOGICAL_IDS` and `IGNORE_RESOURCE_TYPES`\n - Renders an HTML table with actions, logical IDs, types, replacements, and changed properties\n - Prints the HTML, appends to the GitHub Step Summary, and (if `GITHUB_TOKEN` and `GITHUB_COMMENT_URL` are present) posts a PR comment\n\n### Environment variables used by the change set script\n- `STACK_NAME` (required) — Stack name to describe.\n- `CHANGE_SET_NAME` (default: same as `STACK_NAME`).\n- `AWS_REGION` — Region for CloudFormation API calls. The workflow sets this via the credentials action(s).\n- `GITHUB_TOKEN` (optional) — If set with `GITHUB_COMMENT_URL`, posts a PR comment.\n- `GITHUB_COMMENT_URL` (optional) — PR comments URL.\n- `GITHUB_STEP_SUMMARY` (optional) — When present, appends the HTML to the step summary file.\n- `IGNORE_LOGICAL_IDS` (optional) — Comma‑separated logical IDs to ignore (default includes `CDKMetadata`).\n- `IGNORE_RESOURCE_TYPES` (optional) — Comma‑separated resource types to ignore (e.g., `AWS::CDK::Metadata`).\n\n## Usage: CdkDiffIamTemplate\n\nEmit an example IAM template you can deploy in your account for the Change Set workflow:\n\n```ts\nimport { awscdk } from 'projen';\nimport { CdkDiffIamTemplate } from '@jjrawlins/cdk-diff-pr-github-action';\n\nconst project = new awscdk.AwsCdkConstructLibrary({\n // ...\n});\n\nnew CdkDiffIamTemplate({\n project,\n roleName: 'cdk-diff-role',\n oidcRoleArn: 'arn:aws:iam::123456789012:role/github-oidc-role',\n oidcRegion: 'us-east-1',\n // Optional: custom output path (default: 'cdk-diff-workflow-iam-template.yaml')\n // outputPath: 'infra/cdk-diff-iam.yaml',\n});\n\nproject.synth();\n```\n\nThis writes `cdk-diff-workflow-iam-template.yaml` at the project root (or your chosen `outputPath`). The template defines:\n- Parameter `GitHubOIDCRoleArn` with a default from `oidcRoleArn` — the ARN of your existing GitHub OIDC role allowed to assume the change set role.\n- IAM role `CdkChangesetRole` with minimal permissions for:\n - CloudFormation Change Set operations\n - Access to common CDK bootstrap S3 buckets and SSM parameters\n - `iam:PassRole` to `cloudformation.amazonaws.com`\n- Outputs exporting the role name and ARN.\n\nA Projen task is also added:\n\n```bash\nnpx projen deploy-cdkdiff-iam-template -- --parameter-overrides GitHubOIDCRoleArn=... # plus any extra AWS CLI args\n```\n\nUse the created role ARN as `changesetRoleToAssumeArn` in `CdkDiffStackWorkflow`.\n\n---\n\n## Usage: CdkDriftDetectionWorkflow\n\n`CdkDriftDetectionWorkflow` creates a single workflow file (default `drift-detection.yml`) that can run on a schedule and via manual dispatch. It generates a helper script at `.github/workflows/scripts/detect-drift.ts` (by default) that uses AWS SDK v3 to run drift detection, write optional machine‑readable JSON, and print an HTML report for the Step Summary.\n\nExample `.projenrc.ts`:\n\n```ts\nimport { awscdk } from 'projen';\nimport { CdkDriftDetectionWorkflow } from '@jjrawlins/cdk-diff-pr-github-action';\n\nconst project = new awscdk.AwsCdkConstructLibrary({ github: true, /* ... */ });\n\nnew CdkDriftDetectionWorkflow({\n project,\n workflowName: 'Drift Detection', // optional; file name derived as 'drift-detection.yml'\n schedule: '0 1 * * *', // optional cron\n createIssues: true, // default true; create/update issue when drift detected on schedule\n oidcRoleArn: 'arn:aws:iam::123456789012:role/github-oidc-role',\n oidcRegion: 'us-east-1',\n // Optional: Node version (default '24.x')\n // nodeVersion: '24.x',\n // Optional: Where to place the helper script (default '.github/workflows/scripts/detect-drift.ts')\n // scriptOutputPath: '.github/workflows/scripts/detect-drift.ts',\n stacks: [\n {\n stackName: 'MyAppStack-Prod',\n driftDetectionRoleToAssumeArn: 'arn:aws:iam::123456789012:role/cdk-drift-role',\n driftDetectionRoleToAssumeRegion: 'us-east-1',\n // failOnDrift: true, // optional (default true)\n },\n ],\n});\n\nproject.synth();\n```\n\n### CdkDriftDetectionWorkflow props\n- `project` (required) — Your Projen project instance.\n- `stacks` (required) — Array of stacks to check.\n- `oidcRoleArn` (required) — Default OIDC role ARN used before chaining into per‑stack drift roles.\n- `oidcRegion` (required) — Default OIDC region.\n- `workflowName` (optional, default `'drift-detection'`) — Human‑friendly workflow name; the file name is derived in kebab‑case.\n- `schedule` (optional) — Cron expression for automatic runs.\n- `createIssues` (optional, default `true`) — When true, scheduled runs will create/update a GitHub issue if drift is detected.\n- `nodeVersion` (optional, default `'24.x'`) — Node.js version for the runner.\n- `scriptOutputPath` (optional, default `'.github/workflows/scripts/detect-drift.ts'`) — Where to write the helper script.\n\n### Per‑stack fields\n- `stackName` (required) — The full CloudFormation stack name.\n- `driftDetectionRoleToAssumeArn` (required) — Role to assume (after OIDC) for making drift API calls.\n- `driftDetectionRoleToAssumeRegion` (required) — Region for that role and API calls.\n- `failOnDrift` (optional, default `true`) — Intended to fail the detection step on drift. The provided script exits with non‑zero when drift is found; the job continues to allow artifact upload and issue creation.\n\n### What gets generated\n- `.github/workflows/<kebab(workflowName)>.yml` — A workflow with one job per stack plus a final summary job.\n- `.github/workflows/scripts/detect-drift.ts` — Helper script that:\n - Starts drift detection and polls until completion\n - Lists non‑`IN_SYNC` resources and builds an HTML report\n - Writes optional JSON to `DRIFT_DETECTION_OUTPUT` when set\n - Prints to stdout and appends to the GitHub Step Summary when available\n\n### Artifacts and summary\n- Each stack job uploads `drift-results-<stack>.json` (if produced).\n- A final `Drift Detection Summary` job downloads all artifacts and prints a consolidated summary.\n\n### Manual dispatch\n- The workflow exposes an input named `stack` with choices including each configured stack and an `all` option.\n- Choose a specific stack to run drift detection for that stack only, or select `all` (or leave the input empty) to run all stacks.\n\nNote: The default workflow does not post PR comments for drift. It can create/update an Issue on scheduled runs when `createIssues` is `true`.\n\n### Post-notification steps (e.g., Slack)\n\nYou can add your own GitHub Action steps to run after the drift detection step for each stack using `postGitHubSteps`.\nProvide your own Slack payload/markdown (this library no longer generates a payload step for you).\n\nOption A: slackapi/slack-github-action (Incoming Webhook, official syntax)\n\n```ts\nnew CdkDriftDetectionWorkflow({\n project,\n oidcRoleArn: 'arn:aws:iam::123456789012:role/github-oidc-role',\n oidcRegion: 'us-east-1',\n stacks: [/* ... */],\n postGitHubSteps: ({ stack }) => {\n // Build a descriptive name per stack\n const name = `Notify Slack (${stack} post-drift)`;\n const step = {\n name,\n uses: 'slackapi/slack-github-action@v2.1.1',\n // by default, post steps run only when drift is detected; you can override `if`\n if: \"always() && steps.drift.outcome == 'failure'\",\n // Use official inputs: webhook + webhook-type, and a YAML payload with blocks\n with: {\n webhook: '${{ secrets.CDK_NOTIFICATIONS_SLACK_WEBHOOK }}',\n 'webhook-type': 'incoming-webhook',\n payload: [\n 'text: \"** ${{ env.STACK_NAME }} ** has drifted!\"',\n 'blocks:',\n ' - type: \"section\"',\n ' text:',\n ' type: \"mrkdwn\"',\n ' text: \"*Stack:* ${{ env.STACK_NAME }} (region ${{ env.AWS_REGION }}) has drifted:exclamation:\"',\n ' - type: \"section\"',\n ' fields:',\n ' - type: \"mrkdwn\"',\n ' text: \"*Stack ARN*\\\\n${{ steps.drift.outputs.stack-arn }}\"',\n ' - type: \"mrkdwn\"',\n ' text: \"*Issue*\\\\n<${{ github.server_url }}/${{ github.repository }}/issues/${{ steps.issue.outputs.result }}|#${{ steps.issue.outputs.result }}>\"',\n ].join('\\n'),\n },\n };\n return [step];\n },\n});\n```\n\nNote: The Issue link requires `createIssues: true` (default) so that the `Create Issue on Drift` step runs before this Slack step and exposes `steps.issue.outputs.result`. This library orders the steps accordingly.\n\nDetails:\n- `postGitHubSteps` can be:\n - an array of step objects, or\n - a factory function `({ stack }) => step | step[]`.\n- Each step you provide is inserted after the results are uploaded.\n- Default condition: if you do not set `if` on your step, it will default to `always() && steps.drift.outcome == 'failure'`.\n- Available context/env you can use:\n - `${{ env.STACK_NAME }}`, `${{ env.DRIFT_DETECTION_OUTPUT }}`\n - `${{ steps.drift.outcome }}` — success/failure of the detect step\n - `${{ steps.drift.outputs.stack-arn }}` — Stack ARN resolved at runtime\n - `${{ steps.issue.outputs.result }}` — Issue number if the workflow created/found one (empty when not applicable)\n```\n\n## Usage: CdkDriftIamTemplate\n\nEmit an example IAM template you can deploy in your account for the Drift Detection workflow:\n\n```ts\nimport { awscdk } from 'projen';\nimport { CdkDriftIamTemplate } from '@jjrawlins/cdk-diff-pr-github-action';\n\nconst project = new awscdk.AwsCdkConstructLibrary({\n // ...\n});\n\nnew CdkDriftIamTemplate({\n project,\n roleName: 'cdk-drift-role',\n oidcRoleArn: 'arn:aws:iam::123456789012:role/github-oidc-role',\n oidcRegion: 'us-east-1',\n // Optional: custom output path (default: 'cdk-drift-workflow-iam-template.yaml')\n // outputPath: 'infra/cdk-drift-iam.yaml',\n});\n\nproject.synth();\n```\n\nThis writes `cdk-drift-workflow-iam-template.yaml` at the project root (or your chosen `outputPath`). The template defines:\n- Parameter `GitHubOIDCRoleArn` with a default from `oidcRoleArn` — the ARN of your existing GitHub OIDC role allowed to assume this drift role.\n- IAM role `CdkDriftRole` with minimal permissions for CloudFormation drift detection operations.\n- Outputs exporting the role name and ARN.\n\nA Projen task is also added:\n\n```bash\nnpx projen deploy-cdkdrift-iam-template -- --parameter-overrides GitHubOIDCRoleArn=... # plus any extra AWS CLI args\n```\n\n## Testing\n\nThis repository includes Jest tests that snapshot the synthesized outputs from Projen and assert that:\n- Diff workflows are created per stack and contain all expected steps.\n- Drift detection workflow produces one job per stack and a summary job.\n- Only one helper script file is generated per workflow type.\n- Per‑stack OIDC overrides (where supported) are respected.\n- Helpful validation errors are thrown for missing OIDC settings.\n- The IAM template files contain the expected resources and outputs.\n\nRun tests with:\n\n```bash\nyarn test\n```\n\n## Notes\n- This package assumes your repository is configured with GitHub Actions and that you have a GitHub OIDC role configured in AWS.\n- The generated scripts use the AWS SDK v3 for CloudFormation and, where applicable, the GitHub REST API.\n"
3552
3552
  },
3553
3553
  "repository": {
3554
3554
  "type": "git",
@@ -3564,16 +3564,16 @@
3564
3564
  "@jjrawlins/cdk-diff-pr-github-action.CdkDiffIamTemplate": {
3565
3565
  "assembly": "@jjrawlins/cdk-diff-pr-github-action",
3566
3566
  "docs": {
3567
- "stability": "stable"
3567
+ "stability": "experimental"
3568
3568
  },
3569
3569
  "fqn": "@jjrawlins/cdk-diff-pr-github-action.CdkDiffIamTemplate",
3570
3570
  "initializer": {
3571
3571
  "docs": {
3572
- "stability": "stable"
3572
+ "stability": "experimental"
3573
3573
  },
3574
3574
  "locationInModule": {
3575
3575
  "filename": "src/CdkDiffIamTemplate.ts",
3576
- "line": 10
3576
+ "line": 12
3577
3577
  },
3578
3578
  "parameters": [
3579
3579
  {
@@ -3587,7 +3587,7 @@
3587
3587
  "kind": "class",
3588
3588
  "locationInModule": {
3589
3589
  "filename": "src/CdkDiffIamTemplate.ts",
3590
- "line": 9
3590
+ "line": 11
3591
3591
  },
3592
3592
  "name": "CdkDiffIamTemplate",
3593
3593
  "symbolId": "src/CdkDiffIamTemplate:CdkDiffIamTemplate"
@@ -3596,7 +3596,7 @@
3596
3596
  "assembly": "@jjrawlins/cdk-diff-pr-github-action",
3597
3597
  "datatype": true,
3598
3598
  "docs": {
3599
- "stability": "stable"
3599
+ "stability": "experimental"
3600
3600
  },
3601
3601
  "fqn": "@jjrawlins/cdk-diff-pr-github-action.CdkDiffIamTemplateProps",
3602
3602
  "kind": "interface",
@@ -3609,7 +3609,37 @@
3609
3609
  {
3610
3610
  "abstract": true,
3611
3611
  "docs": {
3612
- "stability": "stable"
3612
+ "stability": "experimental"
3613
+ },
3614
+ "immutable": true,
3615
+ "locationInModule": {
3616
+ "filename": "src/CdkDiffIamTemplate.ts",
3617
+ "line": 8
3618
+ },
3619
+ "name": "oidcRegion",
3620
+ "type": {
3621
+ "primitive": "string"
3622
+ }
3623
+ },
3624
+ {
3625
+ "abstract": true,
3626
+ "docs": {
3627
+ "stability": "experimental"
3628
+ },
3629
+ "immutable": true,
3630
+ "locationInModule": {
3631
+ "filename": "src/CdkDiffIamTemplate.ts",
3632
+ "line": 7
3633
+ },
3634
+ "name": "oidcRoleArn",
3635
+ "type": {
3636
+ "primitive": "string"
3637
+ }
3638
+ },
3639
+ {
3640
+ "abstract": true,
3641
+ "docs": {
3642
+ "stability": "experimental"
3613
3643
  },
3614
3644
  "immutable": true,
3615
3645
  "locationInModule": {
@@ -3624,15 +3654,14 @@
3624
3654
  {
3625
3655
  "abstract": true,
3626
3656
  "docs": {
3627
- "stability": "stable"
3657
+ "stability": "experimental"
3628
3658
  },
3629
3659
  "immutable": true,
3630
3660
  "locationInModule": {
3631
3661
  "filename": "src/CdkDiffIamTemplate.ts",
3632
3662
  "line": 5
3633
3663
  },
3634
- "name": "outputPath",
3635
- "optional": true,
3664
+ "name": "roleName",
3636
3665
  "type": {
3637
3666
  "primitive": "string"
3638
3667
  }
@@ -3640,14 +3669,14 @@
3640
3669
  {
3641
3670
  "abstract": true,
3642
3671
  "docs": {
3643
- "stability": "stable"
3672
+ "stability": "experimental"
3644
3673
  },
3645
3674
  "immutable": true,
3646
3675
  "locationInModule": {
3647
3676
  "filename": "src/CdkDiffIamTemplate.ts",
3648
3677
  "line": 6
3649
3678
  },
3650
- "name": "stackName",
3679
+ "name": "outputPath",
3651
3680
  "optional": true,
3652
3681
  "type": {
3653
3682
  "primitive": "string"
@@ -3660,7 +3689,7 @@
3660
3689
  "assembly": "@jjrawlins/cdk-diff-pr-github-action",
3661
3690
  "datatype": true,
3662
3691
  "docs": {
3663
- "stability": "stable"
3692
+ "stability": "experimental"
3664
3693
  },
3665
3694
  "fqn": "@jjrawlins/cdk-diff-pr-github-action.CdkDiffStack",
3666
3695
  "kind": "interface",
@@ -3673,14 +3702,14 @@
3673
3702
  {
3674
3703
  "abstract": true,
3675
3704
  "docs": {
3676
- "stability": "stable"
3705
+ "stability": "experimental"
3677
3706
  },
3678
3707
  "immutable": true,
3679
3708
  "locationInModule": {
3680
3709
  "filename": "src/CdkDiffStackWorkflow.ts",
3681
3710
  "line": 11
3682
3711
  },
3683
- "name": "cdkDiffRoleToAssumeArn",
3712
+ "name": "changesetRoleToAssumeArn",
3684
3713
  "type": {
3685
3714
  "primitive": "string"
3686
3715
  }
@@ -3688,14 +3717,14 @@
3688
3717
  {
3689
3718
  "abstract": true,
3690
3719
  "docs": {
3691
- "stability": "stable"
3720
+ "stability": "experimental"
3692
3721
  },
3693
3722
  "immutable": true,
3694
3723
  "locationInModule": {
3695
3724
  "filename": "src/CdkDiffStackWorkflow.ts",
3696
3725
  "line": 12
3697
3726
  },
3698
- "name": "cdkDiffRoleToAssumeRegion",
3727
+ "name": "changesetRoleToAssumeRegion",
3699
3728
  "type": {
3700
3729
  "primitive": "string"
3701
3730
  }
@@ -3703,7 +3732,7 @@
3703
3732
  {
3704
3733
  "abstract": true,
3705
3734
  "docs": {
3706
- "stability": "stable"
3735
+ "stability": "experimental"
3707
3736
  },
3708
3737
  "immutable": true,
3709
3738
  "locationInModule": {
@@ -3718,7 +3747,7 @@
3718
3747
  {
3719
3748
  "abstract": true,
3720
3749
  "docs": {
3721
- "stability": "stable"
3750
+ "stability": "experimental"
3722
3751
  },
3723
3752
  "immutable": true,
3724
3753
  "locationInModule": {
@@ -3734,7 +3763,7 @@
3734
3763
  {
3735
3764
  "abstract": true,
3736
3765
  "docs": {
3737
- "stability": "stable"
3766
+ "stability": "experimental"
3738
3767
  },
3739
3768
  "immutable": true,
3740
3769
  "locationInModule": {
@@ -3753,12 +3782,12 @@
3753
3782
  "@jjrawlins/cdk-diff-pr-github-action.CdkDiffStackWorkflow": {
3754
3783
  "assembly": "@jjrawlins/cdk-diff-pr-github-action",
3755
3784
  "docs": {
3756
- "stability": "stable"
3785
+ "stability": "experimental"
3757
3786
  },
3758
3787
  "fqn": "@jjrawlins/cdk-diff-pr-github-action.CdkDiffStackWorkflow",
3759
3788
  "initializer": {
3760
3789
  "docs": {
3761
- "stability": "stable"
3790
+ "stability": "experimental"
3762
3791
  },
3763
3792
  "locationInModule": {
3764
3793
  "filename": "src/CdkDiffStackWorkflow.ts",
@@ -3785,7 +3814,7 @@
3785
3814
  "assembly": "@jjrawlins/cdk-diff-pr-github-action",
3786
3815
  "datatype": true,
3787
3816
  "docs": {
3788
- "stability": "stable"
3817
+ "stability": "experimental"
3789
3818
  },
3790
3819
  "fqn": "@jjrawlins/cdk-diff-pr-github-action.CdkDiffStackWorkflowProps",
3791
3820
  "kind": "interface",
@@ -3798,7 +3827,7 @@
3798
3827
  {
3799
3828
  "abstract": true,
3800
3829
  "docs": {
3801
- "stability": "stable"
3830
+ "stability": "experimental"
3802
3831
  },
3803
3832
  "immutable": true,
3804
3833
  "locationInModule": {
@@ -3813,7 +3842,7 @@
3813
3842
  {
3814
3843
  "abstract": true,
3815
3844
  "docs": {
3816
- "stability": "stable"
3845
+ "stability": "experimental"
3817
3846
  },
3818
3847
  "immutable": true,
3819
3848
  "locationInModule": {
@@ -3828,7 +3857,7 @@
3828
3857
  {
3829
3858
  "abstract": true,
3830
3859
  "docs": {
3831
- "stability": "stable"
3860
+ "stability": "experimental"
3832
3861
  },
3833
3862
  "immutable": true,
3834
3863
  "locationInModule": {
@@ -3843,7 +3872,7 @@
3843
3872
  {
3844
3873
  "abstract": true,
3845
3874
  "docs": {
3846
- "stability": "stable"
3875
+ "stability": "experimental"
3847
3876
  },
3848
3877
  "immutable": true,
3849
3878
  "locationInModule": {
@@ -3863,7 +3892,7 @@
3863
3892
  {
3864
3893
  "abstract": true,
3865
3894
  "docs": {
3866
- "stability": "stable"
3895
+ "stability": "experimental"
3867
3896
  },
3868
3897
  "immutable": true,
3869
3898
  "locationInModule": {
@@ -3879,7 +3908,7 @@
3879
3908
  {
3880
3909
  "abstract": true,
3881
3910
  "docs": {
3882
- "stability": "stable"
3911
+ "stability": "experimental"
3883
3912
  },
3884
3913
  "immutable": true,
3885
3914
  "locationInModule": {
@@ -3895,7 +3924,7 @@
3895
3924
  {
3896
3925
  "abstract": true,
3897
3926
  "docs": {
3898
- "stability": "stable"
3927
+ "stability": "experimental"
3899
3928
  },
3900
3929
  "immutable": true,
3901
3930
  "locationInModule": {
@@ -3910,8 +3939,421 @@
3910
3939
  }
3911
3940
  ],
3912
3941
  "symbolId": "src/CdkDiffStackWorkflow:CdkDiffStackWorkflowProps"
3942
+ },
3943
+ "@jjrawlins/cdk-diff-pr-github-action.CdkDriftDetectionWorkflow": {
3944
+ "assembly": "@jjrawlins/cdk-diff-pr-github-action",
3945
+ "docs": {
3946
+ "stability": "experimental"
3947
+ },
3948
+ "fqn": "@jjrawlins/cdk-diff-pr-github-action.CdkDriftDetectionWorkflow",
3949
+ "initializer": {
3950
+ "docs": {
3951
+ "stability": "experimental"
3952
+ },
3953
+ "locationInModule": {
3954
+ "filename": "src/CdkDriftDetectionWorkflow.ts",
3955
+ "line": 61
3956
+ },
3957
+ "parameters": [
3958
+ {
3959
+ "name": "props",
3960
+ "type": {
3961
+ "fqn": "@jjrawlins/cdk-diff-pr-github-action.CdkDriftDetectionWorkflowProps"
3962
+ }
3963
+ }
3964
+ ]
3965
+ },
3966
+ "kind": "class",
3967
+ "locationInModule": {
3968
+ "filename": "src/CdkDriftDetectionWorkflow.ts",
3969
+ "line": 58
3970
+ },
3971
+ "name": "CdkDriftDetectionWorkflow",
3972
+ "symbolId": "src/CdkDriftDetectionWorkflow:CdkDriftDetectionWorkflow"
3973
+ },
3974
+ "@jjrawlins/cdk-diff-pr-github-action.CdkDriftDetectionWorkflowProps": {
3975
+ "assembly": "@jjrawlins/cdk-diff-pr-github-action",
3976
+ "datatype": true,
3977
+ "docs": {
3978
+ "stability": "experimental"
3979
+ },
3980
+ "fqn": "@jjrawlins/cdk-diff-pr-github-action.CdkDriftDetectionWorkflowProps",
3981
+ "kind": "interface",
3982
+ "locationInModule": {
3983
+ "filename": "src/CdkDriftDetectionWorkflow.ts",
3984
+ "line": 19
3985
+ },
3986
+ "name": "CdkDriftDetectionWorkflowProps",
3987
+ "properties": [
3988
+ {
3989
+ "abstract": true,
3990
+ "docs": {
3991
+ "stability": "experimental"
3992
+ },
3993
+ "immutable": true,
3994
+ "locationInModule": {
3995
+ "filename": "src/CdkDriftDetectionWorkflow.ts",
3996
+ "line": 26
3997
+ },
3998
+ "name": "oidcRegion",
3999
+ "type": {
4000
+ "primitive": "string"
4001
+ }
4002
+ },
4003
+ {
4004
+ "abstract": true,
4005
+ "docs": {
4006
+ "stability": "experimental"
4007
+ },
4008
+ "immutable": true,
4009
+ "locationInModule": {
4010
+ "filename": "src/CdkDriftDetectionWorkflow.ts",
4011
+ "line": 25
4012
+ },
4013
+ "name": "oidcRoleArn",
4014
+ "type": {
4015
+ "primitive": "string"
4016
+ }
4017
+ },
4018
+ {
4019
+ "abstract": true,
4020
+ "docs": {
4021
+ "stability": "experimental"
4022
+ },
4023
+ "immutable": true,
4024
+ "locationInModule": {
4025
+ "filename": "src/CdkDriftDetectionWorkflow.ts",
4026
+ "line": 21
4027
+ },
4028
+ "name": "project",
4029
+ "type": {
4030
+ "primitive": "any"
4031
+ }
4032
+ },
4033
+ {
4034
+ "abstract": true,
4035
+ "docs": {
4036
+ "stability": "experimental"
4037
+ },
4038
+ "immutable": true,
4039
+ "locationInModule": {
4040
+ "filename": "src/CdkDriftDetectionWorkflow.ts",
4041
+ "line": 27
4042
+ },
4043
+ "name": "stacks",
4044
+ "type": {
4045
+ "collection": {
4046
+ "elementtype": {
4047
+ "fqn": "@jjrawlins/cdk-diff-pr-github-action.Stack"
4048
+ },
4049
+ "kind": "array"
4050
+ }
4051
+ }
4052
+ },
4053
+ {
4054
+ "abstract": true,
4055
+ "docs": {
4056
+ "stability": "experimental"
4057
+ },
4058
+ "immutable": true,
4059
+ "locationInModule": {
4060
+ "filename": "src/CdkDriftDetectionWorkflow.ts",
4061
+ "line": 24
4062
+ },
4063
+ "name": "createIssues",
4064
+ "optional": true,
4065
+ "type": {
4066
+ "primitive": "boolean"
4067
+ }
4068
+ },
4069
+ {
4070
+ "abstract": true,
4071
+ "docs": {
4072
+ "stability": "experimental"
4073
+ },
4074
+ "immutable": true,
4075
+ "locationInModule": {
4076
+ "filename": "src/CdkDriftDetectionWorkflow.ts",
4077
+ "line": 28
4078
+ },
4079
+ "name": "nodeVersion",
4080
+ "optional": true,
4081
+ "type": {
4082
+ "primitive": "string"
4083
+ }
4084
+ },
4085
+ {
4086
+ "abstract": true,
4087
+ "docs": {
4088
+ "remarks": "These steps run after results are uploaded for each stack. You can include\nany notifications you like (e.g., Slack). Provide explicit inputs (e.g., payload/markdown)\ndirectly in your step without relying on a pre-generated payload.",
4089
+ "stability": "experimental",
4090
+ "summary": "Optional additional GitHub Action steps to run after drift detection for each stack."
4091
+ },
4092
+ "immutable": true,
4093
+ "locationInModule": {
4094
+ "filename": "src/CdkDriftDetectionWorkflow.ts",
4095
+ "line": 43
4096
+ },
4097
+ "name": "postGitHubSteps",
4098
+ "optional": true,
4099
+ "type": {
4100
+ "primitive": "any"
4101
+ }
4102
+ },
4103
+ {
4104
+ "abstract": true,
4105
+ "docs": {
4106
+ "stability": "experimental"
4107
+ },
4108
+ "immutable": true,
4109
+ "locationInModule": {
4110
+ "filename": "src/CdkDriftDetectionWorkflow.ts",
4111
+ "line": 23
4112
+ },
4113
+ "name": "schedule",
4114
+ "optional": true,
4115
+ "type": {
4116
+ "primitive": "string"
4117
+ }
4118
+ },
4119
+ {
4120
+ "abstract": true,
4121
+ "docs": {
4122
+ "stability": "experimental"
4123
+ },
4124
+ "immutable": true,
4125
+ "locationInModule": {
4126
+ "filename": "src/CdkDriftDetectionWorkflow.ts",
4127
+ "line": 20
4128
+ },
4129
+ "name": "scriptOutputPath",
4130
+ "optional": true,
4131
+ "type": {
4132
+ "primitive": "string"
4133
+ }
4134
+ },
4135
+ {
4136
+ "abstract": true,
4137
+ "docs": {
4138
+ "stability": "experimental"
4139
+ },
4140
+ "immutable": true,
4141
+ "locationInModule": {
4142
+ "filename": "src/CdkDriftDetectionWorkflow.ts",
4143
+ "line": 22
4144
+ },
4145
+ "name": "workflowName",
4146
+ "optional": true,
4147
+ "type": {
4148
+ "primitive": "string"
4149
+ }
4150
+ }
4151
+ ],
4152
+ "symbolId": "src/CdkDriftDetectionWorkflow:CdkDriftDetectionWorkflowProps"
4153
+ },
4154
+ "@jjrawlins/cdk-diff-pr-github-action.CdkDriftIamTemplate": {
4155
+ "assembly": "@jjrawlins/cdk-diff-pr-github-action",
4156
+ "docs": {
4157
+ "stability": "experimental"
4158
+ },
4159
+ "fqn": "@jjrawlins/cdk-diff-pr-github-action.CdkDriftIamTemplate",
4160
+ "initializer": {
4161
+ "docs": {
4162
+ "stability": "experimental"
4163
+ },
4164
+ "locationInModule": {
4165
+ "filename": "src/CdkDriftIamTemplate.ts",
4166
+ "line": 12
4167
+ },
4168
+ "parameters": [
4169
+ {
4170
+ "name": "props",
4171
+ "type": {
4172
+ "fqn": "@jjrawlins/cdk-diff-pr-github-action.CdkDriftIamTemplateProps"
4173
+ }
4174
+ }
4175
+ ]
4176
+ },
4177
+ "kind": "class",
4178
+ "locationInModule": {
4179
+ "filename": "src/CdkDriftIamTemplate.ts",
4180
+ "line": 11
4181
+ },
4182
+ "name": "CdkDriftIamTemplate",
4183
+ "symbolId": "src/CdkDriftIamTemplate:CdkDriftIamTemplate"
4184
+ },
4185
+ "@jjrawlins/cdk-diff-pr-github-action.CdkDriftIamTemplateProps": {
4186
+ "assembly": "@jjrawlins/cdk-diff-pr-github-action",
4187
+ "datatype": true,
4188
+ "docs": {
4189
+ "stability": "experimental"
4190
+ },
4191
+ "fqn": "@jjrawlins/cdk-diff-pr-github-action.CdkDriftIamTemplateProps",
4192
+ "kind": "interface",
4193
+ "locationInModule": {
4194
+ "filename": "src/CdkDriftIamTemplate.ts",
4195
+ "line": 3
4196
+ },
4197
+ "name": "CdkDriftIamTemplateProps",
4198
+ "properties": [
4199
+ {
4200
+ "abstract": true,
4201
+ "docs": {
4202
+ "stability": "experimental"
4203
+ },
4204
+ "immutable": true,
4205
+ "locationInModule": {
4206
+ "filename": "src/CdkDriftIamTemplate.ts",
4207
+ "line": 8
4208
+ },
4209
+ "name": "oidcRegion",
4210
+ "type": {
4211
+ "primitive": "string"
4212
+ }
4213
+ },
4214
+ {
4215
+ "abstract": true,
4216
+ "docs": {
4217
+ "stability": "experimental"
4218
+ },
4219
+ "immutable": true,
4220
+ "locationInModule": {
4221
+ "filename": "src/CdkDriftIamTemplate.ts",
4222
+ "line": 7
4223
+ },
4224
+ "name": "oidcRoleArn",
4225
+ "type": {
4226
+ "primitive": "string"
4227
+ }
4228
+ },
4229
+ {
4230
+ "abstract": true,
4231
+ "docs": {
4232
+ "stability": "experimental"
4233
+ },
4234
+ "immutable": true,
4235
+ "locationInModule": {
4236
+ "filename": "src/CdkDriftIamTemplate.ts",
4237
+ "line": 4
4238
+ },
4239
+ "name": "project",
4240
+ "type": {
4241
+ "primitive": "any"
4242
+ }
4243
+ },
4244
+ {
4245
+ "abstract": true,
4246
+ "docs": {
4247
+ "stability": "experimental"
4248
+ },
4249
+ "immutable": true,
4250
+ "locationInModule": {
4251
+ "filename": "src/CdkDriftIamTemplate.ts",
4252
+ "line": 5
4253
+ },
4254
+ "name": "roleName",
4255
+ "type": {
4256
+ "primitive": "string"
4257
+ }
4258
+ },
4259
+ {
4260
+ "abstract": true,
4261
+ "docs": {
4262
+ "stability": "experimental"
4263
+ },
4264
+ "immutable": true,
4265
+ "locationInModule": {
4266
+ "filename": "src/CdkDriftIamTemplate.ts",
4267
+ "line": 6
4268
+ },
4269
+ "name": "outputPath",
4270
+ "optional": true,
4271
+ "type": {
4272
+ "primitive": "string"
4273
+ }
4274
+ }
4275
+ ],
4276
+ "symbolId": "src/CdkDriftIamTemplate:CdkDriftIamTemplateProps"
4277
+ },
4278
+ "@jjrawlins/cdk-diff-pr-github-action.Stack": {
4279
+ "assembly": "@jjrawlins/cdk-diff-pr-github-action",
4280
+ "datatype": true,
4281
+ "docs": {
4282
+ "stability": "experimental"
4283
+ },
4284
+ "fqn": "@jjrawlins/cdk-diff-pr-github-action.Stack",
4285
+ "kind": "interface",
4286
+ "locationInModule": {
4287
+ "filename": "src/CdkDriftDetectionWorkflow.ts",
4288
+ "line": 12
4289
+ },
4290
+ "name": "Stack",
4291
+ "properties": [
4292
+ {
4293
+ "abstract": true,
4294
+ "docs": {
4295
+ "stability": "experimental"
4296
+ },
4297
+ "immutable": true,
4298
+ "locationInModule": {
4299
+ "filename": "src/CdkDriftDetectionWorkflow.ts",
4300
+ "line": 15
4301
+ },
4302
+ "name": "driftDetectionRoleToAssumeArn",
4303
+ "type": {
4304
+ "primitive": "string"
4305
+ }
4306
+ },
4307
+ {
4308
+ "abstract": true,
4309
+ "docs": {
4310
+ "stability": "experimental"
4311
+ },
4312
+ "immutable": true,
4313
+ "locationInModule": {
4314
+ "filename": "src/CdkDriftDetectionWorkflow.ts",
4315
+ "line": 14
4316
+ },
4317
+ "name": "driftDetectionRoleToAssumeRegion",
4318
+ "type": {
4319
+ "primitive": "string"
4320
+ }
4321
+ },
4322
+ {
4323
+ "abstract": true,
4324
+ "docs": {
4325
+ "stability": "experimental"
4326
+ },
4327
+ "immutable": true,
4328
+ "locationInModule": {
4329
+ "filename": "src/CdkDriftDetectionWorkflow.ts",
4330
+ "line": 13
4331
+ },
4332
+ "name": "stackName",
4333
+ "type": {
4334
+ "primitive": "string"
4335
+ }
4336
+ },
4337
+ {
4338
+ "abstract": true,
4339
+ "docs": {
4340
+ "stability": "experimental"
4341
+ },
4342
+ "immutable": true,
4343
+ "locationInModule": {
4344
+ "filename": "src/CdkDriftDetectionWorkflow.ts",
4345
+ "line": 16
4346
+ },
4347
+ "name": "failOnDrift",
4348
+ "optional": true,
4349
+ "type": {
4350
+ "primitive": "boolean"
4351
+ }
4352
+ }
4353
+ ],
4354
+ "symbolId": "src/CdkDriftDetectionWorkflow:Stack"
3913
4355
  }
3914
4356
  },
3915
- "version": "0.0.0",
3916
- "fingerprint": "tHH4O3w5aknRRboRsohbwELbBny5Nck+ehKsoWl+2Rw="
4357
+ "version": "0.0.1",
4358
+ "fingerprint": "62FlJyv5w3wGfslAmiFuV2BoO5X85O4YBegVN0J0GD0="
3917
4359
  }