projen-pipelines 0.2.13 → 0.2.15

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.
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.GitLabDriftDetectionWorkflow = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const projen_1 = require("projen");
7
+ const base_1 = require("./base");
8
+ const step_1 = require("./step");
9
+ class GitLabDriftDetectionWorkflow extends base_1.DriftDetectionWorkflow {
10
+ constructor(project, options) {
11
+ super(project, options);
12
+ this.runnerTags = options.runnerTags ?? [];
13
+ this.image = options.image ?? 'node:18';
14
+ this.config = new projen_1.gitlab.GitlabConfiguration(project, {
15
+ stages: [],
16
+ jobs: {},
17
+ });
18
+ this.config.addStages('drift-detection', 'summary');
19
+ this.config.addJobs({
20
+ '.drift-detection': {
21
+ stage: 'drift-detection',
22
+ tags: this.runnerTags,
23
+ image: { name: this.image },
24
+ idTokens: {
25
+ AWS_TOKEN: {
26
+ aud: 'https://sts.amazonaws.com',
27
+ },
28
+ },
29
+ only: {
30
+ refs: ['schedules'],
31
+ variables: ['$CI_PIPELINE_SOURCE == "schedule"', '$DRIFT_DETECTION == "true"'],
32
+ },
33
+ beforeScript: [
34
+ 'apt-get update && apt-get install -y python3 python3-pip',
35
+ 'pip3 install awscli',
36
+ 'npm ci',
37
+ ],
38
+ artifacts: {
39
+ paths: ['drift-results-*.json'],
40
+ expireIn: '1 week',
41
+ when: projen_1.gitlab.CacheWhen.ALWAYS,
42
+ },
43
+ },
44
+ });
45
+ // Add job for each stage
46
+ for (const stage of this.stages) {
47
+ const jobName = `drift:${stage.name}`;
48
+ const driftStep = new step_1.DriftDetectionStep(this.project, stage);
49
+ const stepConfig = driftStep.toGitlab();
50
+ this.config.addJobs({
51
+ [jobName]: {
52
+ extends: ['.drift-detection'],
53
+ variables: {
54
+ ...stepConfig.env,
55
+ },
56
+ script: stepConfig.commands,
57
+ allowFailure: !stage.failOnDrift,
58
+ },
59
+ });
60
+ }
61
+ // Add summary job
62
+ this.config.addJobs({
63
+ 'drift:summary': {
64
+ stage: 'summary',
65
+ tags: this.runnerTags,
66
+ needs: this.stages.map(s => `drift:${s.name}`),
67
+ only: {
68
+ refs: ['schedules'],
69
+ variables: ['$CI_PIPELINE_SOURCE == "schedule"', '$DRIFT_DETECTION == "true"'],
70
+ },
71
+ script: [
72
+ 'echo "## Drift Detection Summary"',
73
+ 'echo ""',
74
+ this.generateSummaryScript(),
75
+ ],
76
+ when: projen_1.gitlab.JobWhen.ALWAYS,
77
+ },
78
+ });
79
+ }
80
+ generateSummaryScript() {
81
+ return `
82
+ total_stacks=0
83
+ total_drifted=0
84
+ total_errors=0
85
+
86
+ for file in drift-results-*.json; do
87
+ if [[ -f "$file" ]]; then
88
+ stage=$(echo $file | sed 's/drift-results-//;s/.json//')
89
+ echo "### Stage: $stage"
90
+
91
+ # Count results
92
+ stacks=$(jq 'length' "$file")
93
+ drifted=$(jq '[.[] | select(.driftStatus == "DRIFTED")] | length' "$file")
94
+ errors=$(jq '[.[] | select(.error)] | length' "$file")
95
+
96
+ echo "- Total stacks: $stacks"
97
+ echo "- Drifted: $drifted"
98
+ echo "- Errors: $errors"
99
+
100
+ # Show drifted stacks
101
+ if [[ $drifted -gt 0 ]]; then
102
+ echo ""
103
+ echo "**Drifted stacks:**"
104
+ jq -r '.[] | select(.driftStatus == "DRIFTED") | " - " + .stackName + " (" + ((.driftedResources // []) | length | tostring) + " resources)"' "$file"
105
+ fi
106
+
107
+ echo ""
108
+
109
+ # Accumulate totals
110
+ total_stacks=$((total_stacks + stacks))
111
+ total_drifted=$((total_drifted + drifted))
112
+ total_errors=$((total_errors + errors))
113
+ fi
114
+ done
115
+
116
+ echo "### Overall Summary"
117
+ echo "- Total stacks checked: $total_stacks"
118
+ echo "- Total drifted stacks: $total_drifted"
119
+ echo "- Total errors: $total_errors"
120
+
121
+ if [[ $total_drifted -gt 0 ]]; then
122
+ echo ""
123
+ echo "⚠️ **Action required:** Drift detected in $total_drifted stacks"
124
+
125
+ # Send notification if webhook is configured
126
+ if [[ -n "$DRIFT_NOTIFICATION_WEBHOOK" ]]; then
127
+ curl -X POST "$DRIFT_NOTIFICATION_WEBHOOK" \\
128
+ -H "Content-Type: application/json" \\
129
+ -d "{\\"text\\": \\"Drift detected in $total_drifted stacks. Check pipeline $CI_PIPELINE_URL for details.\\"}" || true
130
+ fi
131
+ fi
132
+ `;
133
+ }
134
+ }
135
+ exports.GitLabDriftDetectionWorkflow = GitLabDriftDetectionWorkflow;
136
+ _a = JSII_RTTI_SYMBOL_1;
137
+ GitLabDriftDetectionWorkflow[_a] = { fqn: "projen-pipelines.GitLabDriftDetectionWorkflow", version: "0.2.15" };
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0bGFiLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RyaWZ0L2dpdGxhYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1DQUF5QztBQUN6QyxpQ0FBK0U7QUFDL0UsaUNBQTRDO0FBZTVDLE1BQWEsNEJBQTZCLFNBQVEsNkJBQXNCO0lBS3RFLFlBQVksT0FBZ0IsRUFBRSxPQUE0QztRQUN4RSxLQUFLLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUM7UUFDM0MsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLFNBQVMsQ0FBQztRQUN4QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksZUFBTSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRTtZQUNwRCxNQUFNLEVBQUUsRUFBRTtZQUNWLElBQUksRUFBRSxFQUFFO1NBQ1QsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsaUJBQWlCLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFcEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7WUFDbEIsa0JBQWtCLEVBQUU7Z0JBQ2xCLEtBQUssRUFBRSxpQkFBaUI7Z0JBQ3hCLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVTtnQkFDckIsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQzNCLFFBQVEsRUFBRTtvQkFDUixTQUFTLEVBQUU7d0JBQ1QsR0FBRyxFQUFFLDJCQUEyQjtxQkFDakM7aUJBQ0Y7Z0JBQ0QsSUFBSSxFQUFFO29CQUNKLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQztvQkFDbkIsU0FBUyxFQUFFLENBQUMsbUNBQW1DLEVBQUUsNEJBQTRCLENBQUM7aUJBQy9FO2dCQUNELFlBQVksRUFBRTtvQkFDWiwwREFBMEQ7b0JBQzFELHFCQUFxQjtvQkFDckIsUUFBUTtpQkFDVDtnQkFDRCxTQUFTLEVBQUU7b0JBQ1QsS0FBSyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQy9CLFFBQVEsRUFBRSxRQUFRO29CQUNsQixJQUFJLEVBQUUsZUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNO2lCQUM5QjthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBRUgseUJBQXlCO1FBQ3pCLEtBQUssTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hDLE1BQU0sT0FBTyxHQUFHLFNBQVMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBRXRDLE1BQU0sU0FBUyxHQUFHLElBQUkseUJBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM5RCxNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7WUFFeEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7Z0JBQ2xCLENBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ1QsT0FBTyxFQUFFLENBQUMsa0JBQWtCLENBQUM7b0JBQzdCLFNBQVMsRUFBRTt3QkFDVCxHQUFHLFVBQVUsQ0FBQyxHQUFHO3FCQUNsQjtvQkFDRCxNQUFNLEVBQUUsVUFBVSxDQUFDLFFBQVE7b0JBQzNCLFlBQVksRUFBRSxDQUFDLEtBQUssQ0FBQyxXQUFXO2lCQUNqQzthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxrQkFBa0I7UUFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7WUFDbEIsZUFBZSxFQUFFO2dCQUNmLEtBQUssRUFBRSxTQUFTO2dCQUNoQixJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVU7Z0JBQ3JCLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUM5QyxJQUFJLEVBQUU7b0JBQ0osSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDO29CQUNuQixTQUFTLEVBQUUsQ0FBQyxtQ0FBbUMsRUFBRSw0QkFBNEIsQ0FBQztpQkFDL0U7Z0JBQ0QsTUFBTSxFQUFFO29CQUNOLG1DQUFtQztvQkFDbkMsU0FBUztvQkFDVCxJQUFJLENBQUMscUJBQXFCLEVBQUU7aUJBQzdCO2dCQUNELElBQUksRUFBRSxlQUFNLENBQUMsT0FBTyxDQUFDLE1BQU07YUFDNUI7U0FDRixDQUFDLENBQUM7SUFFTCxDQUFDO0lBRU8scUJBQXFCO1FBQzNCLE9BQU87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW1EVixDQUFDO0lBQ0EsQ0FBQzs7QUF4SUgsb0VBMElDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2l0bGFiLCBQcm9qZWN0IH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IERyaWZ0RGV0ZWN0aW9uV29ya2Zsb3csIERyaWZ0RGV0ZWN0aW9uV29ya2Zsb3dPcHRpb25zIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IERyaWZ0RGV0ZWN0aW9uU3RlcCB9IGZyb20gJy4vc3RlcCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2l0TGFiRHJpZnREZXRlY3Rpb25Xb3JrZmxvd09wdGlvbnMgZXh0ZW5kcyBEcmlmdERldGVjdGlvbldvcmtmbG93T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBHaXRMYWIgcnVubmVyIHRhZ3NcbiAgICovXG4gIHJlYWRvbmx5IHJ1bm5lclRhZ3M/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogRG9ja2VyIGltYWdlIHRvIHVzZSBmb3IgZHJpZnQgZGV0ZWN0aW9uXG4gICAqIEBkZWZhdWx0IFwibm9kZToxOFwiXG4gICAqL1xuICByZWFkb25seSBpbWFnZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEdpdExhYkRyaWZ0RGV0ZWN0aW9uV29ya2Zsb3cgZXh0ZW5kcyBEcmlmdERldGVjdGlvbldvcmtmbG93IHtcbiAgcHJpdmF0ZSByZWFkb25seSBydW5uZXJUYWdzOiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBpbWFnZTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogZ2l0bGFiLkdpdGxhYkNvbmZpZ3VyYXRpb247XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgb3B0aW9uczogR2l0TGFiRHJpZnREZXRlY3Rpb25Xb3JrZmxvd09wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0LCBvcHRpb25zKTtcbiAgICB0aGlzLnJ1bm5lclRhZ3MgPSBvcHRpb25zLnJ1bm5lclRhZ3MgPz8gW107XG4gICAgdGhpcy5pbWFnZSA9IG9wdGlvbnMuaW1hZ2UgPz8gJ25vZGU6MTgnO1xuICAgIHRoaXMuY29uZmlnID0gbmV3IGdpdGxhYi5HaXRsYWJDb25maWd1cmF0aW9uKHByb2plY3QsIHtcbiAgICAgIHN0YWdlczogW10sXG4gICAgICBqb2JzOiB7fSxcbiAgICB9KTtcblxuICAgIHRoaXMuY29uZmlnLmFkZFN0YWdlcygnZHJpZnQtZGV0ZWN0aW9uJywgJ3N1bW1hcnknKTtcblxuICAgIHRoaXMuY29uZmlnLmFkZEpvYnMoe1xuICAgICAgJy5kcmlmdC1kZXRlY3Rpb24nOiB7XG4gICAgICAgIHN0YWdlOiAnZHJpZnQtZGV0ZWN0aW9uJyxcbiAgICAgICAgdGFnczogdGhpcy5ydW5uZXJUYWdzLFxuICAgICAgICBpbWFnZTogeyBuYW1lOiB0aGlzLmltYWdlIH0sXG4gICAgICAgIGlkVG9rZW5zOiB7XG4gICAgICAgICAgQVdTX1RPS0VOOiB7XG4gICAgICAgICAgICBhdWQ6ICdodHRwczovL3N0cy5hbWF6b25hd3MuY29tJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBvbmx5OiB7XG4gICAgICAgICAgcmVmczogWydzY2hlZHVsZXMnXSxcbiAgICAgICAgICB2YXJpYWJsZXM6IFsnJENJX1BJUEVMSU5FX1NPVVJDRSA9PSBcInNjaGVkdWxlXCInLCAnJERSSUZUX0RFVEVDVElPTiA9PSBcInRydWVcIiddLFxuICAgICAgICB9LFxuICAgICAgICBiZWZvcmVTY3JpcHQ6IFtcbiAgICAgICAgICAnYXB0LWdldCB1cGRhdGUgJiYgYXB0LWdldCBpbnN0YWxsIC15IHB5dGhvbjMgcHl0aG9uMy1waXAnLFxuICAgICAgICAgICdwaXAzIGluc3RhbGwgYXdzY2xpJyxcbiAgICAgICAgICAnbnBtIGNpJyxcbiAgICAgICAgXSxcbiAgICAgICAgYXJ0aWZhY3RzOiB7XG4gICAgICAgICAgcGF0aHM6IFsnZHJpZnQtcmVzdWx0cy0qLmpzb24nXSxcbiAgICAgICAgICBleHBpcmVJbjogJzEgd2VlaycsXG4gICAgICAgICAgd2hlbjogZ2l0bGFiLkNhY2hlV2hlbi5BTFdBWVMsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gQWRkIGpvYiBmb3IgZWFjaCBzdGFnZVxuICAgIGZvciAoY29uc3Qgc3RhZ2Ugb2YgdGhpcy5zdGFnZXMpIHtcbiAgICAgIGNvbnN0IGpvYk5hbWUgPSBgZHJpZnQ6JHtzdGFnZS5uYW1lfWA7XG5cbiAgICAgIGNvbnN0IGRyaWZ0U3RlcCA9IG5ldyBEcmlmdERldGVjdGlvblN0ZXAodGhpcy5wcm9qZWN0LCBzdGFnZSk7XG4gICAgICBjb25zdCBzdGVwQ29uZmlnID0gZHJpZnRTdGVwLnRvR2l0bGFiKCk7XG5cbiAgICAgIHRoaXMuY29uZmlnLmFkZEpvYnMoe1xuICAgICAgICBbam9iTmFtZV06IHtcbiAgICAgICAgICBleHRlbmRzOiBbJy5kcmlmdC1kZXRlY3Rpb24nXSxcbiAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgIC4uLnN0ZXBDb25maWcuZW52LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2NyaXB0OiBzdGVwQ29uZmlnLmNvbW1hbmRzLFxuICAgICAgICAgIGFsbG93RmFpbHVyZTogIXN0YWdlLmZhaWxPbkRyaWZ0LFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQWRkIHN1bW1hcnkgam9iXG4gICAgdGhpcy5jb25maWcuYWRkSm9icyh7XG4gICAgICAnZHJpZnQ6c3VtbWFyeSc6IHtcbiAgICAgICAgc3RhZ2U6ICdzdW1tYXJ5JyxcbiAgICAgICAgdGFnczogdGhpcy5ydW5uZXJUYWdzLFxuICAgICAgICBuZWVkczogdGhpcy5zdGFnZXMubWFwKHMgPT4gYGRyaWZ0OiR7cy5uYW1lfWApLFxuICAgICAgICBvbmx5OiB7XG4gICAgICAgICAgcmVmczogWydzY2hlZHVsZXMnXSxcbiAgICAgICAgICB2YXJpYWJsZXM6IFsnJENJX1BJUEVMSU5FX1NPVVJDRSA9PSBcInNjaGVkdWxlXCInLCAnJERSSUZUX0RFVEVDVElPTiA9PSBcInRydWVcIiddLFxuICAgICAgICB9LFxuICAgICAgICBzY3JpcHQ6IFtcbiAgICAgICAgICAnZWNobyBcIiMjIERyaWZ0IERldGVjdGlvbiBTdW1tYXJ5XCInLFxuICAgICAgICAgICdlY2hvIFwiXCInLFxuICAgICAgICAgIHRoaXMuZ2VuZXJhdGVTdW1tYXJ5U2NyaXB0KCksXG4gICAgICAgIF0sXG4gICAgICAgIHdoZW46IGdpdGxhYi5Kb2JXaGVuLkFMV0FZUyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVTdW1tYXJ5U2NyaXB0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBcbnRvdGFsX3N0YWNrcz0wXG50b3RhbF9kcmlmdGVkPTBcbnRvdGFsX2Vycm9ycz0wXG5cbmZvciBmaWxlIGluIGRyaWZ0LXJlc3VsdHMtKi5qc29uOyBkb1xuICBpZiBbWyAtZiBcIiRmaWxlXCIgXV07IHRoZW5cbiAgICBzdGFnZT0kKGVjaG8gJGZpbGUgfCBzZWQgJ3MvZHJpZnQtcmVzdWx0cy0vLztzLy5qc29uLy8nKVxuICAgIGVjaG8gXCIjIyMgU3RhZ2U6ICRzdGFnZVwiXG4gICAgXG4gICAgIyBDb3VudCByZXN1bHRzXG4gICAgc3RhY2tzPSQoanEgJ2xlbmd0aCcgXCIkZmlsZVwiKVxuICAgIGRyaWZ0ZWQ9JChqcSAnWy5bXSB8IHNlbGVjdCguZHJpZnRTdGF0dXMgPT0gXCJEUklGVEVEXCIpXSB8IGxlbmd0aCcgXCIkZmlsZVwiKVxuICAgIGVycm9ycz0kKGpxICdbLltdIHwgc2VsZWN0KC5lcnJvcildIHwgbGVuZ3RoJyBcIiRmaWxlXCIpXG4gICAgXG4gICAgZWNobyBcIi0gVG90YWwgc3RhY2tzOiAkc3RhY2tzXCJcbiAgICBlY2hvIFwiLSBEcmlmdGVkOiAkZHJpZnRlZFwiXG4gICAgZWNobyBcIi0gRXJyb3JzOiAkZXJyb3JzXCJcbiAgICBcbiAgICAjIFNob3cgZHJpZnRlZCBzdGFja3NcbiAgICBpZiBbWyAkZHJpZnRlZCAtZ3QgMCBdXTsgdGhlblxuICAgICAgZWNobyBcIlwiXG4gICAgICBlY2hvIFwiKipEcmlmdGVkIHN0YWNrczoqKlwiXG4gICAgICBqcSAtciAnLltdIHwgc2VsZWN0KC5kcmlmdFN0YXR1cyA9PSBcIkRSSUZURURcIikgfCBcIiAgLSBcIiArIC5zdGFja05hbWUgKyBcIiAoXCIgKyAoKC5kcmlmdGVkUmVzb3VyY2VzIC8vIFtdKSB8IGxlbmd0aCB8IHRvc3RyaW5nKSArIFwiIHJlc291cmNlcylcIicgXCIkZmlsZVwiXG4gICAgZmlcbiAgICBcbiAgICBlY2hvIFwiXCJcbiAgICBcbiAgICAjIEFjY3VtdWxhdGUgdG90YWxzXG4gICAgdG90YWxfc3RhY2tzPSQoKHRvdGFsX3N0YWNrcyArIHN0YWNrcykpXG4gICAgdG90YWxfZHJpZnRlZD0kKCh0b3RhbF9kcmlmdGVkICsgZHJpZnRlZCkpXG4gICAgdG90YWxfZXJyb3JzPSQoKHRvdGFsX2Vycm9ycyArIGVycm9ycykpXG4gIGZpXG5kb25lXG5cbmVjaG8gXCIjIyMgT3ZlcmFsbCBTdW1tYXJ5XCJcbmVjaG8gXCItIFRvdGFsIHN0YWNrcyBjaGVja2VkOiAkdG90YWxfc3RhY2tzXCJcbmVjaG8gXCItIFRvdGFsIGRyaWZ0ZWQgc3RhY2tzOiAkdG90YWxfZHJpZnRlZFwiXG5lY2hvIFwiLSBUb3RhbCBlcnJvcnM6ICR0b3RhbF9lcnJvcnNcIlxuXG5pZiBbWyAkdG90YWxfZHJpZnRlZCAtZ3QgMCBdXTsgdGhlblxuICBlY2hvIFwiXCJcbiAgZWNobyBcIuKaoO+4jyAqKkFjdGlvbiByZXF1aXJlZDoqKiBEcmlmdCBkZXRlY3RlZCBpbiAkdG90YWxfZHJpZnRlZCBzdGFja3NcIlxuICBcbiAgIyBTZW5kIG5vdGlmaWNhdGlvbiBpZiB3ZWJob29rIGlzIGNvbmZpZ3VyZWRcbiAgaWYgW1sgLW4gXCIkRFJJRlRfTk9USUZJQ0FUSU9OX1dFQkhPT0tcIiBdXTsgdGhlblxuICAgIGN1cmwgLVggUE9TVCBcIiREUklGVF9OT1RJRklDQVRJT05fV0VCSE9PS1wiIFxcXFxcbiAgICAgIC1IIFwiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uXCIgXFxcXFxuICAgICAgLWQgXCJ7XFxcXFwidGV4dFxcXFxcIjogXFxcXFwiRHJpZnQgZGV0ZWN0ZWQgaW4gJHRvdGFsX2RyaWZ0ZWQgc3RhY2tzLiBDaGVjayBwaXBlbGluZSAkQ0lfUElQRUxJTkVfVVJMIGZvciBkZXRhaWxzLlxcXFxcIn1cIiB8fCB0cnVlXG4gIGZpXG5maVxuYDtcbiAgfVxuXG59Il19
@@ -0,0 +1,5 @@
1
+ export * from './base';
2
+ export * from './github';
3
+ export * from './gitlab';
4
+ export * from './bash';
5
+ export * from './step';
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./base"), exports);
18
+ __exportStar(require("./github"), exports);
19
+ __exportStar(require("./gitlab"), exports);
20
+ __exportStar(require("./bash"), exports);
21
+ __exportStar(require("./step"), exports);
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZHJpZnQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHlDQUF1QjtBQUN2QiwyQ0FBeUI7QUFDekIsMkNBQXlCO0FBQ3pCLHlDQUF1QjtBQUN2Qix5Q0FBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2Jhc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9naXRodWInO1xuZXhwb3J0ICogZnJvbSAnLi9naXRsYWInO1xuZXhwb3J0ICogZnJvbSAnLi9iYXNoJztcbmV4cG9ydCAqIGZyb20gJy4vc3RlcCc7Il19
@@ -0,0 +1,14 @@
1
+ import { Project } from 'projen';
2
+ import { StepSequence } from '../steps';
3
+ import { DriftDetectionStageOptions } from './base';
4
+ export interface DriftDetectionStepProps extends DriftDetectionStageOptions {
5
+ /**
6
+ * Timeout in minutes for drift detection
7
+ * @default 30
8
+ */
9
+ readonly timeout?: number;
10
+ }
11
+ export declare class DriftDetectionStep extends StepSequence {
12
+ private static generateCommand;
13
+ constructor(project: Project, props: DriftDetectionStepProps);
14
+ }
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.DriftDetectionStep = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const steps_1 = require("../steps");
7
+ class DriftDetectionStep extends steps_1.StepSequence {
8
+ static generateCommand(props) {
9
+ const args = [
10
+ 'detect-drift',
11
+ '--region', props.region,
12
+ ];
13
+ if (props.stackNames && props.stackNames.length > 0) {
14
+ args.push('--stacks', props.stackNames.join(','));
15
+ }
16
+ if (props.timeout) {
17
+ args.push('--timeout', props.timeout.toString());
18
+ }
19
+ if (props.failOnDrift === false) {
20
+ args.push('--no-fail-on-drift');
21
+ }
22
+ return args.join(' ');
23
+ }
24
+ constructor(project, props) {
25
+ const steps = [];
26
+ // Add AWS assume role step if roleArn is provided
27
+ if (props.roleArn) {
28
+ steps.push(new steps_1.AwsAssumeRoleStep(project, {
29
+ roleArn: props.roleArn,
30
+ region: props.region,
31
+ }));
32
+ }
33
+ // Add command step to run drift detection
34
+ const command = DriftDetectionStep.generateCommand(props);
35
+ steps.push(new steps_1.SimpleCommandStep(project, [command], {
36
+ AWS_DEFAULT_REGION: props.region,
37
+ DRIFT_DETECTION_OUTPUT: `drift-results-${props.name}.json`,
38
+ AWS_REGION: props.region,
39
+ STAGE_NAME: props.name,
40
+ ...props.environment,
41
+ }));
42
+ super(project, steps);
43
+ }
44
+ }
45
+ exports.DriftDetectionStep = DriftDetectionStep;
46
+ _a = JSII_RTTI_SYMBOL_1;
47
+ DriftDetectionStep[_a] = { fqn: "projen-pipelines.DriftDetectionStep", version: "0.2.15" };
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kcmlmdC9zdGVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0Esb0NBQTRGO0FBVzVGLE1BQWEsa0JBQW1CLFNBQVEsb0JBQVk7SUFDMUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxLQUE4QjtRQUMzRCxNQUFNLElBQUksR0FBYTtZQUNyQixjQUFjO1lBQ2QsVUFBVSxFQUFFLEtBQUssQ0FBQyxNQUFNO1NBQ3pCLENBQUM7UUFFRixJQUFJLEtBQUssQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELFlBQVksT0FBZ0IsRUFBRSxLQUE4QjtRQUMxRCxNQUFNLEtBQUssR0FBbUIsRUFBRSxDQUFDO1FBRWpDLGtEQUFrRDtRQUNsRCxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUkseUJBQWlCLENBQUMsT0FBTyxFQUFFO2dCQUN4QyxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87Z0JBQ3RCLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTthQUNyQixDQUFDLENBQUMsQ0FBQztRQUNOLENBQUM7UUFFRCwwQ0FBMEM7UUFDMUMsTUFBTSxPQUFPLEdBQUcsa0JBQWtCLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFELEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSx5QkFBaUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNuRCxrQkFBa0IsRUFBRSxLQUFLLENBQUMsTUFBTTtZQUNoQyxzQkFBc0IsRUFBRSxpQkFBaUIsS0FBSyxDQUFDLElBQUksT0FBTztZQUMxRCxVQUFVLEVBQUUsS0FBSyxDQUFDLE1BQU07WUFDeEIsVUFBVSxFQUFFLEtBQUssQ0FBQyxJQUFJO1lBQ3RCLEdBQUcsS0FBSyxDQUFDLFdBQVc7U0FDckIsQ0FBQyxDQUFDLENBQUM7UUFFSixLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3hCLENBQUM7O0FBNUNILGdEQTZDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb2plY3QgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgU3RlcFNlcXVlbmNlLCBQaXBlbGluZVN0ZXAsIEF3c0Fzc3VtZVJvbGVTdGVwLCBTaW1wbGVDb21tYW5kU3RlcCB9IGZyb20gJy4uL3N0ZXBzJztcbmltcG9ydCB7IERyaWZ0RGV0ZWN0aW9uU3RhZ2VPcHRpb25zIH0gZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGludGVyZmFjZSBEcmlmdERldGVjdGlvblN0ZXBQcm9wcyBleHRlbmRzIERyaWZ0RGV0ZWN0aW9uU3RhZ2VPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRpbWVvdXQgaW4gbWludXRlcyBmb3IgZHJpZnQgZGV0ZWN0aW9uXG4gICAqIEBkZWZhdWx0IDMwXG4gICAqL1xuICByZWFkb25seSB0aW1lb3V0PzogbnVtYmVyO1xufVxuXG5leHBvcnQgY2xhc3MgRHJpZnREZXRlY3Rpb25TdGVwIGV4dGVuZHMgU3RlcFNlcXVlbmNlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgZ2VuZXJhdGVDb21tYW5kKHByb3BzOiBEcmlmdERldGVjdGlvblN0ZXBQcm9wcyk6IHN0cmluZyB7XG4gICAgY29uc3QgYXJnczogc3RyaW5nW10gPSBbXG4gICAgICAnZGV0ZWN0LWRyaWZ0JyxcbiAgICAgICctLXJlZ2lvbicsIHByb3BzLnJlZ2lvbixcbiAgICBdO1xuXG4gICAgaWYgKHByb3BzLnN0YWNrTmFtZXMgJiYgcHJvcHMuc3RhY2tOYW1lcy5sZW5ndGggPiAwKSB7XG4gICAgICBhcmdzLnB1c2goJy0tc3RhY2tzJywgcHJvcHMuc3RhY2tOYW1lcy5qb2luKCcsJykpO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy50aW1lb3V0KSB7XG4gICAgICBhcmdzLnB1c2goJy0tdGltZW91dCcsIHByb3BzLnRpbWVvdXQudG9TdHJpbmcoKSk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLmZhaWxPbkRyaWZ0ID09PSBmYWxzZSkge1xuICAgICAgYXJncy5wdXNoKCctLW5vLWZhaWwtb24tZHJpZnQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXJncy5qb2luKCcgJyk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBwcm9wczogRHJpZnREZXRlY3Rpb25TdGVwUHJvcHMpIHtcbiAgICBjb25zdCBzdGVwczogUGlwZWxpbmVTdGVwW10gPSBbXTtcblxuICAgIC8vIEFkZCBBV1MgYXNzdW1lIHJvbGUgc3RlcCBpZiByb2xlQXJuIGlzIHByb3ZpZGVkXG4gICAgaWYgKHByb3BzLnJvbGVBcm4pIHtcbiAgICAgIHN0ZXBzLnB1c2gobmV3IEF3c0Fzc3VtZVJvbGVTdGVwKHByb2plY3QsIHtcbiAgICAgICAgcm9sZUFybjogcHJvcHMucm9sZUFybixcbiAgICAgICAgcmVnaW9uOiBwcm9wcy5yZWdpb24sXG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgLy8gQWRkIGNvbW1hbmQgc3RlcCB0byBydW4gZHJpZnQgZGV0ZWN0aW9uXG4gICAgY29uc3QgY29tbWFuZCA9IERyaWZ0RGV0ZWN0aW9uU3RlcC5nZW5lcmF0ZUNvbW1hbmQocHJvcHMpO1xuICAgIHN0ZXBzLnB1c2gobmV3IFNpbXBsZUNvbW1hbmRTdGVwKHByb2plY3QsIFtjb21tYW5kXSwge1xuICAgICAgQVdTX0RFRkFVTFRfUkVHSU9OOiBwcm9wcy5yZWdpb24sXG4gICAgICBEUklGVF9ERVRFQ1RJT05fT1VUUFVUOiBgZHJpZnQtcmVzdWx0cy0ke3Byb3BzLm5hbWV9Lmpzb25gLFxuICAgICAgQVdTX1JFR0lPTjogcHJvcHMucmVnaW9uLFxuICAgICAgU1RBR0VfTkFNRTogcHJvcHMubmFtZSxcbiAgICAgIC4uLnByb3BzLmVudmlyb25tZW50LFxuICAgIH0pKTtcblxuICAgIHN1cGVyKHByb2plY3QsIHN0ZXBzKTtcbiAgfVxufSJdfQ==
package/lib/index.d.ts CHANGED
@@ -3,4 +3,5 @@ export * from './engines';
3
3
  export * from './steps';
