@payfit/nx-core 4.61.0 → 4.61.1-ephemeral-feature-tf-modules.0
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/README.md +40 -1
- package/dist/src/index.js +76 -0
- package/dist/src/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
# @payfit/nx-core
|
|
2
2
|
|
|
3
|
-
A Nx plugin that simplifies Docker image, Helm chart, lambda
|
|
3
|
+
A Nx plugin that simplifies Docker image, Helm chart, lambda, front-end app, and OpenTofu/Terraform module packaging and releases using Nx's versionActions feature.
|
|
4
4
|
|
|
5
5
|
## Features
|
|
6
6
|
|
|
7
7
|
- Automated Docker image building and publishing
|
|
8
8
|
- Helm chart packaging and versioning
|
|
9
9
|
- AWS Lambda function packaging and deployment
|
|
10
|
+
- OpenTofu/Terraform module formatting and linting
|
|
10
11
|
- Transparent version management through Nx's versionActions
|
|
11
12
|
- Seamless integration with your Nx workspace
|
|
12
13
|
- Auto setup using init generator to update your repository at plugin installation
|
|
@@ -106,6 +107,39 @@ If `lambdaOciRepository` is not specified, the plugin will fall back to the valu
|
|
|
106
107
|
|
|
107
108
|
The plugin automatically detects Lambda functions by looking for a `lambdaFunctions` metadata in your project root. When this metadata is present, the plugin will configure the necessary targets for packaging and deploying your Lambda function.
|
|
108
109
|
|
|
110
|
+
### OpenTofu/Terraform Module Management
|
|
111
|
+
|
|
112
|
+
The plugin provides automatic formatting and linting for OpenTofu/Terraform modules:
|
|
113
|
+
|
|
114
|
+
- Running `tofu fmt` to format code
|
|
115
|
+
- Running `tflint` for linting
|
|
116
|
+
- Running `tofu validate` for validation
|
|
117
|
+
- Automatic version management for modules
|
|
118
|
+
|
|
119
|
+
#### OpenTofu/Terraform Detection
|
|
120
|
+
|
|
121
|
+
The plugin automatically detects OpenTofu/Terraform modules by looking for both:
|
|
122
|
+
|
|
123
|
+
- A `.spacelift/config.yml` file
|
|
124
|
+
- A `main.tf` file in your project root
|
|
125
|
+
|
|
126
|
+
When these files are present, the plugin will configure the following targets:
|
|
127
|
+
|
|
128
|
+
- `tofu-format`: Format OpenTofu code (with `check` and `write` configurations)
|
|
129
|
+
- `lint`: Lint and validate OpenTofu code using tflint and tofu validate
|
|
130
|
+
|
|
131
|
+
#### TFLint Configuration
|
|
132
|
+
|
|
133
|
+
By default, the plugin looks for a `.tflint.hcl` file at the workspace root. You can customize this location by adding a `tflintConfigFile` metadata to your project's `project.json`:
|
|
134
|
+
|
|
135
|
+
```json
|
|
136
|
+
{
|
|
137
|
+
"metadata": {
|
|
138
|
+
"tflintConfigFile": "path/to/custom/.tflint.hcl"
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
```
|
|
142
|
+
|
|
109
143
|
## Automatic Release Target Inference
|
|
110
144
|
|
|
111
145
|
The plugin automatically infers release targets for your projects based on the presence of deployment files:
|
|
@@ -125,6 +159,11 @@ The plugin automatically infers release targets for your projects based on the p
|
|
|
125
159
|
- Set up S3 bucket uploading for the Lambda artifact
|
|
126
160
|
- Create and push an empty OCI artifact to ECR for versioning
|
|
127
161
|
|
|
162
|
+
4. **OpenTofu/Terraform Module Release**: If both `.spacelift/config.yml` and `main.tf` exist in your project root, the plugin will automatically:
|
|
163
|
+
- Configure OpenTofu code formatting with `tofu fmt`
|
|
164
|
+
- Set up linting with `tflint` and validation with `tofu validate`
|
|
165
|
+
- Handle version management for Terraform modules
|
|
166
|
+
|
|
128
167
|
The inference of the `nx-release-publish` target is handled through Nx's plugin system, which automatically adds the necessary targets and version actions to your project configuration. You don't need to manually configure these targets.
|
|
129
168
|
|
|
130
169
|
---
|
package/dist/src/index.js
CHANGED
|
@@ -24,6 +24,8 @@ async function createNodesInternal(configFilePath, options, context) {
|
|
|
24
24
|
projectConfiguration.metadata['lambdaFunctions']);
|
|
25
25
|
const isFrontendProject = !!(projectConfiguration.metadata &&
|
|
26
26
|
projectConfiguration.metadata['frontendArtifactsBucketName']);
|
|
27
|
+
const isTfModuleProject = (0, fs_1.existsSync)((0, path_1.join)(projectRoot, '.spacelift/config.yml')) &&
|
|
28
|
+
(0, fs_1.existsSync)((0, path_1.join)(projectRoot, 'main.tf'));
|
|
27
29
|
const targets = {};
|
|
28
30
|
const ecrRepository = isDockerProject
|
|
29
31
|
? projectConfiguration.metadata['ecrRepository']
|
|
@@ -82,6 +84,12 @@ async function createNodesInternal(configFilePath, options, context) {
|
|
|
82
84
|
? projectConfiguration.metadata &&
|
|
83
85
|
projectConfiguration.metadata['frontendOciRepository']
|
|
84
86
|
: undefined;
|
|
87
|
+
const tflintConfigFile = isTfModuleProject
|
|
88
|
+
? projectConfiguration.metadata &&
|
|
89
|
+
projectConfiguration.metadata['tflintConfigFile']
|
|
90
|
+
? projectConfiguration.metadata['tflintConfigFile']
|
|
91
|
+
: (0, path_1.join)((0, devkit_1.offsetFromRoot)(projectRoot), '.tflint.hcl')
|
|
92
|
+
: undefined;
|
|
85
93
|
const isRootProject = projectRoot === '.';
|
|
86
94
|
let release = null;
|
|
87
95
|
if (isHelmProject ||
|
|
@@ -163,6 +171,74 @@ async function createNodesInternal(configFilePath, options, context) {
|
|
|
163
171
|
},
|
|
164
172
|
};
|
|
165
173
|
}
|
|
174
|
+
if (isTfModuleProject &&
|
|
175
|
+
!isDockerProject &&
|
|
176
|
+
!isHelmProject &&
|
|
177
|
+
!isLambdaProject &&
|
|
178
|
+
!isFrontendProject) {
|
|
179
|
+
targets['tofu-format'] = {
|
|
180
|
+
executor: 'nx:run-commands',
|
|
181
|
+
cache: false,
|
|
182
|
+
inputs: ['production', '^production'],
|
|
183
|
+
outputs: [],
|
|
184
|
+
options: {
|
|
185
|
+
cwd: '{projectRoot}',
|
|
186
|
+
command: 'tofu fmt -recursive',
|
|
187
|
+
},
|
|
188
|
+
configurations: {
|
|
189
|
+
check: {
|
|
190
|
+
args: '--check',
|
|
191
|
+
},
|
|
192
|
+
write: {
|
|
193
|
+
args: '--write',
|
|
194
|
+
},
|
|
195
|
+
},
|
|
196
|
+
defaultConfiguration: 'check',
|
|
197
|
+
metadata: {
|
|
198
|
+
technologies: ['tofu'],
|
|
199
|
+
description: 'Format OpenTofu code',
|
|
200
|
+
},
|
|
201
|
+
};
|
|
202
|
+
targets['lint'] = {
|
|
203
|
+
executor: 'nx:run-commands',
|
|
204
|
+
cache: false,
|
|
205
|
+
inputs: ['production', '^production'],
|
|
206
|
+
outputs: [],
|
|
207
|
+
options: {
|
|
208
|
+
cwd: '{projectRoot}',
|
|
209
|
+
commands: [
|
|
210
|
+
'tofu init -backend=false',
|
|
211
|
+
'tflint --init',
|
|
212
|
+
'tflint',
|
|
213
|
+
'tofu validate',
|
|
214
|
+
],
|
|
215
|
+
parallel: false,
|
|
216
|
+
},
|
|
217
|
+
env: {
|
|
218
|
+
TFLINT_CONFIG_FILE: tflintConfigFile,
|
|
219
|
+
},
|
|
220
|
+
metadata: {
|
|
221
|
+
technologies: ['tofu'],
|
|
222
|
+
description: 'Lint OpenTofu code',
|
|
223
|
+
},
|
|
224
|
+
};
|
|
225
|
+
targets['nx-release-publish'] = {
|
|
226
|
+
executor: 'nx:noop',
|
|
227
|
+
cache: false,
|
|
228
|
+
metadata: {
|
|
229
|
+
technologies: ['tofu'],
|
|
230
|
+
description: 'No release publish',
|
|
231
|
+
},
|
|
232
|
+
};
|
|
233
|
+
if (!projectConfiguration?.release?.version
|
|
234
|
+
?.versionActions) {
|
|
235
|
+
release = {
|
|
236
|
+
version: {
|
|
237
|
+
versionActions: '@nx/js/src/release/version-actions',
|
|
238
|
+
},
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
}
|
|
166
242
|
return {
|
|
167
243
|
projects: {
|
|
168
244
|
[projectRoot]: {
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|