projen-pipelines 0.2.15 → 0.3.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.
- package/.jsii +375 -82
- package/API.md +238 -0
- package/README.md +67 -0
- package/lib/assign-approver/base.js +1 -1
- package/lib/assign-approver/github.js +3 -3
- package/lib/awscdk/base.d.ts +7 -0
- package/lib/awscdk/base.js +8 -2
- package/lib/awscdk/bash.js +1 -1
- package/lib/awscdk/github.js +13 -9
- package/lib/awscdk/gitlab.js +1 -1
- package/lib/drift/base.d.ts +4 -0
- package/lib/drift/base.js +2 -2
- package/lib/drift/bash.js +1 -1
- package/lib/drift/github.js +6 -6
- package/lib/drift/gitlab.js +1 -1
- package/lib/drift/step.js +3 -2
- package/lib/steps/amplify-deploy.step.d.ts +40 -0
- package/lib/steps/amplify-deploy.step.js +148 -0
- package/lib/steps/artifact-steps.js +5 -5
- package/lib/steps/aws-assume-role.step.d.ts +4 -0
- package/lib/steps/aws-assume-role.step.js +37 -13
- package/lib/steps/index.d.ts +1 -0
- package/lib/steps/index.js +2 -1
- package/lib/steps/registries.js +3 -3
- package/lib/steps/step.js +4 -4
- package/lib/versioning/computation.js +3 -3
- package/lib/versioning/config.js +2 -2
- package/lib/versioning/outputs.js +5 -5
- package/lib/versioning/setup.js +1 -1
- package/lib/versioning/strategy.js +1 -1
- package/lib/versioning/version-info.js +2 -2
- package/llm.md +69 -0
- package/package.json +3 -3
package/API.md
CHANGED
|
@@ -2116,6 +2116,103 @@ public readonly schedule: string;
|
|
|
2116
2116
|
|
|
2117
2117
|
## Structs <a name="Structs" id="Structs"></a>
|
|
2118
2118
|
|
|
2119
|
+
### AmplifyDeployStepConfig <a name="AmplifyDeployStepConfig" id="projen-pipelines.AmplifyDeployStepConfig"></a>
|
|
2120
|
+
|
|
2121
|
+
Configuration for an AWS Amplify deployment step.
|
|
2122
|
+
|
|
2123
|
+
#### Initializer <a name="Initializer" id="projen-pipelines.AmplifyDeployStepConfig.Initializer"></a>
|
|
2124
|
+
|
|
2125
|
+
```typescript
|
|
2126
|
+
import { AmplifyDeployStepConfig } from 'projen-pipelines'
|
|
2127
|
+
|
|
2128
|
+
const amplifyDeployStepConfig: AmplifyDeployStepConfig = { ... }
|
|
2129
|
+
```
|
|
2130
|
+
|
|
2131
|
+
#### Properties <a name="Properties" id="Properties"></a>
|
|
2132
|
+
|
|
2133
|
+
| **Name** | **Type** | **Description** |
|
|
2134
|
+
| --- | --- | --- |
|
|
2135
|
+
| <code><a href="#projen-pipelines.AmplifyDeployStepConfig.property.artifactFile">artifactFile</a></code> | <code>string</code> | The artifact file to deploy (zip file containing the build). |
|
|
2136
|
+
| <code><a href="#projen-pipelines.AmplifyDeployStepConfig.property.appId">appId</a></code> | <code>string</code> | The Amplify app ID (static value). |
|
|
2137
|
+
| <code><a href="#projen-pipelines.AmplifyDeployStepConfig.property.appIdCommand">appIdCommand</a></code> | <code>string</code> | Command to retrieve the Amplify app ID dynamically. |
|
|
2138
|
+
| <code><a href="#projen-pipelines.AmplifyDeployStepConfig.property.branchName">branchName</a></code> | <code>string</code> | The branch name to deploy to (defaults to 'main'). |
|
|
2139
|
+
| <code><a href="#projen-pipelines.AmplifyDeployStepConfig.property.environment">environment</a></code> | <code>string</code> | Environment name. |
|
|
2140
|
+
| <code><a href="#projen-pipelines.AmplifyDeployStepConfig.property.region">region</a></code> | <code>string</code> | The AWS region (defaults to 'eu-central-1'). |
|
|
2141
|
+
|
|
2142
|
+
---
|
|
2143
|
+
|
|
2144
|
+
##### `artifactFile`<sup>Required</sup> <a name="artifactFile" id="projen-pipelines.AmplifyDeployStepConfig.property.artifactFile"></a>
|
|
2145
|
+
|
|
2146
|
+
```typescript
|
|
2147
|
+
public readonly artifactFile: string;
|
|
2148
|
+
```
|
|
2149
|
+
|
|
2150
|
+
- *Type:* string
|
|
2151
|
+
|
|
2152
|
+
The artifact file to deploy (zip file containing the build).
|
|
2153
|
+
|
|
2154
|
+
---
|
|
2155
|
+
|
|
2156
|
+
##### `appId`<sup>Optional</sup> <a name="appId" id="projen-pipelines.AmplifyDeployStepConfig.property.appId"></a>
|
|
2157
|
+
|
|
2158
|
+
```typescript
|
|
2159
|
+
public readonly appId: string;
|
|
2160
|
+
```
|
|
2161
|
+
|
|
2162
|
+
- *Type:* string
|
|
2163
|
+
|
|
2164
|
+
The Amplify app ID (static value).
|
|
2165
|
+
|
|
2166
|
+
---
|
|
2167
|
+
|
|
2168
|
+
##### `appIdCommand`<sup>Optional</sup> <a name="appIdCommand" id="projen-pipelines.AmplifyDeployStepConfig.property.appIdCommand"></a>
|
|
2169
|
+
|
|
2170
|
+
```typescript
|
|
2171
|
+
public readonly appIdCommand: string;
|
|
2172
|
+
```
|
|
2173
|
+
|
|
2174
|
+
- *Type:* string
|
|
2175
|
+
|
|
2176
|
+
Command to retrieve the Amplify app ID dynamically.
|
|
2177
|
+
|
|
2178
|
+
---
|
|
2179
|
+
|
|
2180
|
+
##### `branchName`<sup>Optional</sup> <a name="branchName" id="projen-pipelines.AmplifyDeployStepConfig.property.branchName"></a>
|
|
2181
|
+
|
|
2182
|
+
```typescript
|
|
2183
|
+
public readonly branchName: string;
|
|
2184
|
+
```
|
|
2185
|
+
|
|
2186
|
+
- *Type:* string
|
|
2187
|
+
|
|
2188
|
+
The branch name to deploy to (defaults to 'main').
|
|
2189
|
+
|
|
2190
|
+
---
|
|
2191
|
+
|
|
2192
|
+
##### `environment`<sup>Optional</sup> <a name="environment" id="projen-pipelines.AmplifyDeployStepConfig.property.environment"></a>
|
|
2193
|
+
|
|
2194
|
+
```typescript
|
|
2195
|
+
public readonly environment: string;
|
|
2196
|
+
```
|
|
2197
|
+
|
|
2198
|
+
- *Type:* string
|
|
2199
|
+
|
|
2200
|
+
Environment name.
|
|
2201
|
+
|
|
2202
|
+
---
|
|
2203
|
+
|
|
2204
|
+
##### `region`<sup>Optional</sup> <a name="region" id="projen-pipelines.AmplifyDeployStepConfig.property.region"></a>
|
|
2205
|
+
|
|
2206
|
+
```typescript
|
|
2207
|
+
public readonly region: string;
|
|
2208
|
+
```
|
|
2209
|
+
|
|
2210
|
+
- *Type:* string
|
|
2211
|
+
|
|
2212
|
+
The AWS region (defaults to 'eu-central-1').
|
|
2213
|
+
|
|
2214
|
+
---
|
|
2215
|
+
|
|
2119
2216
|
### ApproverMapping <a name="ApproverMapping" id="projen-pipelines.ApproverMapping"></a>
|
|
2120
2217
|
|
|
2121
2218
|
#### Initializer <a name="Initializer" id="projen-pipelines.ApproverMapping.Initializer"></a>
|
|
@@ -2215,6 +2312,7 @@ const awsAssumeRoleStepConfig: AwsAssumeRoleStepConfig = { ... }
|
|
|
2215
2312
|
| **Name** | **Type** | **Description** |
|
|
2216
2313
|
| --- | --- | --- |
|
|
2217
2314
|
| <code><a href="#projen-pipelines.AwsAssumeRoleStepConfig.property.roleArn">roleArn</a></code> | <code>string</code> | The ARN of the role to assume. |
|
|
2315
|
+
| <code><a href="#projen-pipelines.AwsAssumeRoleStepConfig.property.jumpRoleArn">jumpRoleArn</a></code> | <code>string</code> | The ARN of the jump role to use for role chaining. |
|
|
2218
2316
|
| <code><a href="#projen-pipelines.AwsAssumeRoleStepConfig.property.region">region</a></code> | <code>string</code> | The AWS region that should be set. |
|
|
2219
2317
|
| <code><a href="#projen-pipelines.AwsAssumeRoleStepConfig.property.sessionName">sessionName</a></code> | <code>string</code> | An identifier for the assumed role session. |
|
|
2220
2318
|
|
|
@@ -2232,6 +2330,18 @@ The ARN of the role to assume.
|
|
|
2232
2330
|
|
|
2233
2331
|
---
|
|
2234
2332
|
|
|
2333
|
+
##### `jumpRoleArn`<sup>Optional</sup> <a name="jumpRoleArn" id="projen-pipelines.AwsAssumeRoleStepConfig.property.jumpRoleArn"></a>
|
|
2334
|
+
|
|
2335
|
+
```typescript
|
|
2336
|
+
public readonly jumpRoleArn: string;
|
|
2337
|
+
```
|
|
2338
|
+
|
|
2339
|
+
- *Type:* string
|
|
2340
|
+
|
|
2341
|
+
The ARN of the jump role to use for role chaining.
|
|
2342
|
+
|
|
2343
|
+
---
|
|
2344
|
+
|
|
2235
2345
|
##### `region`<sup>Optional</sup> <a name="region" id="projen-pipelines.AwsAssumeRoleStepConfig.property.region"></a>
|
|
2236
2346
|
|
|
2237
2347
|
```typescript
|
|
@@ -3495,6 +3605,7 @@ const driftDetectionStageOptions: DriftDetectionStageOptions = { ... }
|
|
|
3495
3605
|
| <code><a href="#projen-pipelines.DriftDetectionStageOptions.property.region">region</a></code> | <code>string</code> | AWS region for this stage. |
|
|
3496
3606
|
| <code><a href="#projen-pipelines.DriftDetectionStageOptions.property.environment">environment</a></code> | <code>{[ key: string ]: string}</code> | Environment variables for this stage. |
|
|
3497
3607
|
| <code><a href="#projen-pipelines.DriftDetectionStageOptions.property.failOnDrift">failOnDrift</a></code> | <code>boolean</code> | Whether to fail if drift is detected. |
|
|
3608
|
+
| <code><a href="#projen-pipelines.DriftDetectionStageOptions.property.jumpRoleArn">jumpRoleArn</a></code> | <code>string</code> | Jump role to assume before the main role. |
|
|
3498
3609
|
| <code><a href="#projen-pipelines.DriftDetectionStageOptions.property.roleArn">roleArn</a></code> | <code>string</code> | Role to assume for drift detection. |
|
|
3499
3610
|
| <code><a href="#projen-pipelines.DriftDetectionStageOptions.property.stackNames">stackNames</a></code> | <code>string[]</code> | Stack names to check in this stage. |
|
|
3500
3611
|
|
|
@@ -3549,6 +3660,18 @@ Whether to fail if drift is detected.
|
|
|
3549
3660
|
|
|
3550
3661
|
---
|
|
3551
3662
|
|
|
3663
|
+
##### `jumpRoleArn`<sup>Optional</sup> <a name="jumpRoleArn" id="projen-pipelines.DriftDetectionStageOptions.property.jumpRoleArn"></a>
|
|
3664
|
+
|
|
3665
|
+
```typescript
|
|
3666
|
+
public readonly jumpRoleArn: string;
|
|
3667
|
+
```
|
|
3668
|
+
|
|
3669
|
+
- *Type:* string
|
|
3670
|
+
|
|
3671
|
+
Jump role to assume before the main role.
|
|
3672
|
+
|
|
3673
|
+
---
|
|
3674
|
+
|
|
3552
3675
|
##### `roleArn`<sup>Optional</sup> <a name="roleArn" id="projen-pipelines.DriftDetectionStageOptions.property.roleArn"></a>
|
|
3553
3676
|
|
|
3554
3677
|
```typescript
|
|
@@ -3591,6 +3714,7 @@ const driftDetectionStepProps: DriftDetectionStepProps = { ... }
|
|
|
3591
3714
|
| <code><a href="#projen-pipelines.DriftDetectionStepProps.property.region">region</a></code> | <code>string</code> | AWS region for this stage. |
|
|
3592
3715
|
| <code><a href="#projen-pipelines.DriftDetectionStepProps.property.environment">environment</a></code> | <code>{[ key: string ]: string}</code> | Environment variables for this stage. |
|
|
3593
3716
|
| <code><a href="#projen-pipelines.DriftDetectionStepProps.property.failOnDrift">failOnDrift</a></code> | <code>boolean</code> | Whether to fail if drift is detected. |
|
|
3717
|
+
| <code><a href="#projen-pipelines.DriftDetectionStepProps.property.jumpRoleArn">jumpRoleArn</a></code> | <code>string</code> | Jump role to assume before the main role. |
|
|
3594
3718
|
| <code><a href="#projen-pipelines.DriftDetectionStepProps.property.roleArn">roleArn</a></code> | <code>string</code> | Role to assume for drift detection. |
|
|
3595
3719
|
| <code><a href="#projen-pipelines.DriftDetectionStepProps.property.stackNames">stackNames</a></code> | <code>string[]</code> | Stack names to check in this stage. |
|
|
3596
3720
|
| <code><a href="#projen-pipelines.DriftDetectionStepProps.property.timeout">timeout</a></code> | <code>number</code> | Timeout in minutes for drift detection. |
|
|
@@ -3646,6 +3770,18 @@ Whether to fail if drift is detected.
|
|
|
3646
3770
|
|
|
3647
3771
|
---
|
|
3648
3772
|
|
|
3773
|
+
##### `jumpRoleArn`<sup>Optional</sup> <a name="jumpRoleArn" id="projen-pipelines.DriftDetectionStepProps.property.jumpRoleArn"></a>
|
|
3774
|
+
|
|
3775
|
+
```typescript
|
|
3776
|
+
public readonly jumpRoleArn: string;
|
|
3777
|
+
```
|
|
3778
|
+
|
|
3779
|
+
- *Type:* string
|
|
3780
|
+
|
|
3781
|
+
Jump role to assume before the main role.
|
|
3782
|
+
|
|
3783
|
+
---
|
|
3784
|
+
|
|
3649
3785
|
##### `roleArn`<sup>Optional</sup> <a name="roleArn" id="projen-pipelines.DriftDetectionStepProps.property.roleArn"></a>
|
|
3650
3786
|
|
|
3651
3787
|
```typescript
|
|
@@ -5158,6 +5294,7 @@ const iamRoleConfig: IamRoleConfig = { ... }
|
|
|
5158
5294
|
| <code><a href="#projen-pipelines.IamRoleConfig.property.default">default</a></code> | <code>string</code> | Default IAM role ARN used if no specific role is provided. |
|
|
5159
5295
|
| <code><a href="#projen-pipelines.IamRoleConfig.property.deployment">deployment</a></code> | <code>{[ key: string ]: string}</code> | IAM role ARNs for different deployment stages. |
|
|
5160
5296
|
| <code><a href="#projen-pipelines.IamRoleConfig.property.diff">diff</a></code> | <code>{[ key: string ]: string}</code> | IAM role ARNs for different diff stages. |
|
|
5297
|
+
| <code><a href="#projen-pipelines.IamRoleConfig.property.jump">jump</a></code> | <code>{[ key: string ]: string}</code> | IAM role ARNs for using a "jump" role to assume the deploy role in a different AWS account using Role Chaining. |
|
|
5161
5298
|
| <code><a href="#projen-pipelines.IamRoleConfig.property.synth">synth</a></code> | <code>string</code> | IAM role ARN for the synthesis step. |
|
|
5162
5299
|
|
|
5163
5300
|
---
|
|
@@ -5222,6 +5359,20 @@ IAM role ARNs for different diff stages.
|
|
|
5222
5359
|
|
|
5223
5360
|
---
|
|
5224
5361
|
|
|
5362
|
+
##### `jump`<sup>Optional</sup> <a name="jump" id="projen-pipelines.IamRoleConfig.property.jump"></a>
|
|
5363
|
+
|
|
5364
|
+
```typescript
|
|
5365
|
+
public readonly jump: {[ key: string ]: string};
|
|
5366
|
+
```
|
|
5367
|
+
|
|
5368
|
+
- *Type:* {[ key: string ]: string}
|
|
5369
|
+
|
|
5370
|
+
IAM role ARNs for using a "jump" role to assume the deploy role in a different AWS account using Role Chaining.
|
|
5371
|
+
|
|
5372
|
+
https://github.com/aws-actions/configure-aws-credentials?tab=readme-ov-file#assumerole-with-role-previously-assumed-by-action-in-same-workflow
|
|
5373
|
+
|
|
5374
|
+
---
|
|
5375
|
+
|
|
5225
5376
|
##### `synth`<sup>Optional</sup> <a name="synth" id="projen-pipelines.IamRoleConfig.property.synth"></a>
|
|
5226
5377
|
|
|
5227
5378
|
```typescript
|
|
@@ -5902,6 +6053,93 @@ public readonly packageJson: PackageJsonConfig;
|
|
|
5902
6053
|
|
|
5903
6054
|
## Classes <a name="Classes" id="Classes"></a>
|
|
5904
6055
|
|
|
6056
|
+
### AmplifyDeployStep <a name="AmplifyDeployStep" id="projen-pipelines.AmplifyDeployStep"></a>
|
|
6057
|
+
|
|
6058
|
+
A step that deploys a web application to AWS Amplify.
|
|
6059
|
+
|
|
6060
|
+
#### Initializers <a name="Initializers" id="projen-pipelines.AmplifyDeployStep.Initializer"></a>
|
|
6061
|
+
|
|
6062
|
+
```typescript
|
|
6063
|
+
import { AmplifyDeployStep } from 'projen-pipelines'
|
|
6064
|
+
|
|
6065
|
+
new AmplifyDeployStep(project: Project, config: AmplifyDeployStepConfig)
|
|
6066
|
+
```
|
|
6067
|
+
|
|
6068
|
+
| **Name** | **Type** | **Description** |
|
|
6069
|
+
| --- | --- | --- |
|
|
6070
|
+
| <code><a href="#projen-pipelines.AmplifyDeployStep.Initializer.parameter.project">project</a></code> | <code>projen.Project</code> | - The projen project reference. |
|
|
6071
|
+
| <code><a href="#projen-pipelines.AmplifyDeployStep.Initializer.parameter.config">config</a></code> | <code><a href="#projen-pipelines.AmplifyDeployStepConfig">AmplifyDeployStepConfig</a></code> | *No description.* |
|
|
6072
|
+
|
|
6073
|
+
---
|
|
6074
|
+
|
|
6075
|
+
##### `project`<sup>Required</sup> <a name="project" id="projen-pipelines.AmplifyDeployStep.Initializer.parameter.project"></a>
|
|
6076
|
+
|
|
6077
|
+
- *Type:* projen.Project
|
|
6078
|
+
|
|
6079
|
+
The projen project reference.
|
|
6080
|
+
|
|
6081
|
+
---
|
|
6082
|
+
|
|
6083
|
+
##### `config`<sup>Required</sup> <a name="config" id="projen-pipelines.AmplifyDeployStep.Initializer.parameter.config"></a>
|
|
6084
|
+
|
|
6085
|
+
- *Type:* <a href="#projen-pipelines.AmplifyDeployStepConfig">AmplifyDeployStepConfig</a>
|
|
6086
|
+
|
|
6087
|
+
---
|
|
6088
|
+
|
|
6089
|
+
#### Methods <a name="Methods" id="Methods"></a>
|
|
6090
|
+
|
|
6091
|
+
| **Name** | **Description** |
|
|
6092
|
+
| --- | --- |
|
|
6093
|
+
| <code><a href="#projen-pipelines.AmplifyDeployStep.toBash">toBash</a></code> | Generates a configuration for a bash script step. |
|
|
6094
|
+
| <code><a href="#projen-pipelines.AmplifyDeployStep.toCodeCatalyst">toCodeCatalyst</a></code> | Generates a configuration for a CodeCatalyst Actions step. |
|
|
6095
|
+
| <code><a href="#projen-pipelines.AmplifyDeployStep.toGithub">toGithub</a></code> | Generates a configuration for a GitHub Actions step. |
|
|
6096
|
+
| <code><a href="#projen-pipelines.AmplifyDeployStep.toGitlab">toGitlab</a></code> | Generates a configuration for a GitLab CI step. |
|
|
6097
|
+
|
|
6098
|
+
---
|
|
6099
|
+
|
|
6100
|
+
##### `toBash` <a name="toBash" id="projen-pipelines.AmplifyDeployStep.toBash"></a>
|
|
6101
|
+
|
|
6102
|
+
```typescript
|
|
6103
|
+
public toBash(): BashStepConfig
|
|
6104
|
+
```
|
|
6105
|
+
|
|
6106
|
+
Generates a configuration for a bash script step.
|
|
6107
|
+
|
|
6108
|
+
Should be implemented by subclasses.
|
|
6109
|
+
|
|
6110
|
+
##### `toCodeCatalyst` <a name="toCodeCatalyst" id="projen-pipelines.AmplifyDeployStep.toCodeCatalyst"></a>
|
|
6111
|
+
|
|
6112
|
+
```typescript
|
|
6113
|
+
public toCodeCatalyst(): CodeCatalystStepConfig
|
|
6114
|
+
```
|
|
6115
|
+
|
|
6116
|
+
Generates a configuration for a CodeCatalyst Actions step.
|
|
6117
|
+
|
|
6118
|
+
Should be implemented by subclasses.
|
|
6119
|
+
|
|
6120
|
+
##### `toGithub` <a name="toGithub" id="projen-pipelines.AmplifyDeployStep.toGithub"></a>
|
|
6121
|
+
|
|
6122
|
+
```typescript
|
|
6123
|
+
public toGithub(): GithubStepConfig
|
|
6124
|
+
```
|
|
6125
|
+
|
|
6126
|
+
Generates a configuration for a GitHub Actions step.
|
|
6127
|
+
|
|
6128
|
+
Should be implemented by subclasses.
|
|
6129
|
+
|
|
6130
|
+
##### `toGitlab` <a name="toGitlab" id="projen-pipelines.AmplifyDeployStep.toGitlab"></a>
|
|
6131
|
+
|
|
6132
|
+
```typescript
|
|
6133
|
+
public toGitlab(): GitlabStepConfig
|
|
6134
|
+
```
|
|
6135
|
+
|
|
6136
|
+
Generates a configuration for a GitLab CI step.
|
|
6137
|
+
|
|
6138
|
+
Should be implemented by subclasses.
|
|
6139
|
+
|
|
6140
|
+
|
|
6141
|
+
|
|
6142
|
+
|
|
5905
6143
|
### AwsAssumeRoleStep <a name="AwsAssumeRoleStep" id="projen-pipelines.AwsAssumeRoleStep"></a>
|
|
5906
6144
|
|
|
5907
6145
|
A step that assumes a role in AWS.
|
package/README.md
CHANGED
|
@@ -38,6 +38,7 @@ We aim to evolve into a universal CI/CD pipeline generator capable of supporting
|
|
|
38
38
|
* Traditional web applications
|
|
39
39
|
* Terraform / OpenTOFU projects
|
|
40
40
|
* Winglang applications
|
|
41
|
+
* Static websites and single-page applications
|
|
41
42
|
1. Multi-Cloud Deployment: While we started with AWS, we aim to support deployments to other major cloud providers like Azure, Google Cloud Platform, and others.
|
|
42
43
|
1. On-Premises and Hybrid Scenarios: We recognize the importance of on-premises and hybrid cloud setups and plan to cater to these deployment models.
|
|
43
44
|
1. Framework Agnostic: Our goal is to make Projen Pipelines adaptable to work with various development frameworks and tools, not just those related to AWS or cloud deployments.
|
|
@@ -497,6 +498,72 @@ When feature stages are configured, two GitHub workflows are created:
|
|
|
497
498
|
|
|
498
499
|
The feature deployment uses the `--force` flag when destroying to ensure cleanup without manual confirmation.
|
|
499
500
|
|
|
501
|
+
### AWS Amplify Deployment
|
|
502
|
+
|
|
503
|
+
Projen Pipelines includes support for deploying static websites and single-page applications to AWS Amplify Hosting. This feature provides automated deployment of build artifacts to Amplify, with built-in support for multiple environments and branch-based deployments.
|
|
504
|
+
|
|
505
|
+
#### Configuration
|
|
506
|
+
|
|
507
|
+
To add Amplify deployment to your pipeline, use the `AmplifyDeployStep`:
|
|
508
|
+
|
|
509
|
+
```typescript
|
|
510
|
+
import { AmplifyDeployStep } from 'projen-pipelines';
|
|
511
|
+
|
|
512
|
+
// Using a static Amplify app ID
|
|
513
|
+
const deployStep = new AmplifyDeployStep(project, {
|
|
514
|
+
appId: 'd123gtgt770s1x',
|
|
515
|
+
artifactFile: 'dist.zip',
|
|
516
|
+
branchName: 'main', // optional, defaults to 'main'
|
|
517
|
+
region: 'us-east-1', // optional, defaults to 'eu-central-1'
|
|
518
|
+
});
|
|
519
|
+
|
|
520
|
+
// Using dynamic app ID extraction from CDK outputs
|
|
521
|
+
const deployStep = new AmplifyDeployStep(project, {
|
|
522
|
+
appIdCommand: 'jq -r \'.MyStack.AmplifyAppId\' cdk-outputs.json',
|
|
523
|
+
artifactFile: 'build.zip',
|
|
524
|
+
environment: 'production', // optional, for environment-specific deployments
|
|
525
|
+
});
|
|
526
|
+
```
|
|
527
|
+
|
|
528
|
+
#### How It Works
|
|
529
|
+
|
|
530
|
+
The Amplify deployment step:
|
|
531
|
+
1. Checks for any pending Amplify deployments and cancels them if needed
|
|
532
|
+
2. Creates a new deployment with the Amplify service
|
|
533
|
+
3. Uploads your build artifact (zip file) to Amplify
|
|
534
|
+
4. Starts the deployment and monitors its progress
|
|
535
|
+
5. Validates the deployment succeeded
|
|
536
|
+
|
|
537
|
+
#### Build Artifact Preparation
|
|
538
|
+
|
|
539
|
+
Before using the Amplify deployment step, ensure your build process creates a zip file containing your static website assets:
|
|
540
|
+
|
|
541
|
+
```bash
|
|
542
|
+
# Example: Creating a deployment artifact
|
|
543
|
+
npm run build
|
|
544
|
+
cd dist && zip -r ../dist.zip . && cd ..
|
|
545
|
+
```
|
|
546
|
+
|
|
547
|
+
#### Multi-Stage Deployments
|
|
548
|
+
|
|
549
|
+
For multi-stage deployments with different Amplify apps per environment:
|
|
550
|
+
|
|
551
|
+
```typescript
|
|
552
|
+
// In your CDK stack, output the Amplify app ID
|
|
553
|
+
new CfnOutput(this, 'AmplifyAppId', {
|
|
554
|
+
key: 'AmplifyAppId',
|
|
555
|
+
value: amplifyApp.appId,
|
|
556
|
+
});
|
|
557
|
+
|
|
558
|
+
// In your pipeline configuration
|
|
559
|
+
const deployStep = new AmplifyDeployStep(project, {
|
|
560
|
+
appIdCommand: `jq -r '.${stackName}.AmplifyAppId' cdk-outputs-${stage}.json`,
|
|
561
|
+
artifactFile: 'website.zip',
|
|
562
|
+
environment: stage,
|
|
563
|
+
branchName: stage === 'prod' ? 'main' : stage,
|
|
564
|
+
});
|
|
565
|
+
```
|
|
566
|
+
|
|
500
567
|
## Current Status
|
|
501
568
|
|
|
502
569
|
Projen-Pipelines is currently in version 0.x, awaiting Projen's 1.0 release. Despite its pre-1.0 status, it's being used in several production environments.
|
|
@@ -12,5 +12,5 @@ class AssignApprover extends projen_1.Component {
|
|
|
12
12
|
}
|
|
13
13
|
exports.AssignApprover = AssignApprover;
|
|
14
14
|
_a = JSII_RTTI_SYMBOL_1;
|
|
15
|
-
AssignApprover[_a] = { fqn: "projen-pipelines.AssignApprover", version: "0.
|
|
15
|
+
AssignApprover[_a] = { fqn: "projen-pipelines.AssignApprover", version: "0.3.1" };
|
|
16
16
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hc3NpZ24tYXBwcm92ZXIvYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1DQUE0QztBQXVCNUMsTUFBc0IsY0FBZSxTQUFRLGtCQUFTO0lBR3BELFlBQVksS0FBYyxFQUFxQixXQUFrQztRQUMvRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFEZ0MsZ0JBQVcsR0FBWCxXQUFXLENBQXVCO0lBRWpGLENBQUM7O0FBTEgsd0NBT0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFByb2plY3QgfSBmcm9tICdwcm9qZW4nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwcHJvdmVyTWFwcGluZyB7XG5cbiAgcmVhZG9ubHkgYXV0aG9yOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFwcHJvdmVyczogc3RyaW5nW107XG5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBBc3NpZ25BcHByb3Zlck9wdGlvbnMge1xuXG4gIC8qKlxuICAgKiBUaGUgbWFwcGluZyBvZiBhdXRob3JzIHRvIGFwcHJvdmVycy5cbiAgICovXG4gIHJlYWRvbmx5IGFwcHJvdmVyTWFwcGluZzogQXBwcm92ZXJNYXBwaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBHaXRIdWIgdG9rZW4gdG8gdXNlIGZvciB0aGUgQVBJIGNhbGxzLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdEFwcHJvdmVyczogc3RyaW5nW107XG5cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFzc2lnbkFwcHJvdmVyIGV4dGVuZHMgQ29tcG9uZW50IHtcblxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBQcm9qZWN0LCBwcm90ZWN0ZWQgcmVhZG9ubHkgYmFzZU9wdGlvbnM6IEFzc2lnbkFwcHJvdmVyT3B0aW9ucykge1xuICAgIHN1cGVyKHNjb3BlKTtcbiAgfVxuXG59Il19
|
|
@@ -35,7 +35,7 @@ class GitHubAssignApprover extends base_1.AssignApprover {
|
|
|
35
35
|
steps: [
|
|
36
36
|
{
|
|
37
37
|
name: 'Assign approver based on author',
|
|
38
|
-
uses: 'actions/github-script@
|
|
38
|
+
uses: 'actions/github-script@v8',
|
|
39
39
|
with: {
|
|
40
40
|
script: approverMappingScript,
|
|
41
41
|
},
|
|
@@ -81,5 +81,5 @@ if (filteredApprovers.length > 0) {
|
|
|
81
81
|
}
|
|
82
82
|
exports.GitHubAssignApprover = GitHubAssignApprover;
|
|
83
83
|
_a = JSII_RTTI_SYMBOL_1;
|
|
84
|
-
GitHubAssignApprover[_a] = { fqn: "projen-pipelines.GitHubAssignApprover", version: "0.
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
84
|
+
GitHubAssignApprover[_a] = { fqn: "projen-pipelines.GitHubAssignApprover", version: "0.3.1" };
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0aHViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fzc2lnbi1hcHByb3Zlci9naXRodWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSx1RUFBa0Y7QUFDbEYsaUNBQStEO0FBYS9ELE1BQWEsb0JBQXFCLFNBQVEscUJBQWM7SUFJdEQsWUFBWSxLQUFvQixFQUFFLE9BQW9DO1FBQ3BFLEtBQUssQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFFdkIsZ0RBQWdEO1FBQ2hELElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLE1BQU8sQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUNmLGlCQUFpQixFQUFFO2dCQUNqQixLQUFLLEVBQUUsQ0FBQyxRQUFRLEVBQUUsa0JBQWtCLENBQUM7YUFDdEM7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksaUJBQWlCO1FBQ3RCLE9BQU87WUFDTCxZQUFZLEVBQUUsK0JBQWEsQ0FBQyxLQUFLO1NBQ2xDLENBQUM7SUFDSixDQUFDO0lBRVMsYUFBYTtRQUNyQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRWhFLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7UUFFbkUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUU7WUFDdEMsTUFBTSxFQUFFLFVBQVU7WUFDbEIsV0FBVyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUNyQyxLQUFLLEVBQUU7Z0JBQ0w7b0JBQ0UsSUFBSSxFQUFFLGlDQUFpQztvQkFDdkMsSUFBSSxFQUFFLDBCQUEwQjtvQkFDaEMsSUFBSSxFQUFFO3dCQUNKLE1BQU0sRUFBRSxxQkFBcUI7cUJBQzlCO2lCQUNGO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRVMsNkJBQTZCO1FBQ3JDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZTthQUNwRCxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxNQUFNLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7YUFDN0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWYsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQjthQUN2RCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO2FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVkLE9BQU87Ozs7RUFJVCxjQUFjLEdBQUcsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDdkMsZ0JBQWdCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFxQjlCLENBQUM7SUFDRCxDQUFDOztBQXBGSCxvREFxRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHaXRIdWJQcm9qZWN0LCBHaXRodWJXb3JrZmxvdyB9IGZyb20gJ3Byb2plbi9saWIvZ2l0aHViJztcbmltcG9ydCB7IEpvYlBlcm1pc3Npb24sIEpvYlBlcm1pc3Npb25zIH0gZnJvbSAncHJvamVuL2xpYi9naXRodWIvd29ya2Zsb3dzLW1vZGVsJztcbmltcG9ydCB7IEFzc2lnbkFwcHJvdmVyLCBBc3NpZ25BcHByb3Zlck9wdGlvbnMgfSBmcm9tICcuL2Jhc2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdpdEh1YkFzc2lnbkFwcHJvdmVyT3B0aW9ucyBleHRlbmRzIEFzc2lnbkFwcHJvdmVyT3B0aW9ucyB7XG5cbiAgLyoqXG4gICAqIHJ1bm5lciB0YWdzIHRvIHVzZSB0byBzZWxlY3QgcnVubmVyc1xuICAgKlxuICAgKiBAZGVmYXVsdCBbJ3VidW50dS1sYXRlc3QnXVxuICAgKi9cbiAgcmVhZG9ubHkgcnVubmVyVGFncz86IHN0cmluZ1tdO1xuXG59XG5cbmV4cG9ydCBjbGFzcyBHaXRIdWJBc3NpZ25BcHByb3ZlciBleHRlbmRzIEFzc2lnbkFwcHJvdmVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSB3b3JrZmxvdzogR2l0aHViV29ya2Zsb3c7XG4gIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogR2l0SHViQXNzaWduQXBwcm92ZXJPcHRpb25zO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBHaXRIdWJQcm9qZWN0LCBvcHRpb25zOiBHaXRIdWJBc3NpZ25BcHByb3Zlck9wdGlvbnMpIHtcbiAgICBzdXBlcihzY29wZSwgb3B0aW9ucyk7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcblxuICAgIC8vIEluaXRpYWxpemUgdGhlIGRlcGxveW1lbnQgd29ya2Zsb3cgb24gR2l0SHViLlxuICAgIHRoaXMud29ya2Zsb3cgPSBzY29wZS5naXRodWIhLmFkZFdvcmtmbG93KCdhc3NpZ24tYXBwcm92ZXInKTtcbiAgICB0aGlzLndvcmtmbG93Lm9uKHtcbiAgICAgIHB1bGxSZXF1ZXN0VGFyZ2V0OiB7XG4gICAgICAgIHR5cGVzOiBbJ29wZW5lZCcsICdyZWFkeV9mb3JfcmV2aWV3J10sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5zZXR1cFdvcmtmbG93KCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSByZXF1aXJlZCBwZXJtaXNzaW9ucyBmb3IgdGhlIEdpdEh1YiB3b3JrZmxvd1xuICAgKi9cbiAgcHVibGljIHJlbmRlclBlcm1pc3Npb25zKCk6IEpvYlBlcm1pc3Npb25zIHtcbiAgICByZXR1cm4ge1xuICAgICAgcHVsbFJlcXVlc3RzOiBKb2JQZXJtaXNzaW9uLldSSVRFLFxuICAgIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0dXBXb3JrZmxvdygpOiB2b2lkIHtcbiAgICBjb25zdCBydW5uZXJUYWdzID0gdGhpcy5vcHRpb25zLnJ1bm5lclRhZ3MgPz8gWyd1YnVudHUtbGF0ZXN0J107XG5cbiAgICBjb25zdCBhcHByb3Zlck1hcHBpbmdTY3JpcHQgPSB0aGlzLmdlbmVyYXRlQXBwcm92ZXJNYXBwaW5nU2NyaXB0KCk7XG5cbiAgICB0aGlzLndvcmtmbG93LmFkZEpvYignYXNzaWduLWFwcHJvdmVyJywge1xuICAgICAgcnVuc09uOiBydW5uZXJUYWdzLFxuICAgICAgcGVybWlzc2lvbnM6IHRoaXMucmVuZGVyUGVybWlzc2lvbnMoKSxcbiAgICAgIHN0ZXBzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnQXNzaWduIGFwcHJvdmVyIGJhc2VkIG9uIGF1dGhvcicsXG4gICAgICAgICAgdXNlczogJ2FjdGlvbnMvZ2l0aHViLXNjcmlwdEB2OCcsXG4gICAgICAgICAgd2l0aDoge1xuICAgICAgICAgICAgc2NyaXB0OiBhcHByb3Zlck1hcHBpbmdTY3JpcHQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2VuZXJhdGVBcHByb3Zlck1hcHBpbmdTY3JpcHQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBtYXBwaW5nRW50cmllcyA9IHRoaXMuYmFzZU9wdGlvbnMuYXBwcm92ZXJNYXBwaW5nXG4gICAgICAubWFwKG1hcHBpbmcgPT4gYCAgJyR7bWFwcGluZy5hdXRob3J9JzogWyR7bWFwcGluZy5hcHByb3ZlcnMubWFwKGEgPT4gYCcke2F9J2ApLmpvaW4oJywgJyl9XWApXG4gICAgICAuam9pbignLFxcbicpO1xuXG4gICAgY29uc3QgZGVmYXVsdEFwcHJvdmVycyA9IHRoaXMuYmFzZU9wdGlvbnMuZGVmYXVsdEFwcHJvdmVyc1xuICAgICAgLm1hcChhID0+IGAnJHthfSdgKVxuICAgICAgLmpvaW4oJywgJyk7XG5cbiAgICByZXR1cm4gYGNvbnN0IGF1dGhvciA9IGNvbnRleHQucGF5bG9hZC5wdWxsX3JlcXVlc3QudXNlci5sb2dpbjtcblxuLy8gRGVmaW5lIGFwcHJvdmVyIG1hcHBpbmdcbmNvbnN0IGFwcHJvdmVyTWFwcGluZyA9IHtcbiR7bWFwcGluZ0VudHJpZXN9JHttYXBwaW5nRW50cmllcy5sZW5ndGggPiAwID8gJywnIDogJyd9XG4gICdkZWZhdWx0JzogWyR7ZGVmYXVsdEFwcHJvdmVyc31dIC8vIERlZmF1bHQgYXBwcm92ZXIocykgaWYgYXV0aG9yIG5vdCBpbiBtYXBwaW5nXG59O1xuXG4vLyBHZXQgYXBwcm92ZXJzIGZvciB0aGUgUFIgYXV0aG9yXG5jb25zdCBhcHByb3ZlcnMgPSBhcHByb3Zlck1hcHBpbmdbYXV0aG9yXSB8fCBhcHByb3Zlck1hcHBpbmdbJ2RlZmF1bHQnXTtcblxuLy8gRmlsdGVyIG91dCB0aGUgYXV0aG9yIGZyb20gYXBwcm92ZXJzIGxpc3QgKGNhbid0IGFwcHJvdmUgb3duIFBSKVxuY29uc3QgZmlsdGVyZWRBcHByb3ZlcnMgPSBhcHByb3ZlcnMuZmlsdGVyKGFwcHJvdmVyID0+IGFwcHJvdmVyICE9PSBhdXRob3IpO1xuXG5pZiAoZmlsdGVyZWRBcHByb3ZlcnMubGVuZ3RoID4gMCkge1xuICAvLyBSZXF1ZXN0IHJldmlld3MgZnJvbSB0aGUgYXBwcm92ZXJzXG4gIGF3YWl0IGdpdGh1Yi5yZXN0LnB1bGxzLnJlcXVlc3RSZXZpZXdlcnMoe1xuICAgIG93bmVyOiBjb250ZXh0LnJlcG8ub3duZXIsXG4gICAgcmVwbzogY29udGV4dC5yZXBvLnJlcG8sXG4gICAgcHVsbF9udW1iZXI6IGNvbnRleHQuaXNzdWUubnVtYmVyLFxuICAgIHJldmlld2VyczogZmlsdGVyZWRBcHByb3ZlcnNcbiAgfSk7XG4gIFxuICBjb25zb2xlLmxvZyhcXGBBc3NpZ25lZCByZXZpZXdlcnM6IFxcJHtmaWx0ZXJlZEFwcHJvdmVycy5qb2luKCcsICcpfVxcYCk7XG59IGVsc2Uge1xuICBjb25zb2xlLmxvZygnTm8gZWxpZ2libGUgcmV2aWV3ZXJzIGZvdW5kIGZvciB0aGlzIFBSIGF1dGhvcicpO1xufWA7XG4gIH1cbn1cbiJdfQ==
|
package/lib/awscdk/base.d.ts
CHANGED
|
@@ -84,6 +84,13 @@ export interface IamRoleConfig {
|
|
|
84
84
|
readonly deployment?: {
|
|
85
85
|
[stage: string]: string;
|
|
86
86
|
};
|
|
87
|
+
/**
|
|
88
|
+
* IAM role ARNs for using a "jump" role to assume the deploy role in a different AWS account using Role Chaining.
|
|
89
|
+
* https://github.com/aws-actions/configure-aws-credentials?tab=readme-ov-file#assumerole-with-role-previously-assumed-by-action-in-same-workflow
|
|
90
|
+
* */
|
|
91
|
+
readonly jump?: {
|
|
92
|
+
[stage: string]: string;
|
|
93
|
+
};
|
|
87
94
|
}
|
|
88
95
|
/**
|
|
89
96
|
* The CDKPipelineOptions interface is designed to provide configuration
|