4
4
  export * from './awscdk';
5
5
  export * from './assign-approver';
6
+ export * from './drift';
6
7
  export * from './versioning';
package/lib/index.js CHANGED
@@ -19,5 +19,6 @@ __exportStar(require("./engines"), exports);
19
19
  __exportStar(require("./steps"), exports);
20
20
  __exportStar(require("./awscdk"), exports);
21
21
  __exportStar(require("./assign-approver"), exports);
22
+ __exportStar(require("./drift"), exports);
22
23
  __exportStar(require("./versioning"), exports);
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUF5QjtBQUN6Qiw0Q0FBMEI7QUFDMUIsMENBQXdCO0FBQ3hCLDJDQUF5QjtBQUN6QixvREFBa0M7QUFDbEMsK0NBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9lbmdpbmUnO1xuZXhwb3J0ICogZnJvbSAnLi9lbmdpbmVzJztcbmV4cG9ydCAqIGZyb20gJy4vc3RlcHMnO1xuZXhwb3J0ICogZnJvbSAnLi9hd3NjZGsnO1xuZXhwb3J0ICogZnJvbSAnLi9hc3NpZ24tYXBwcm92ZXInO1xuZXhwb3J0ICogZnJvbSAnLi92ZXJzaW9uaW5nJzsiXX0=
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUF5QjtBQUN6Qiw0Q0FBMEI7QUFDMUIsMENBQXdCO0FBQ3hCLDJDQUF5QjtBQUN6QixvREFBa0M7QUFDbEMsMENBQXdCO0FBQ3hCLCtDQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZW5naW5lJztcbmV4cG9ydCAqIGZyb20gJy4vZW5naW5lcyc7XG5leHBvcnQgKiBmcm9tICcuL3N0ZXBzJztcbmV4cG9ydCAqIGZyb20gJy4vYXdzY2RrJztcbmV4cG9ydCAqIGZyb20gJy4vYXNzaWduLWFwcHJvdmVyJztcbmV4cG9ydCAqIGZyb20gJy4vZHJpZnQnO1xuZXhwb3J0ICogZnJvbSAnLi92ZXJzaW9uaW5nJztcbiJdfQ==
@@ -45,7 +45,7 @@ class DownloadArtifactStep extends step_1.PipelineStep {
45
45
  }
46
46
  exports.DownloadArtifactStep = DownloadArtifactStep;
47
47
  _a = JSII_RTTI_SYMBOL_1;
48
- DownloadArtifactStep[_a] = { fqn: "projen-pipelines.DownloadArtifactStep", version: "0.2.13" };
48
+ DownloadArtifactStep[_a] = { fqn: "projen-pipelines.DownloadArtifactStep", version: "0.2.15" };
49
49
  class UploadArtifactStep extends step_1.PipelineStep {
50
50
  constructor(project, config) {
51
51
  super(project);
@@ -78,5 +78,5 @@ class UploadArtifactStep extends step_1.PipelineStep {
78
78
  }
79
79
  exports.UploadArtifactStep = UploadArtifactStep;
80
80
  _b = JSII_RTTI_SYMBOL_1;
81
- UploadArtifactStep[_b] = { fqn: "projen-pipelines.UploadArtifactStep", version: "0.2.13" };
81
+ UploadArtifactStep[_b] = { fqn: "projen-pipelines.UploadArtifactStep", version: "0.2.15" };
82
82
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJ0aWZhY3Qtc3RlcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RlcHMvYXJ0aWZhY3Qtc3RlcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSxpQ0FBa0c7QUFPbEcsTUFBYSxvQkFBcUIsU0FBUSxtQkFBWTtJQUVwRCxZQUFZLE9BQWdCLEVBQW1CLE1BQWtDO1FBQy9FLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUQ4QixXQUFNLEdBQU4sTUFBTSxDQUE0QjtJQUVqRixDQUFDO0lBRU0sUUFBUTtRQUNiLHdEQUF3RDtRQUN4RCxPQUFPO1lBQ0wsR0FBRyxFQUFFLEVBQUU7WUFDUCxVQUFVLEVBQUUsRUFBRTtZQUNkLEtBQUssRUFBRSxFQUFFO1lBQ1QsUUFBUSxFQUFFLEVBQUU7U0FDYixDQUFDO0lBQ0osQ0FBQztJQUNNLFFBQVE7UUFDYixPQUFPO1lBQ0wsS0FBSyxFQUFFLENBQUM7b0JBQ04sSUFBSSxFQUFFLG1CQUFtQjtvQkFDekIsSUFBSSxFQUFFLDhCQUE4QjtvQkFDcEMsSUFBSSxFQUFFO3dCQUNKLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUk7d0JBQ3RCLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUk7cUJBQ3ZCO2lCQUNGLENBQUM7WUFDRixLQUFLLEVBQUUsRUFBRTtZQUNULEdBQUcsRUFBRSxFQUFFO1NBQ1IsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNJLGNBQWM7UUFDbkIsT0FBTztZQUNMLEtBQUssRUFBRSxFQUFFLEVBQUUsbUJBQW1CO1lBQzlCLFFBQVEsRUFBRSxFQUFFLEVBQUUseURBQXlEO1lBQ3ZFLEdBQUcsRUFBRSxFQUFFLEVBQUUsNEJBQTRCO1NBQ3RDLENBQUM7SUFDSixDQUFDOztBQXZDSCxvREF3Q0M7OztBQVFELE1BQWEsa0JBQW1CLFNBQVEsbUJBQVk7SUFFbEQsWUFBWSxPQUFnQixFQUFtQixNQUFnQztRQUM3RSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFEOEIsV0FBTSxHQUFOLE1BQU0sQ0FBMEI7SUFFL0UsQ0FBQztJQUVNLFFBQVE7UUFDYixPQUFPO1lBQ0wsS0FBSyxFQUFFLENBQUM7b0JBQ04sSUFBSSxFQUFFLGlCQUFpQjtvQkFDdkIsSUFBSSxFQUFFLGdDQUFnQztvQkFDdEMsSUFBSSxFQUFFO3dCQUNKLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUk7d0JBQ3RCLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUk7cUJBQ3ZCO2lCQUNGLENBQUM7WUFDRixLQUFLLEVBQUUsRUFBRTtZQUNULEdBQUcsRUFBRSxFQUFFO1NBQ1IsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNJLGNBQWM7UUFDbkIsT0FBTztZQUNMLEtBQUssRUFBRSxFQUFFLEVBQUUsbUJBQW1CO1lBQzlCLFFBQVEsRUFBRSxFQUFFLEVBQUUseURBQXlEO1lBQ3ZFLEdBQUcsRUFBRSxFQUFFLEVBQUUsNEJBQTRCO1NBQ3RDLENBQUM7SUFDSixDQUFDOztBQTlCSCxnREFnQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IENvZGVDYXRhbHlzdFN0ZXBDb25maWcsIEdpdGh1YlN0ZXBDb25maWcsIEdpdGxhYlN0ZXBDb25maWcsIFBpcGVsaW5lU3RlcCB9IGZyb20gJy4vc3RlcCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG93bmxvYWRBcnRpZmFjdFN0ZXBDb25maWcge1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIERvd25sb2FkQXJ0aWZhY3RTdGVwIGV4dGVuZHMgUGlwZWxpbmVTdGVwIHtcblxuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogRG93bmxvYWRBcnRpZmFjdFN0ZXBDb25maWcpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcbiAgfVxuXG4gIHB1YmxpYyB0b0dpdGxhYigpOiBHaXRsYWJTdGVwQ29uZmlnIHtcbiAgICAvLyBOb3RoaW5nIHRvIGRvOyBhcnRpZmFjdCBpcyBhbHJlYWR5IGRvd25sb2FkZWQgZm9yIHlvdVxuICAgIHJldHVybiB7XG4gICAgICBlbnY6IHt9LFxuICAgICAgZXh0ZW5zaW9uczogW10sXG4gICAgICBuZWVkczogW10sXG4gICAgICBjb21tYW5kczogW10sXG4gICAgfTtcbiAgfVxuICBwdWJsaWMgdG9HaXRodWIoKTogR2l0aHViU3RlcENvbmZpZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0ZXBzOiBbe1xuICAgICAgICBuYW1lOiAnRG93bmxvYWQgQXJ0aWZhY3QnLFxuICAgICAgICB1c2VzOiAnYWN0aW9ucy9kb3dubG9hZC1hcnRpZmFjdEB2NCcsXG4gICAgICAgIHdpdGg6IHtcbiAgICAgICAgICBuYW1lOiB0aGlzLmNvbmZpZy5uYW1lLFxuICAgICAgICAgIHBhdGg6IHRoaXMuY29uZmlnLnBhdGgsXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICAgIG5lZWRzOiBbXSxcbiAgICAgIGVudjoge30sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgc3RlcCBpbnRvIGEgQ29kZUNhdGFseXN0IEFjdGlvbnMgc3RlcCBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgcHVibGljIHRvQ29kZUNhdGFseXN0KCk6IENvZGVDYXRhbHlzdFN0ZXBDb25maWcge1xuICAgIHJldHVybiB7XG4gICAgICBuZWVkczogW10sIC8vIE5vIGRlcGVuZGVuY2llcy5cbiAgICAgIGNvbW1hbmRzOiBbXSwgLy8gTWFwcyBlYWNoIGNvbW1hbmQgaW50byBhIENvZGVDYXRhbHlzdCBBY3Rpb24gam9iIHN0ZXAuXG4gICAgICBlbnY6IHt9LCAvLyBObyBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gICAgfTtcbiAgfVxufVxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBsb2FkQXJ0aWZhY3RTdGVwQ29uZmlnIHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBVcGxvYWRBcnRpZmFjdFN0ZXAgZXh0ZW5kcyBQaXBlbGluZVN0ZXAge1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnOiBVcGxvYWRBcnRpZmFjdFN0ZXBDb25maWcpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcbiAgfVxuXG4gIHB1YmxpYyB0b0dpdGh1YigpOiBHaXRodWJTdGVwQ29uZmlnIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RlcHM6IFt7XG4gICAgICAgIG5hbWU6ICdVcGxvYWQgQXJ0aWZhY3QnLFxuICAgICAgICB1c2VzOiAnYWN0aW9ucy91cGxvYWQtYXJ0aWZhY3RAdjQuMy42JyxcbiAgICAgICAgd2l0aDoge1xuICAgICAgICAgIG5hbWU6IHRoaXMuY29uZmlnLm5hbWUsXG4gICAgICAgICAgcGF0aDogdGhpcy5jb25maWcucGF0aCxcbiAgICAgICAgfSxcbiAgICAgIH1dLFxuICAgICAgbmVlZHM6IFtdLFxuICAgICAgZW52OiB7fSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBzdGVwIGludG8gYSBDb2RlQ2F0YWx5c3QgQWN0aW9ucyBzdGVwIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBwdWJsaWMgdG9Db2RlQ2F0YWx5c3QoKTogQ29kZUNhdGFseXN0U3RlcENvbmZpZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5lZWRzOiBbXSwgLy8gTm8gZGVwZW5kZW5jaWVzLlxuICAgICAgY29tbWFuZHM6IFtdLCAvLyBNYXBzIGVhY2ggY29tbWFuZCBpbnRvIGEgQ29kZUNhdGFseXN0IEFjdGlvbiBqb2Igc3RlcC5cbiAgICAgIGVudjoge30sIC8vIE5vIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAgICB9O1xuICB9XG5cbn0iXX0=
@@ -62,5 +62,5 @@ class AwsAssumeRoleStep extends step_1.PipelineStep {
62
62
  }
63
63
  exports.AwsAssumeRoleStep = AwsAssumeRoleStep;
64
64
  _a = JSII_RTTI_SYMBOL_1;
65
- AwsAssumeRoleStep[_a] = { fqn: "projen-pipelines.AwsAssumeRoleStep", version: "0.2.13" };
65
+ AwsAssumeRoleStep[_a] = { fqn: "projen-pipelines.AwsAssumeRoleStep", version: "0.2.15" };
66
66
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWFzc3VtZS1yb2xlLnN0ZXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RlcHMvYXdzLWFzc3VtZS1yb2xlLnN0ZXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSx1RUFBa0U7QUFDbEUsaUNBQWtIO0FBZWxIOztHQUVHO0FBQ0gsTUFBYSxpQkFBa0IsU0FBUSxtQkFBWTtJQUVqRCxZQUFZLE9BQWdCLEVBQW1CLE1BQStCO1FBQzVFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUQ4QixXQUFNLEdBQU4sTUFBTSxDQUF5QjtJQUU5RSxDQUFDO0lBRU0sUUFBUTtRQUNiLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxJQUFJLG9EQUFvRCxDQUFDO1FBQ3BHLE9BQU87WUFDTCxHQUFHLEVBQUU7Z0JBQ0gsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRTthQUNoRTtZQUNELFFBQVEsRUFBRTtnQkFDUiw0SUFBNEksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLDBCQUEwQixXQUFXLCtJQUErSTthQUNwVjtZQUNELFVBQVUsRUFBRSxFQUFFO1lBQ2QsS0FBSyxFQUFFLEVBQUU7U0FDVixDQUFDO0lBQ0osQ0FBQztJQUVNLFFBQVE7UUFDYixPQUFPO1lBQ0wsS0FBSyxFQUFFLENBQUM7b0JBQ04sSUFBSSxFQUFFLGlCQUFpQjtvQkFDdkIsSUFBSSxFQUFFLDBDQUEwQztvQkFDaEQsSUFBSSxFQUFFO3dCQUNKLGdCQUFnQixFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTzt3QkFDckMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLElBQUksY0FBYzt3QkFDOUQsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFO3FCQUM3RjtpQkFDRixDQUFDO1lBQ0YsS0FBSyxFQUFFLEVBQUU7WUFDVCxHQUFHLEVBQUUsRUFBRTtZQUNQLFdBQVcsRUFBRTtnQkFDWCxPQUFPLEVBQUUsK0JBQWEsQ0FBQyxLQUFLO2FBQzdCO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTSxNQUFNO1FBQ1gsT0FBTztZQUNMLFFBQVEsRUFBRTtnQkFDUixpQ0FBaUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLGVBQWUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksV0FBVyxHQUFHO2FBQ3hHO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTSxjQUFjO1FBQ25CLGdDQUFnQztRQUNoQyxPQUFPO1lBQ0wsUUFBUSxFQUFFLEVBQUU7WUFDWixHQUFHLEVBQUUsRUFBRTtZQUNQLEtBQUssRUFBRSxFQUFFO1NBQ1YsQ0FBQztJQUNKLENBQUM7O0FBdERILDhDQXdEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb2plY3QgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgSm9iUGVybWlzc2lvbiB9IGZyb20gJ3Byb2plbi9saWIvZ2l0aHViL3dvcmtmbG93cy1tb2RlbCc7XG5pbXBvcnQgeyBCYXNoU3RlcENvbmZpZywgQ29kZUNhdGFseXN0U3RlcENvbmZpZywgR2l0aHViU3RlcENvbmZpZywgR2l0bGFiU3RlcENvbmZpZywgUGlwZWxpbmVTdGVwIH0gZnJvbSAnLi9zdGVwJztcblxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIGFuIEFXUyBBc3N1bWVSb2xlU3RlcFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF3c0Fzc3VtZVJvbGVTdGVwQ29uZmlnIHtcbiAgLyoqIFRoZSBBUk4gb2YgdGhlIHJvbGUgdG8gYXNzdW1lICovXG4gIHJlYWRvbmx5IHJvbGVBcm46IHN0cmluZztcbiAgLyoqIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBhc3N1bWVkIHJvbGUgc2Vzc2lvbiAqL1xuICByZWFkb25seSBzZXNzaW9uTmFtZT86IHN0cmluZztcbiAgLyoqIFRoZSBBV1MgcmVnaW9uIHRoYXQgc2hvdWxkIGJlIHNldCAqL1xuICByZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBzdGVwIHRoYXQgYXNzdW1lcyBhIHJvbGUgaW4gQVdTXG4gKi9cbmV4cG9ydCBjbGFzcyBBd3NBc3N1bWVSb2xlU3RlcCBleHRlbmRzIFBpcGVsaW5lU3RlcCB7XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IEF3c0Fzc3VtZVJvbGVTdGVwQ29uZmlnKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG4gIH1cblxuICBwdWJsaWMgdG9HaXRsYWIoKTogR2l0bGFiU3RlcENvbmZpZyB7XG4gICAgY29uc3Qgc2Vzc2lvbk5hbWUgPSB0aGlzLmNvbmZpZy5zZXNzaW9uTmFtZSA/PyAnR2l0TGFiUnVubmVyLVxcJHtDSV9QUk9KRUNUX0lEfS1cXCR7Q0lfUElQRUxJTkVfSUR9fSc7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVudjoge1xuICAgICAgICAuLi50aGlzLmNvbmZpZy5yZWdpb24gPyB7IEFXU19SRUdJT046IHRoaXMuY29uZmlnLnJlZ2lvbiB9IDoge30sXG4gICAgICB9LFxuICAgICAgY29tbWFuZHM6IFtcbiAgICAgICAgYGV4cG9ydCAkKHByaW50ZiBcIkFXU19BQ0NFU1NfS0VZX0lEPSVzIEFXU19TRUNSRVRfQUNDRVNTX0tFWT0lcyBBV1NfU0VTU0lPTl9UT0tFTj0lc1wiICQoYXdzIHN0cyBhc3N1bWUtcm9sZS13aXRoLXdlYi1pZGVudGl0eSAtLXJvbGUtYXJuIFwiJHt0aGlzLmNvbmZpZy5yb2xlQXJufVwiIC0tcm9sZS1zZXNzaW9uLW5hbWUgXCIke3Nlc3Npb25OYW1lfVwiIC0td2ViLWlkZW50aXR5LXRva2VuIFxcJHtBV1NfVE9LRU59IC0tZHVyYXRpb24tc2Vjb25kcyAzNjAwIC0tcXVlcnkgJ0NyZWRlbnRpYWxzLltBY2Nlc3NLZXlJZCxTZWNyZXRBY2Nlc3NLZXksU2Vzc2lvblRva2VuXScgLS1vdXRwdXQgdGV4dCkpYCxcbiAgICAgIF0sXG4gICAgICBleHRlbnNpb25zOiBbXSxcbiAgICAgIG5lZWRzOiBbXSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHRvR2l0aHViKCk6IEdpdGh1YlN0ZXBDb25maWcge1xuICAgIHJldHVybiB7XG4gICAgICBzdGVwczogW3tcbiAgICAgICAgbmFtZTogJ0FXUyBDcmVkZW50aWFscycsXG4gICAgICAgIHVzZXM6ICdhd3MtYWN0aW9ucy9jb25maWd1cmUtYXdzLWNyZWRlbnRpYWxzQHY0JyxcbiAgICAgICAgd2l0aDoge1xuICAgICAgICAgICdyb2xlLXRvLWFzc3VtZSc6IHRoaXMuY29uZmlnLnJvbGVBcm4sXG4gICAgICAgICAgJ3JvbGUtc2Vzc2lvbi1uYW1lJzogdGhpcy5jb25maWcuc2Vzc2lvbk5hbWUgPz8gJ0dpdEh1YkFjdGlvbicsXG4gICAgICAgICAgLi4udGhpcy5jb25maWcucmVnaW9uID8geyAnYXdzLXJlZ2lvbic6IHRoaXMuY29uZmlnLnJlZ2lvbiB9IDogeyAnYXdzLXJlZ2lvbic6ICd1cy1lYXN0LTEnIH0sXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICAgIG5lZWRzOiBbXSxcbiAgICAgIGVudjoge30sXG4gICAgICBwZXJtaXNzaW9uczoge1xuICAgICAgICBpZFRva2VuOiBKb2JQZXJtaXNzaW9uLldSSVRFLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHRvQmFzaCgpOiBCYXNoU3RlcENvbmZpZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbW1hbmRzOiBbXG4gICAgICAgIGBlY2hvIFwiTG9naW4gdG8gQVdTIHVzaW5nIHJvbGUgJHt0aGlzLmNvbmZpZy5yb2xlQXJufSBmb3IgcmVnaW9uICR7dGhpcy5jb25maWcucmVnaW9uID8/ICd1bmRlZmluZWQnfVwiYCxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyB0b0NvZGVDYXRhbHlzdCgpOiBDb2RlQ2F0YWx5c3RTdGVwQ29uZmlnIHtcbiAgICAvL0ZJWE1FIHVzZSBDQyBlbnZpcm9ubWVudHMgaGVyZVxuICAgIHJldHVybiB7XG4gICAgICBjb21tYW5kczogW10sXG4gICAgICBlbnY6IHt9LFxuICAgICAgbmVlZHM6IFtdLFxuICAgIH07XG4gIH1cblxufSJdfQ==
@@ -8,17 +8,56 @@ export interface GithubPackagesLoginStepOptions {
8
8
  */
9
9
  readonly write?: boolean;
10
10
  }
11
+ /**
12
+ * Step to set the GITHUB_TOKEN environment variable from a secret.
13
+ *
14
+ * Only supported for GitHub as it is GitHub specific.
15
+ */
11
16
  export declare class GithubPackagesLoginStep extends PipelineStep {
12
17
  private options;
13
18
  constructor(project: Project, options: GithubPackagesLoginStepOptions);
14
19
  toGithub(): GithubStepConfig;
15
20
  }
21
+ export interface NpmSecretStepOptions {
22
+ /**
23
+ * Name of the secret to set for the environment variable NPM_TOKEN.
24
+ *
25
+ * @default 'NPM_TOKEN'
26
+ */
27
+ readonly secretName?: string;
28
+ }
29
+ /**
30
+ * Step to set the NPM_TOKEN environment variable from a secret.
31
+ *
32
+ * Currently only supported and needed for GitHub.
33
+ * Gitlab sets the NPM_TOKEN environment variable automatically from the project's settings.
34
+ */
35
+ export declare class NpmSecretStep extends PipelineStep {
36
+ private options;
37
+ constructor(project: Project, options: NpmSecretStepOptions);
38
+ toGithub(): GithubStepConfig;
39
+ }
40
+ /**
41
+ * Options for the CodeArtifactLoginStep.
42
+ */
16
43
  export interface CodeArtifactLoginStepOptions {
17
44
  readonly ownerAccount: string;
18
45
  readonly region: string;
19
46
  readonly domainName: string;
20
47
  readonly role: string;
48
+ /**
49
+ * The environment variable name to set.
50
+ *
51
+ * @default 'CODEARTIFACT_AUTH_TOKEN'
52
+ */
53
+ readonly envVariableName?: string;
21
54
  }
55
+ /**
56
+ * Step to login to CodeArtifact.
57
+ *
58
+ * The environment variable name can be configured to avoid conflicts with other environment variables.
59
+ * The default is CODEARTIFACT_AUTH_TOKEN.
60
+ */
22
61
  export declare class CodeArtifactLoginStep extends StepSequence {
23
62
  protected options: CodeArtifactLoginStepOptions;
24
63
  constructor(project: Project, options: CodeArtifactLoginStepOptions);
@@ -1,12 +1,17 @@
1
1
  "use strict";
2
- var _a, _b;
2
+ var _a, _b, _c;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.CodeArtifactLoginStep = exports.GithubPackagesLoginStep = void 0;
4
+ exports.CodeArtifactLoginStep = exports.NpmSecretStep = exports.GithubPackagesLoginStep = void 0;
5
5
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
6
  const workflows_model_1 = require("projen/lib/github/workflows-model");
7
7
  const aws_assume_role_step_1 = require("./aws-assume-role.step");
8
8
  const set_env_step_1 = require("./set-env.step");
9
9
  const step_1 = require("./step");
10
+ /**
11
+ * Step to set the GITHUB_TOKEN environment variable from a secret.
12
+ *
13
+ * Only supported for GitHub as it is GitHub specific.
14
+ */
10
15
  class GithubPackagesLoginStep extends step_1.PipelineStep {
11
16
  constructor(project, options) {
12
17
  super(project);
@@ -25,13 +30,44 @@ class GithubPackagesLoginStep extends step_1.PipelineStep {
25
30
  }
26
31
  exports.GithubPackagesLoginStep = GithubPackagesLoginStep;
27
32
  _a = JSII_RTTI_SYMBOL_1;
28
- GithubPackagesLoginStep[_a] = { fqn: "projen-pipelines.GithubPackagesLoginStep", version: "0.2.13" };
33
+ GithubPackagesLoginStep[_a] = { fqn: "projen-pipelines.GithubPackagesLoginStep", version: "0.2.15" };
34
+ /**
35
+ * Step to set the NPM_TOKEN environment variable from a secret.
36
+ *
37
+ * Currently only supported and needed for GitHub.
38
+ * Gitlab sets the NPM_TOKEN environment variable automatically from the project's settings.
39
+ */
40
+ class NpmSecretStep extends step_1.PipelineStep {
41
+ constructor(project, options) {
42
+ super(project);
43
+ this.options = options;
44
+ }
45
+ toGithub() {
46
+ return {
47
+ env: {},
48
+ needs: [],
49
+ steps: [{
50
+ run: `echo "NPM_TOKEN=\${{ secrets.${this.options.secretName ?? 'NPM_TOKEN'} }}" >> $GITHUB_ENV`,
51
+ }],
52
+ permissions: {},
53
+ };
54
+ }
55
+ }
56
+ exports.NpmSecretStep = NpmSecretStep;
57
+ _b = JSII_RTTI_SYMBOL_1;
58
+ NpmSecretStep[_b] = { fqn: "projen-pipelines.NpmSecretStep", version: "0.2.15" };
59
+ /**
60
+ * Step to login to CodeArtifact.
61
+ *
62
+ * The environment variable name can be configured to avoid conflicts with other environment variables.
63
+ * The default is CODEARTIFACT_AUTH_TOKEN.
64
+ */
29
65
  class CodeArtifactLoginStep extends step_1.StepSequence {
30
66
  constructor(project, options) {
31
67
  super(project, [
32
68
  new aws_assume_role_step_1.AwsAssumeRoleStep(project, { roleArn: options.role, sessionName: 'CodeArtifact' }),
33
69
  new set_env_step_1.SetEnvStep(project, {
34
- name: 'CODEARTIFACT_AUTH_TOKEN',
70
+ name: options.envVariableName ?? 'CODEARTIFACT_AUTH_TOKEN',
35
71
  command: `aws codeartifact get-authorization-token --domain ${options.domainName} --region ${options.region} --domain-owner ${options.ownerAccount} --query authorizationToken --output text`,
36
72
  }),
37
73
  ]);
@@ -39,6 +75,6 @@ class CodeArtifactLoginStep extends step_1.StepSequence {
39
75
  }
40
76
  }
41
77
  exports.CodeArtifactLoginStep = CodeArtifactLoginStep;
42
- _b = JSII_RTTI_SYMBOL_1;
43
- CodeArtifactLoginStep[_b] = { fqn: "projen-pipelines.CodeArtifactLoginStep", version: "0.2.13" };
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cmllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGVwcy9yZWdpc3RyaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsdUVBQWtFO0FBQ2xFLGlFQUEyRDtBQUMzRCxpREFBNEM7QUFDNUMsaUNBQXNFO0FBV3RFLE1BQWEsdUJBQXdCLFNBQVEsbUJBQVk7SUFFdkQsWUFBWSxPQUFnQixFQUFVLE9BQXVDO1FBQzNFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQURxQixZQUFPLEdBQVAsT0FBTyxDQUFnQztJQUU3RSxDQUFDO0lBRU0sUUFBUTtRQUNiLE9BQU87WUFDTCxHQUFHLEVBQUUsRUFBRTtZQUNQLEtBQUssRUFBRSxFQUFFO1lBQ1QsS0FBSyxFQUFFLENBQUM7b0JBQ04sR0FBRyxFQUFFLGdFQUFnRTtpQkFDdEUsQ0FBQztZQUNGLFdBQVcsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsK0JBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLCtCQUFhLENBQUMsSUFBSSxFQUFFO1NBQ3pGLENBQUM7SUFDSixDQUFDOztBQWZILDBEQWdCQzs7O0FBU0QsTUFBYSxxQkFBc0IsU0FBUSxtQkFBWTtJQUNyRCxZQUFZLE9BQWdCLEVBQVksT0FBcUM7UUFDM0UsS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNiLElBQUksd0NBQWlCLENBQUMsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxDQUFDO1lBQ3RGLElBQUkseUJBQVUsQ0FBQyxPQUFPLEVBQUU7Z0JBQ3RCLElBQUksRUFBRSx5QkFBeUI7Z0JBQy9CLE9BQU8sRUFBRSxxREFBcUQsT0FBTyxDQUFDLFVBQVUsYUFBYSxPQUFPLENBQUMsTUFBTSxtQkFBbUIsT0FBTyxDQUFDLFlBQVksMkNBQTJDO2FBQzlMLENBQUM7U0FDSCxDQUFDLENBQUM7UUFQbUMsWUFBTyxHQUFQLE9BQU8sQ0FBOEI7SUFRN0UsQ0FBQzs7QUFUSCxzREFXQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb2plY3QgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgSm9iUGVybWlzc2lvbiB9IGZyb20gJ3Byb2plbi9saWIvZ2l0aHViL3dvcmtmbG93cy1tb2RlbCc7XG5pbXBvcnQgeyBBd3NBc3N1bWVSb2xlU3RlcCB9IGZyb20gJy4vYXdzLWFzc3VtZS1yb2xlLnN0ZXAnO1xuaW1wb3J0IHsgU2V0RW52U3RlcCB9IGZyb20gJy4vc2V0LWVudi5zdGVwJztcbmltcG9ydCB7IEdpdGh1YlN0ZXBDb25maWcsIFBpcGVsaW5lU3RlcCwgU3RlcFNlcXVlbmNlIH0gZnJvbSAnLi9zdGVwJztcblxuZXhwb3J0IGludGVyZmFjZSBHaXRodWJQYWNrYWdlc0xvZ2luU3RlcE9wdGlvbnMge1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gZ3JhbnQgdGhlIHN0ZXAgd3JpdGUgcGVybWlzc2lvbnMgdG8gdGhlIHJlZ2lzdHJ5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgd3JpdGU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgR2l0aHViUGFja2FnZXNMb2dpblN0ZXAgZXh0ZW5kcyBQaXBlbGluZVN0ZXAge1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIHByaXZhdGUgb3B0aW9uczogR2l0aHViUGFja2FnZXNMb2dpblN0ZXBPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG4gIH1cblxuICBwdWJsaWMgdG9HaXRodWIoKTogR2l0aHViU3RlcENvbmZpZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVudjoge30sXG4gICAgICBuZWVkczogW10sXG4gICAgICBzdGVwczogW3tcbiAgICAgICAgcnVuOiAnZWNobyBcIkdJVEhVQl9UT0tFTj0ke3sgc2VjcmV0cy5HSVRIVUJfVE9LRU4gfX1cIiA+PiAkR0lUSFVCX0VOVicsXG4gICAgICB9XSxcbiAgICAgIHBlcm1pc3Npb25zOiB7IHBhY2thZ2VzOiB0aGlzLm9wdGlvbnMud3JpdGUgPyBKb2JQZXJtaXNzaW9uLldSSVRFIDogSm9iUGVybWlzc2lvbi5SRUFEIH0sXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvZGVBcnRpZmFjdExvZ2luU3RlcE9wdGlvbnMge1xuICByZWFkb25seSBvd25lckFjY291bnQ6IHN0cmluZztcbiAgcmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRvbWFpbk5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgcm9sZTogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQ29kZUFydGlmYWN0TG9naW5TdGVwIGV4dGVuZHMgU3RlcFNlcXVlbmNlIHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgcHJvdGVjdGVkIG9wdGlvbnM6IENvZGVBcnRpZmFjdExvZ2luU3RlcE9wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0LCBbXG4gICAgICBuZXcgQXdzQXNzdW1lUm9sZVN0ZXAocHJvamVjdCwgeyByb2xlQXJuOiBvcHRpb25zLnJvbGUsIHNlc3Npb25OYW1lOiAnQ29kZUFydGlmYWN0JyB9KSxcbiAgICAgIG5ldyBTZXRFbnZTdGVwKHByb2plY3QsIHtcbiAgICAgICAgbmFtZTogJ0NPREVBUlRJRkFDVF9BVVRIX1RPS0VOJyxcbiAgICAgICAgY29tbWFuZDogYGF3cyBjb2RlYXJ0aWZhY3QgZ2V0LWF1dGhvcml6YXRpb24tdG9rZW4gLS1kb21haW4gJHtvcHRpb25zLmRvbWFpbk5hbWV9IC0tcmVnaW9uICR7b3B0aW9ucy5yZWdpb259IC0tZG9tYWluLW93bmVyICR7b3B0aW9ucy5vd25lckFjY291bnR9IC0tcXVlcnkgYXV0aG9yaXphdGlvblRva2VuIC0tb3V0cHV0IHRleHRgLFxuICAgICAgfSksXG4gICAgXSk7XG4gIH1cblxufSJdfQ==
78
+ _c = JSII_RTTI_SYMBOL_1;
79
+ CodeArtifactLoginStep[_c] = { fqn: "projen-pipelines.CodeArtifactLoginStep", version: "0.2.15" };
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cmllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGVwcy9yZWdpc3RyaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsdUVBQWtFO0FBQ2xFLGlFQUEyRDtBQUMzRCxpREFBNEM7QUFDNUMsaUNBQXNFO0FBV3RFOzs7O0dBSUc7QUFDSCxNQUFhLHVCQUF3QixTQUFRLG1CQUFZO0lBRXZELFlBQVksT0FBZ0IsRUFBVSxPQUF1QztRQUMzRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFEcUIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0M7SUFFN0UsQ0FBQztJQUVNLFFBQVE7UUFDYixPQUFPO1lBQ0wsR0FBRyxFQUFFLEVBQUU7WUFDUCxLQUFLLEVBQUUsRUFBRTtZQUNULEtBQUssRUFBRSxDQUFDO29CQUNOLEdBQUcsRUFBRSxnRUFBZ0U7aUJBQ3RFLENBQUM7WUFDRixXQUFXLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLCtCQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQywrQkFBYSxDQUFDLElBQUksRUFBRTtTQUN6RixDQUFDO0lBQ0osQ0FBQzs7QUFmSCwwREFnQkM7OztBQVdEOzs7OztHQUtHO0FBQ0gsTUFBYSxhQUFjLFNBQVEsbUJBQVk7SUFFN0MsWUFBWSxPQUFnQixFQUFVLE9BQTZCO1FBQ2pFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQURxQixZQUFPLEdBQVAsT0FBTyxDQUFzQjtJQUVuRSxDQUFDO0lBRU0sUUFBUTtRQUNiLE9BQU87WUFDTCxHQUFHLEVBQUUsRUFBRTtZQUNQLEtBQUssRUFBRSxFQUFFO1lBQ1QsS0FBSyxFQUFFLENBQUM7b0JBQ04sR0FBRyxFQUFFLGdDQUFnQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBSSxXQUFXLHFCQUFxQjtpQkFDakcsQ0FBQztZQUNGLFdBQVcsRUFBRSxFQUFFO1NBQ2hCLENBQUM7SUFDSixDQUFDOztBQWZILHNDQWdCQzs7O0FBbUJEOzs7OztHQUtHO0FBQ0gsTUFBYSxxQkFBc0IsU0FBUSxtQkFBWTtJQUNyRCxZQUFZLE9BQWdCLEVBQVksT0FBcUM7UUFDM0UsS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNiLElBQUksd0NBQWlCLENBQUMsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxDQUFDO1lBQ3RGLElBQUkseUJBQVUsQ0FBQyxPQUFPLEVBQUU7Z0JBQ3RCLElBQUksRUFBRSxPQUFPLENBQUMsZUFBZSxJQUFJLHlCQUF5QjtnQkFDMUQsT0FBTyxFQUFFLHFEQUFxRCxPQUFPLENBQUMsVUFBVSxhQUFhLE9BQU8sQ0FBQyxNQUFNLG1CQUFtQixPQUFPLENBQUMsWUFBWSwyQ0FBMkM7YUFDOUwsQ0FBQztTQUNILENBQUMsQ0FBQztRQVBtQyxZQUFPLEdBQVAsT0FBTyxDQUE4QjtJQVE3RSxDQUFDOztBQVRILHNEQVdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJ3Byb2plbic7XG5pbXBvcnQgeyBKb2JQZXJtaXNzaW9uIH0gZnJvbSAncHJvamVuL2xpYi9naXRodWIvd29ya2Zsb3dzLW1vZGVsJztcbmltcG9ydCB7IEF3c0Fzc3VtZVJvbGVTdGVwIH0gZnJvbSAnLi9hd3MtYXNzdW1lLXJvbGUuc3RlcCc7XG5pbXBvcnQgeyBTZXRFbnZTdGVwIH0gZnJvbSAnLi9zZXQtZW52LnN0ZXAnO1xuaW1wb3J0IHsgR2l0aHViU3RlcENvbmZpZywgUGlwZWxpbmVTdGVwLCBTdGVwU2VxdWVuY2UgfSBmcm9tICcuL3N0ZXAnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdpdGh1YlBhY2thZ2VzTG9naW5TdGVwT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBncmFudCB0aGUgc3RlcCB3cml0ZSBwZXJtaXNzaW9ucyB0byB0aGUgcmVnaXN0cnkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSB3cml0ZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogU3RlcCB0byBzZXQgdGhlIEdJVEhVQl9UT0tFTiBlbnZpcm9ubWVudCB2YXJpYWJsZSBmcm9tIGEgc2VjcmV0LlxuICpcbiAqIE9ubHkgc3VwcG9ydGVkIGZvciBHaXRIdWIgYXMgaXQgaXMgR2l0SHViIHNwZWNpZmljLlxuICovXG5leHBvcnQgY2xhc3MgR2l0aHViUGFja2FnZXNMb2dpblN0ZXAgZXh0ZW5kcyBQaXBlbGluZVN0ZXAge1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIHByaXZhdGUgb3B0aW9uczogR2l0aHViUGFja2FnZXNMb2dpblN0ZXBPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG4gIH1cblxuICBwdWJsaWMgdG9HaXRodWIoKTogR2l0aHViU3RlcENvbmZpZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVudjoge30sXG4gICAgICBuZWVkczogW10sXG4gICAgICBzdGVwczogW3tcbiAgICAgICAgcnVuOiAnZWNobyBcIkdJVEhVQl9UT0tFTj0ke3sgc2VjcmV0cy5HSVRIVUJfVE9LRU4gfX1cIiA+PiAkR0lUSFVCX0VOVicsXG4gICAgICB9XSxcbiAgICAgIHBlcm1pc3Npb25zOiB7IHBhY2thZ2VzOiB0aGlzLm9wdGlvbnMud3JpdGUgPyBKb2JQZXJtaXNzaW9uLldSSVRFIDogSm9iUGVybWlzc2lvbi5SRUFEIH0sXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5wbVNlY3JldFN0ZXBPcHRpb25zIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIHNlY3JldCB0byBzZXQgZm9yIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBOUE1fVE9LRU4uXG4gICAqXG4gICAqIEBkZWZhdWx0ICdOUE1fVE9LRU4nXG4gICAqL1xuICByZWFkb25seSBzZWNyZXROYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFN0ZXAgdG8gc2V0IHRoZSBOUE1fVE9LRU4gZW52aXJvbm1lbnQgdmFyaWFibGUgZnJvbSBhIHNlY3JldC5cbiAqXG4gKiBDdXJyZW50bHkgb25seSBzdXBwb3J0ZWQgYW5kIG5lZWRlZCBmb3IgR2l0SHViLlxuICogR2l0bGFiIHNldHMgdGhlIE5QTV9UT0tFTiBlbnZpcm9ubWVudCB2YXJpYWJsZSBhdXRvbWF0aWNhbGx5IGZyb20gdGhlIHByb2plY3QncyBzZXR0aW5ncy5cbiAqL1xuZXhwb3J0IGNsYXNzIE5wbVNlY3JldFN0ZXAgZXh0ZW5kcyBQaXBlbGluZVN0ZXAge1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIHByaXZhdGUgb3B0aW9uczogTnBtU2VjcmV0U3RlcE9wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcbiAgfVxuXG4gIHB1YmxpYyB0b0dpdGh1YigpOiBHaXRodWJTdGVwQ29uZmlnIHtcbiAgICByZXR1cm4ge1xuICAgICAgZW52OiB7fSxcbiAgICAgIG5lZWRzOiBbXSxcbiAgICAgIHN0ZXBzOiBbe1xuICAgICAgICBydW46IGBlY2hvIFwiTlBNX1RPS0VOPVxcJHt7IHNlY3JldHMuJHt0aGlzLm9wdGlvbnMuc2VjcmV0TmFtZSA/PyAnTlBNX1RPS0VOJ30gfX1cIiA+PiAkR0lUSFVCX0VOVmAsXG4gICAgICB9XSxcbiAgICAgIHBlcm1pc3Npb25zOiB7fSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIENvZGVBcnRpZmFjdExvZ2luU3RlcC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb2RlQXJ0aWZhY3RMb2dpblN0ZXBPcHRpb25zIHtcbiAgcmVhZG9ubHkgb3duZXJBY2NvdW50OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuICByZWFkb25seSBkb21haW5OYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHJvbGU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWUgdG8gc2V0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAnQ09ERUFSVElGQUNUX0FVVEhfVE9LRU4nXG4gICAqL1xuICByZWFkb25seSBlbnZWYXJpYWJsZU5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogU3RlcCB0byBsb2dpbiB0byBDb2RlQXJ0aWZhY3QuXG4gKlxuICogVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWUgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggb3RoZXIgZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICogVGhlIGRlZmF1bHQgaXMgQ09ERUFSVElGQUNUX0FVVEhfVE9LRU4uXG4gKi9cbmV4cG9ydCBjbGFzcyBDb2RlQXJ0aWZhY3RMb2dpblN0ZXAgZXh0ZW5kcyBTdGVwU2VxdWVuY2Uge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBwcm90ZWN0ZWQgb3B0aW9uczogQ29kZUFydGlmYWN0TG9naW5TdGVwT3B0aW9ucykge1xuICAgIHN1cGVyKHByb2plY3QsIFtcbiAgICAgIG5ldyBBd3NBc3N1bWVSb2xlU3RlcChwcm9qZWN0LCB7IHJvbGVBcm46IG9wdGlvbnMucm9sZSwgc2Vzc2lvbk5hbWU6ICdDb2RlQXJ0aWZhY3QnIH0pLFxuICAgICAgbmV3IFNldEVudlN0ZXAocHJvamVjdCwge1xuICAgICAgICBuYW1lOiBvcHRpb25zLmVudlZhcmlhYmxlTmFtZSA/PyAnQ09ERUFSVElGQUNUX0FVVEhfVE9LRU4nLFxuICAgICAgICBjb21tYW5kOiBgYXdzIGNvZGVhcnRpZmFjdCBnZXQtYXV0aG9yaXphdGlvbi10b2tlbiAtLWRvbWFpbiAke29wdGlvbnMuZG9tYWluTmFtZX0gLS1yZWdpb24gJHtvcHRpb25zLnJlZ2lvbn0gLS1kb21haW4tb3duZXIgJHtvcHRpb25zLm93bmVyQWNjb3VudH0gLS1xdWVyeSBhdXRob3JpemF0aW9uVG9rZW4gLS1vdXRwdXQgdGV4dGAsXG4gICAgICB9KSxcbiAgICBdKTtcbiAgfVxuXG59Il19
@@ -83,12 +83,17 @@ export declare abstract class PipelineStep {
83
83
  */
84
84
  export declare class SimpleCommandStep extends PipelineStep {
85
85
  protected commands: string[];
86
+ protected env: {
87
+ [key: string]: string;
88
+ };
86
89
  /**
87
90
  * Constructs a simple command step with a specified set of commands.
88
91
  * @param project - The projen project reference.
89
92
  * @param commands - Shell commands to execute.
90
93
  */
91
- constructor(project: Project, commands: string[]);
94
+ constructor(project: Project, commands: string[], env?: {
95
+ [key: string]: string;
96
+ });
92
97
  /**
93
98
  * Converts the step into a GitLab CI configuration.
94
99
  */