@factiii/stack 0.1.23 → 0.1.25
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 +81 -60
- package/bin/{factiii → stack} +12 -12
- package/dist/cli/check-config.js +1 -1
- package/dist/cli/check-config.js.map +1 -1
- package/dist/cli/deploy-secrets.d.ts.map +1 -1
- package/dist/cli/deploy-secrets.js +11 -11
- package/dist/cli/deploy-secrets.js.map +1 -1
- package/dist/cli/deploy.d.ts.map +1 -1
- package/dist/cli/deploy.js +19 -9
- package/dist/cli/deploy.js.map +1 -1
- package/dist/cli/dev-sync.d.ts.map +1 -1
- package/dist/cli/dev-sync.js +10 -9
- package/dist/cli/dev-sync.js.map +1 -1
- package/dist/cli/execute-plugin-command.d.ts.map +1 -1
- package/dist/cli/execute-plugin-command.js +7 -7
- package/dist/cli/execute-plugin-command.js.map +1 -1
- package/dist/cli/fix.d.ts.map +1 -1
- package/dist/cli/fix.js +24 -4
- package/dist/cli/fix.js.map +1 -1
- package/dist/cli/init.d.ts +3 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +114 -71
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/pr-check.d.ts.map +1 -1
- package/dist/cli/pr-check.js +5 -4
- package/dist/cli/pr-check.js.map +1 -1
- package/dist/cli/scan.d.ts +6 -6
- package/dist/cli/scan.d.ts.map +1 -1
- package/dist/cli/scan.js +20 -19
- package/dist/cli/scan.js.map +1 -1
- package/dist/cli/secrets.d.ts.map +1 -1
- package/dist/cli/secrets.js +17 -16
- package/dist/cli/secrets.js.map +1 -1
- package/dist/cli/undeploy.d.ts.map +1 -1
- package/dist/cli/undeploy.js +4 -4
- package/dist/cli/undeploy.js.map +1 -1
- package/dist/cli/upgrade.d.ts +1 -1
- package/dist/cli/upgrade.js +5 -5
- package/dist/cli/upgrade.js.map +1 -1
- package/dist/cli/validate.js +1 -1
- package/dist/cli/validate.js.map +1 -1
- package/dist/constants/config-files.d.ts +17 -0
- package/dist/constants/config-files.d.ts.map +1 -0
- package/dist/constants/config-files.js +73 -0
- package/dist/constants/config-files.js.map +1 -0
- package/dist/generators/{generate-factiii-auto.d.ts → generate-stack-auto.d.ts} +4 -4
- package/dist/generators/generate-stack-auto.d.ts.map +1 -0
- package/dist/generators/{generate-factiii-auto.js → generate-stack-auto.js} +15 -13
- package/dist/generators/generate-stack-auto.js.map +1 -0
- package/dist/generators/{generate-factiii-yml.d.ts → generate-stack-yml.d.ts} +5 -5
- package/dist/generators/generate-stack-yml.d.ts.map +1 -0
- package/dist/generators/{generate-factiii-yml.js → generate-stack-yml.js} +16 -15
- package/dist/generators/generate-stack-yml.js.map +1 -0
- package/dist/generators/index.d.ts +2 -2
- package/dist/generators/index.d.ts.map +1 -1
- package/dist/generators/index.js +5 -5
- package/dist/generators/index.js.map +1 -1
- package/dist/plugins/pipelines/aws/index.d.ts.map +1 -1
- package/dist/plugins/pipelines/aws/index.js +17 -6
- package/dist/plugins/pipelines/aws/index.js.map +1 -1
- package/dist/plugins/pipelines/aws/policies/bootstrap-policy.json +135 -0
- package/dist/plugins/pipelines/aws/prod.d.ts.map +1 -1
- package/dist/plugins/pipelines/aws/prod.js +17 -2
- package/dist/plugins/pipelines/aws/prod.js.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/credentials.d.ts.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/credentials.js +40 -13
- package/dist/plugins/pipelines/aws/scanfix/credentials.js.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/ec2.d.ts.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/ec2.js +7 -3
- package/dist/plugins/pipelines/aws/scanfix/ec2.js.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/iam.js +2 -2
- package/dist/plugins/pipelines/aws/scanfix/iam.js.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/rds.js +2 -2
- package/dist/plugins/pipelines/aws/scanfix/rds.js.map +1 -1
- package/dist/plugins/pipelines/factiii/index.js +1 -1
- package/dist/plugins/pipelines/factiii/index.js.map +1 -1
- package/dist/plugins/pipelines/factiii/pr-check.d.ts +1 -1
- package/dist/plugins/pipelines/factiii/pr-check.js +1 -1
- package/dist/plugins/pipelines/factiii/prod.d.ts.map +1 -1
- package/dist/plugins/pipelines/factiii/prod.js +3 -3
- package/dist/plugins/pipelines/factiii/prod.js.map +1 -1
- package/dist/plugins/pipelines/factiii/scanfix/config.d.ts +1 -1
- package/dist/plugins/pipelines/factiii/scanfix/config.d.ts.map +1 -1
- package/dist/plugins/pipelines/factiii/scanfix/config.js +10 -11
- package/dist/plugins/pipelines/factiii/scanfix/config.js.map +1 -1
- package/dist/plugins/pipelines/factiii/scanfix/secrets.js +6 -6
- package/dist/plugins/pipelines/factiii/scanfix/secrets.js.map +1 -1
- package/dist/plugins/pipelines/factiii/scanfix/workflows.d.ts.map +1 -1
- package/dist/plugins/pipelines/factiii/scanfix/workflows.js +29 -25
- package/dist/plugins/pipelines/factiii/scanfix/workflows.js.map +1 -1
- package/dist/plugins/pipelines/factiii/staging.d.ts +1 -1
- package/dist/plugins/pipelines/factiii/staging.d.ts.map +1 -1
- package/dist/plugins/pipelines/factiii/staging.js +3 -2
- package/dist/plugins/pipelines/factiii/staging.js.map +1 -1
- package/dist/plugins/pipelines/factiii/utils/workflows.js +15 -15
- package/dist/plugins/pipelines/factiii/utils/workflows.js.map +1 -1
- package/dist/plugins/pipelines/factiii/workflows/factiii-cicd-prod.yml +11 -8
- package/dist/plugins/pipelines/factiii/workflows/factiii-cicd-staging.yml +11 -8
- package/dist/plugins/pipelines/factiii/workflows/factiii-command.yml +10 -8
- package/dist/plugins/pipelines/factiii/workflows/factiii-deploy.yml +17 -13
- package/dist/plugins/pipelines/factiii/workflows/factiii-dev-sync.yml +13 -11
- package/dist/plugins/pipelines/factiii/workflows/factiii-fix.yml +13 -11
- package/dist/plugins/pipelines/factiii/workflows/factiii-pr-check.yml +10 -7
- package/dist/plugins/pipelines/factiii/workflows/factiii-scan.yml +18 -11
- package/dist/plugins/pipelines/factiii/workflows/factiii-undeploy.yml +9 -8
- package/dist/plugins/pipelines/factiii/workflows/stack-cicd-prod.yml +115 -0
- package/dist/plugins/pipelines/factiii/workflows/stack-cicd-staging.yml +120 -0
- package/dist/plugins/pipelines/factiii/workflows/stack-command.yml +132 -0
- package/dist/plugins/pipelines/factiii/workflows/stack-deploy.yml +202 -0
- package/dist/plugins/pipelines/factiii/workflows/stack-dev-sync.yml +181 -0
- package/dist/plugins/pipelines/factiii/workflows/stack-fix.yml +177 -0
- package/dist/plugins/pipelines/factiii/workflows/stack-pr-check.yml +106 -0
- package/dist/plugins/pipelines/factiii/workflows/stack-scan.yml +182 -0
- package/dist/plugins/pipelines/factiii/workflows/stack-undeploy.yml +96 -0
- package/dist/plugins/servers/mac/scanfix/containers.js +1 -1
- package/dist/plugins/servers/mac/scanfix/containers.js.map +1 -1
- package/dist/scanfix/fixes/pnpm.d.ts.map +1 -1
- package/dist/scanfix/fixes/pnpm.js +2 -2
- package/dist/scanfix/fixes/pnpm.js.map +1 -1
- package/dist/scripts/generate-all.d.ts.map +1 -1
- package/dist/scripts/generate-all.js +9 -8
- package/dist/scripts/generate-all.js.map +1 -1
- package/dist/scripts/get-repo-name.d.ts +1 -1
- package/dist/scripts/get-repo-name.js +5 -3
- package/dist/scripts/get-repo-name.js.map +1 -1
- package/dist/scripts/validate-env-files.js +7 -1
- package/dist/scripts/validate-env-files.js.map +1 -1
- package/dist/scripts/validate-example-values.d.ts +1 -1
- package/dist/scripts/validate-example-values.js +3 -2
- package/dist/scripts/validate-example-values.js.map +1 -1
- package/dist/scripts/validate-stack-yml.d.ts +6 -0
- package/dist/scripts/validate-stack-yml.d.ts.map +1 -0
- package/dist/scripts/{validate-factiii-yml.js → validate-stack-yml.js} +15 -11
- package/dist/scripts/validate-stack-yml.js.map +1 -0
- package/dist/utils/config-validator.d.ts +2 -2
- package/dist/utils/config-validator.d.ts.map +1 -1
- package/dist/utils/config-validator.js +7 -6
- package/dist/utils/config-validator.js.map +1 -1
- package/dist/utils/config-writer.d.ts +16 -0
- package/dist/utils/config-writer.d.ts.map +1 -0
- package/dist/utils/config-writer.js +95 -0
- package/dist/utils/config-writer.js.map +1 -0
- package/dist/utils/deployment-report.js +4 -4
- package/dist/utils/deployment-report.js.map +1 -1
- package/dist/utils/ssh-helper.js +6 -6
- package/dist/utils/ssh-helper.js.map +1 -1
- package/dist/utils/template-generator.js +1 -1
- package/dist/utils/version-check.d.ts +1 -1
- package/dist/utils/version-check.d.ts.map +1 -1
- package/dist/utils/version-check.js +9 -8
- package/dist/utils/version-check.js.map +1 -1
- package/package.json +9 -3
- package/dist/generators/generate-factiii-auto.d.ts.map +0 -1
- package/dist/generators/generate-factiii-auto.js.map +0 -1
- package/dist/generators/generate-factiii-yml.d.ts.map +0 -1
- package/dist/generators/generate-factiii-yml.js.map +0 -1
- package/dist/scripts/validate-factiii-yml.d.ts +0 -6
- package/dist/scripts/validate-factiii-yml.d.ts.map +0 -1
- package/dist/scripts/validate-factiii-yml.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Stack
|
|
2
2
|
|
|
3
3
|
Infrastructure management CLI for deploying full-stack applications with plugin-based configuration.
|
|
4
4
|
|
|
@@ -9,23 +9,23 @@ Infrastructure management CLI for deploying full-stack applications with plugin-
|
|
|
9
9
|
npm install @factiii/stack
|
|
10
10
|
|
|
11
11
|
# Initialize configuration (run this first!)
|
|
12
|
-
npx
|
|
12
|
+
npx stack init
|
|
13
13
|
|
|
14
14
|
# This creates:
|
|
15
|
-
# -
|
|
16
|
-
# -
|
|
15
|
+
# - stack.yml (user-editable config)
|
|
16
|
+
# - stackAuto.yml (auto-detected config)
|
|
17
17
|
# - .github/workflows/ (CI/CD workflows)
|
|
18
18
|
|
|
19
|
-
# Edit
|
|
19
|
+
# Edit stack.yml to replace EXAMPLE- values
|
|
20
20
|
# Then run:
|
|
21
|
-
npx
|
|
22
|
-
npx
|
|
23
|
-
npx
|
|
21
|
+
npx stack scan # Check for issues
|
|
22
|
+
npx stack fix # Auto-fix issues
|
|
23
|
+
npx stack deploy --staging # Deploy to staging
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
## How It Works
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
Stack uses a **plugin-based architecture** where each plugin:
|
|
29
29
|
1. Defines its own configuration schema
|
|
30
30
|
2. Auto-detects project settings
|
|
31
31
|
3. Validates and fixes issues
|
|
@@ -33,7 +33,7 @@ Factiii Stack uses a **plugin-based architecture** where each plugin:
|
|
|
33
33
|
|
|
34
34
|
### The Two Config Files
|
|
35
35
|
|
|
36
|
-
**`
|
|
36
|
+
**`stack.yml`** - User-Editable Configuration
|
|
37
37
|
```yaml
|
|
38
38
|
name: my-app
|
|
39
39
|
|
|
@@ -61,7 +61,7 @@ container_exclusions:
|
|
|
61
61
|
- legacy_container
|
|
62
62
|
```
|
|
63
63
|
|
|
64
|
-
**`
|
|
64
|
+
**`stackAuto.yml`** - Auto-Detected Configuration
|
|
65
65
|
```yaml
|
|
66
66
|
# Auto-detected by plugins
|
|
67
67
|
factiii_version: 1.0.0
|
|
@@ -84,14 +84,14 @@ aws_cli_installed: true
|
|
|
84
84
|
Scans your project and generates configuration files:
|
|
85
85
|
|
|
86
86
|
```bash
|
|
87
|
-
npx
|
|
88
|
-
npx
|
|
87
|
+
npx stack init # Initialize Stack
|
|
88
|
+
npx stack init --force # Regenerate configs
|
|
89
89
|
```
|
|
90
90
|
|
|
91
91
|
**What it does:**
|
|
92
92
|
- Detects which plugins are relevant to your project
|
|
93
|
-
- Generates `
|
|
94
|
-
- Generates `
|
|
93
|
+
- Generates `stack.yml` with only relevant sections
|
|
94
|
+
- Generates `stackAuto.yml` with auto-detected values
|
|
95
95
|
- Creates GitHub Actions workflows
|
|
96
96
|
|
|
97
97
|
### Scan
|
|
@@ -99,38 +99,59 @@ npx factiii init --force # Regenerate configs
|
|
|
99
99
|
Checks all environments for issues:
|
|
100
100
|
|
|
101
101
|
```bash
|
|
102
|
-
npx
|
|
103
|
-
npx
|
|
104
|
-
npx
|
|
105
|
-
npx
|
|
102
|
+
npx stack scan # Scan all (dev, secrets, staging, prod)
|
|
103
|
+
npx stack scan --dev # Scan dev only
|
|
104
|
+
npx stack scan --staging # Scan staging only
|
|
105
|
+
npx stack scan --prod # Scan prod only
|
|
106
106
|
```
|
|
107
107
|
|
|
108
|
-
**Note:** Requires `
|
|
108
|
+
**Note:** Requires `stack.yml` (or legacy factiii.yml) to exist. Run `npx stack init` first.
|
|
109
109
|
|
|
110
110
|
### Fix
|
|
111
111
|
|
|
112
112
|
Automatically fixes issues where possible:
|
|
113
113
|
|
|
114
114
|
```bash
|
|
115
|
-
npx
|
|
116
|
-
npx
|
|
117
|
-
npx
|
|
118
|
-
npx
|
|
115
|
+
npx stack fix # Fix all environments
|
|
116
|
+
npx stack fix --dev # Fix dev only
|
|
117
|
+
npx stack fix --staging # Fix staging only
|
|
118
|
+
npx stack fix --prod # Fix prod only
|
|
119
119
|
```
|
|
120
120
|
|
|
121
|
-
**Note:** Requires `
|
|
121
|
+
**Note:** Requires `stack.yml` (or legacy factiii.yml) to exist. Run `npx stack init` first.
|
|
122
122
|
|
|
123
123
|
### Deploy
|
|
124
124
|
|
|
125
125
|
Deploys to environments (runs scan first, aborts on issues):
|
|
126
126
|
|
|
127
127
|
```bash
|
|
128
|
-
npx
|
|
129
|
-
npx
|
|
130
|
-
npx
|
|
128
|
+
npx stack deploy --dev # Start local dev containers
|
|
129
|
+
npx stack deploy --staging # Deploy to staging server
|
|
130
|
+
npx stack deploy --prod # Deploy to production server
|
|
131
131
|
```
|
|
132
132
|
|
|
133
|
-
**Note:** Requires `
|
|
133
|
+
**Note:** Requires `stack.yml` (or legacy factiii.yml) to exist. Run `npx stack init` first.
|
|
134
|
+
|
|
135
|
+
### AWS EC2 Deployment (2 Commands)
|
|
136
|
+
|
|
137
|
+
Deploy your full-stack app to AWS EC2 with just two commands:
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
# 1. Provision all AWS infrastructure
|
|
141
|
+
npx factiii fix
|
|
142
|
+
|
|
143
|
+
# Creates: VPC, Security Groups, EC2 instance, RDS database,
|
|
144
|
+
# S3 bucket, ECR repository, IAM users, SES email
|
|
145
|
+
|
|
146
|
+
# 2. Deploy your application
|
|
147
|
+
npx factiii deploy --prod
|
|
148
|
+
|
|
149
|
+
# Configures: Docker, Nginx, SSL certificates, pulls images, starts containers
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
**Prerequisites:** You need an IAM user with the `factiii-bootstrap` policy configured via `aws configure`.
|
|
153
|
+
|
|
154
|
+
See [docs/aws-setup-guide.md](docs/aws-setup-guide.md) for the full step-by-step setup guide including the IAM policy JSON.
|
|
134
155
|
|
|
135
156
|
### Secrets Management
|
|
136
157
|
|
|
@@ -138,30 +159,30 @@ Manage secrets via Ansible Vault and deploy them directly to servers:
|
|
|
138
159
|
|
|
139
160
|
```bash
|
|
140
161
|
# List all secrets (SSH keys + environment variables)
|
|
141
|
-
npx
|
|
162
|
+
npx stack secrets list
|
|
142
163
|
|
|
143
164
|
# Set SSH keys (required for deployment)
|
|
144
|
-
npx
|
|
145
|
-
npx
|
|
165
|
+
npx stack secrets set STAGING_SSH
|
|
166
|
+
npx stack secrets set PROD_SSH
|
|
146
167
|
|
|
147
168
|
# Set environment variables for each stage
|
|
148
|
-
npx
|
|
149
|
-
npx
|
|
150
|
-
npx
|
|
151
|
-
npx
|
|
169
|
+
npx stack secrets set-env DATABASE_URL --staging
|
|
170
|
+
npx stack secrets set-env JWT_SECRET --staging
|
|
171
|
+
npx stack secrets set-env DATABASE_URL --prod
|
|
172
|
+
npx stack secrets set-env JWT_SECRET --prod
|
|
152
173
|
|
|
153
174
|
# List environment variables
|
|
154
|
-
npx
|
|
155
|
-
npx
|
|
175
|
+
npx stack secrets list-env --staging
|
|
176
|
+
npx stack secrets list-env --prod
|
|
156
177
|
|
|
157
178
|
# Deploy secrets to servers via SSH
|
|
158
|
-
npx
|
|
159
|
-
npx
|
|
160
|
-
npx
|
|
179
|
+
npx stack secrets deploy --staging # Deploy to staging server
|
|
180
|
+
npx stack secrets deploy --prod # Deploy to production server
|
|
181
|
+
npx stack secrets deploy --all # Deploy to all servers
|
|
161
182
|
|
|
162
183
|
# Options
|
|
163
|
-
npx
|
|
164
|
-
npx
|
|
184
|
+
npx stack secrets deploy --staging --restart # Restart container after deploy
|
|
185
|
+
npx stack secrets deploy --staging --dry-run # Show what would be deployed
|
|
165
186
|
```
|
|
166
187
|
|
|
167
188
|
**How it works:**
|
|
@@ -172,24 +193,24 @@ npx factiii secrets deploy --staging --dry-run # Show what would be deployed
|
|
|
172
193
|
- Writes a `.env.{stage}` file with your environment variables
|
|
173
194
|
3. Your application reads the `.env.{stage}` file on startup
|
|
174
195
|
|
|
175
|
-
**Note:** Requires `
|
|
196
|
+
**Note:** Requires `stack.yml` with Ansible Vault configured. Run `npx stack init` first.
|
|
176
197
|
|
|
177
198
|
## Stage Execution
|
|
178
199
|
|
|
179
|
-
|
|
200
|
+
Stack commands work with four stages: `dev`, `secrets`, `staging`, `prod`.
|
|
180
201
|
|
|
181
202
|
### Running Commands
|
|
182
203
|
|
|
183
204
|
```bash
|
|
184
|
-
npx
|
|
185
|
-
npx
|
|
186
|
-
npx
|
|
205
|
+
npx stack scan # Scan all reachable stages
|
|
206
|
+
npx stack scan --dev # Scan only dev stage
|
|
207
|
+
npx stack scan --staging # Scan only staging stage
|
|
187
208
|
|
|
188
|
-
npx
|
|
189
|
-
npx
|
|
209
|
+
npx stack fix # Fix all reachable stages
|
|
210
|
+
npx stack fix --staging # Fix only staging stage
|
|
190
211
|
|
|
191
|
-
npx
|
|
192
|
-
npx
|
|
212
|
+
npx stack deploy --staging # Deploy to staging
|
|
213
|
+
npx stack deploy --prod # Deploy to prod
|
|
193
214
|
```
|
|
194
215
|
|
|
195
216
|
### How Stages Are Reached
|
|
@@ -209,8 +230,8 @@ When your CI/CD workflow SSHs to a server to run commands, you **MUST** specify
|
|
|
209
230
|
|
|
210
231
|
```bash
|
|
211
232
|
# In your workflow, after SSH to staging server:
|
|
212
|
-
GITHUB_ACTIONS=true npx
|
|
213
|
-
npx
|
|
233
|
+
GITHUB_ACTIONS=true npx stack fix --staging # ✅ Correct
|
|
234
|
+
npx stack fix # ❌ Wrong - will try to run all stages
|
|
214
235
|
```
|
|
215
236
|
|
|
216
237
|
This prevents the command from trying to reach stages it can't access from the server.
|
|
@@ -304,7 +325,7 @@ GitHub Actions workflows are intentionally minimal - they just SSH into servers
|
|
|
304
325
|
ssh user@host << EOF
|
|
305
326
|
cd ~/.factiii/my-app
|
|
306
327
|
git pull
|
|
307
|
-
GITHUB_ACTIONS=true npx
|
|
328
|
+
GITHUB_ACTIONS=true npx stack deploy --staging
|
|
308
329
|
EOF
|
|
309
330
|
```
|
|
310
331
|
|
|
@@ -339,16 +360,16 @@ Provide the vault password via one of:
|
|
|
339
360
|
|
|
340
361
|
```bash
|
|
341
362
|
# List all secrets
|
|
342
|
-
npx
|
|
363
|
+
npx stack secrets list
|
|
343
364
|
|
|
344
365
|
# Set a secret (interactive prompt)
|
|
345
|
-
npx
|
|
366
|
+
npx stack secrets set STAGING_SSH
|
|
346
367
|
|
|
347
368
|
# Set a secret (non-interactive)
|
|
348
|
-
npx
|
|
369
|
+
npx stack secrets set STAGING_SSH --value "your-key-here"
|
|
349
370
|
|
|
350
371
|
# Check if secrets exist
|
|
351
|
-
npx
|
|
372
|
+
npx stack secrets check
|
|
352
373
|
```
|
|
353
374
|
|
|
354
375
|
### Required Secrets
|
|
@@ -364,7 +385,7 @@ In GitHub Actions workflows, provide the vault password as a GitHub secret:
|
|
|
364
385
|
1. Add `ANSIBLE_VAULT_PASSWORD` to your repository secrets
|
|
365
386
|
2. Workflows automatically load SSH keys from Ansible Vault using this password
|
|
366
387
|
|
|
367
|
-
The workflow step `npx
|
|
388
|
+
The workflow step `npx stack secrets write-ssh-keys` extracts secrets from the vault and writes SSH keys to `~/.ssh/` for deployment steps.
|
|
368
389
|
|
|
369
390
|
## Environment Variables
|
|
370
391
|
|
package/bin/{factiii → stack}
RENAMED
|
@@ -23,14 +23,14 @@ const { devSync } = require('../dist/cli/dev-sync');
|
|
|
23
23
|
const packageJson = require('../package.json');
|
|
24
24
|
|
|
25
25
|
program
|
|
26
|
-
.name('
|
|
27
|
-
.description('
|
|
26
|
+
.name('stack')
|
|
27
|
+
.description('Stack - Infrastructure management CLI')
|
|
28
28
|
.version(packageJson.version);
|
|
29
29
|
|
|
30
30
|
// Init command (primary setup command)
|
|
31
31
|
program
|
|
32
32
|
.command('init')
|
|
33
|
-
.description('Initialize
|
|
33
|
+
.description('Initialize Stack in your project (run this first)')
|
|
34
34
|
.option('-f, --force', 'Overwrite existing config files')
|
|
35
35
|
.action(async (options) => {
|
|
36
36
|
await init(options);
|
|
@@ -164,7 +164,7 @@ program
|
|
|
164
164
|
if (!action || !validActions.includes(action)) {
|
|
165
165
|
// Show help if no valid action provided
|
|
166
166
|
console.log('');
|
|
167
|
-
console.log('Usage: npx
|
|
167
|
+
console.log('Usage: npx stack secrets <action> [name] [options]');
|
|
168
168
|
console.log('');
|
|
169
169
|
console.log('Actions:');
|
|
170
170
|
console.log(' list List all secrets (SSH keys + env vars)');
|
|
@@ -176,12 +176,12 @@ program
|
|
|
176
176
|
console.log(' write-ssh-keys Write SSH keys to ~/.ssh/ (for workflows)');
|
|
177
177
|
console.log('');
|
|
178
178
|
console.log('Examples:');
|
|
179
|
-
console.log(' npx
|
|
180
|
-
console.log(' npx
|
|
181
|
-
console.log(' npx
|
|
182
|
-
console.log(' npx
|
|
183
|
-
console.log(' npx
|
|
184
|
-
console.log(' npx
|
|
179
|
+
console.log(' npx stack secrets list');
|
|
180
|
+
console.log(' npx stack secrets set STAGING_SSH');
|
|
181
|
+
console.log(' npx stack secrets set-env DATABASE_URL --staging');
|
|
182
|
+
console.log(' npx stack secrets list-env --staging');
|
|
183
|
+
console.log(' npx stack secrets deploy --staging');
|
|
184
|
+
console.log(' npx stack secrets deploy --all');
|
|
185
185
|
console.log('');
|
|
186
186
|
return;
|
|
187
187
|
}
|
|
@@ -214,8 +214,8 @@ if (process.env.DEV_MODE === 'true') {
|
|
|
214
214
|
// Legacy commands (for backwards compatibility)
|
|
215
215
|
program
|
|
216
216
|
.command('validate')
|
|
217
|
-
.description('[Legacy] Validate
|
|
218
|
-
.option('-c, --config <path>', 'Path to config file', '
|
|
217
|
+
.description('[Legacy] Validate stack.yml config file')
|
|
218
|
+
.option('-c, --config <path>', 'Path to config file', 'stack.yml')
|
|
219
219
|
.action(async (options) => {
|
|
220
220
|
await validate(options);
|
|
221
221
|
});
|
package/dist/cli/check-config.js
CHANGED
|
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
8
8
|
exports.checkConfig = checkConfig;
|
|
9
9
|
const scan_js_1 = require("./scan.js");
|
|
10
10
|
async function checkConfig(options = {}) {
|
|
11
|
-
console.log('[!] The check-config command is deprecated. Use: npx
|
|
11
|
+
console.log('[!] The check-config command is deprecated. Use: npx stack scan\n');
|
|
12
12
|
const environment = options.environment ?? 'staging';
|
|
13
13
|
const stages = [environment];
|
|
14
14
|
const problems = await (0, scan_js_1.scan)({ rootDir: process.cwd(), stages });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-config.js","sourceRoot":"","sources":["../../src/cli/check-config.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAKH,kCAUC;AAbD,uCAAiC;AAG1B,KAAK,UAAU,WAAW,CAAC,UAA8B,EAAE;IAChE,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"check-config.js","sourceRoot":"","sources":["../../src/cli/check-config.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAKH,kCAUC;AAbD,uCAAiC;AAG1B,KAAK,UAAU,WAAW,CAAC,UAA8B,EAAE;IAChE,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;IAEjF,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,SAAS,CAAC;IACrD,MAAM,MAAM,GAAY,CAAC,WAAoB,CAAC,CAAC;IAE/C,MAAM,QAAQ,GAAG,MAAM,IAAA,cAAI,EAAC,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAEhE,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAoC,CAAC,IAAI,EAAE,CAAC;IACzE,OAAO,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC;AAClC,CAAC;AAED,kBAAe,WAAW,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy-secrets.d.ts","sourceRoot":"","sources":["../../src/cli/deploy-secrets.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"deploy-secrets.d.ts","sourceRoot":"","sources":["../../src/cli/deploy-secrets.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,oBAAoB;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAqHD;;GAEG;AACH,wBAAsB,aAAa,CAC/B,WAAW,EAAE,SAAS,GAAG,MAAM,GAAG,KAAK,EACvC,OAAO,GAAE,oBAAyB,GACnC,OAAO,CAAC,mBAAmB,CAAC,CA2F9B;AAED,eAAe,aAAa,CAAC"}
|
|
@@ -38,24 +38,24 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.deploySecrets = deploySecrets;
|
|
40
40
|
const fs = __importStar(require("fs"));
|
|
41
|
-
const path = __importStar(require("path"));
|
|
42
41
|
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
42
|
+
const config_files_js_1 = require("../constants/config-files.js");
|
|
43
43
|
const ansible_vault_secrets_js_1 = require("../utils/ansible-vault-secrets.js");
|
|
44
44
|
const ssh_deploy_js_1 = require("../utils/ssh-deploy.js");
|
|
45
45
|
const config_helpers_js_1 = require("../utils/config-helpers.js");
|
|
46
46
|
/**
|
|
47
|
-
* Load configuration from factiii.yml
|
|
47
|
+
* Load configuration from stack.yml (or legacy factiii.yml)
|
|
48
48
|
*/
|
|
49
49
|
function loadConfig(rootDir) {
|
|
50
|
-
const configPath =
|
|
50
|
+
const configPath = (0, config_files_js_1.getStackConfigPath)(rootDir);
|
|
51
51
|
if (!fs.existsSync(configPath)) {
|
|
52
|
-
throw new Error('
|
|
52
|
+
throw new Error('stack.yml not found. Run: npx stack init');
|
|
53
53
|
}
|
|
54
54
|
try {
|
|
55
55
|
return js_yaml_1.default.load(fs.readFileSync(configPath, 'utf8')) ?? {};
|
|
56
56
|
}
|
|
57
57
|
catch (e) {
|
|
58
|
-
throw new Error(
|
|
58
|
+
throw new Error('Error parsing config: ' + (e instanceof Error ? e.message : String(e)));
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
/**
|
|
@@ -78,14 +78,14 @@ async function deployToEnvironment(stage, envConfig, config, store, options) {
|
|
|
78
78
|
if (!sshKey) {
|
|
79
79
|
return {
|
|
80
80
|
success: false,
|
|
81
|
-
error: `No SSH key found for ${stage}. Run: npx
|
|
81
|
+
error: `No SSH key found for ${stage}. Run: npx stack secrets set ${stage.toUpperCase()}_SSH`
|
|
82
82
|
};
|
|
83
83
|
}
|
|
84
84
|
// Get environment secrets
|
|
85
85
|
const envSecrets = await store.getEnvironmentSecrets(stage);
|
|
86
86
|
if (Object.keys(envSecrets).length === 0) {
|
|
87
87
|
console.log(` [!] No environment secrets found for ${stage}`);
|
|
88
|
-
console.log(` Add secrets with: npx
|
|
88
|
+
console.log(` Add secrets with: npx stack secrets set-env <NAME> --${stage}`);
|
|
89
89
|
return {
|
|
90
90
|
success: true,
|
|
91
91
|
message: `No secrets to deploy for ${stage}`,
|
|
@@ -161,9 +161,9 @@ async function deploySecrets(environment, options = {}) {
|
|
|
161
161
|
}
|
|
162
162
|
// Check Ansible Vault configuration
|
|
163
163
|
if (!config.ansible?.vault_path) {
|
|
164
|
-
const error = 'ansible.vault_path not configured in
|
|
165
|
-
console.log(
|
|
166
|
-
console.log('Add to
|
|
164
|
+
const error = 'ansible.vault_path not configured in config';
|
|
165
|
+
console.log('\n[ERROR] ' + error);
|
|
166
|
+
console.log('Add to stack.yml:');
|
|
167
167
|
console.log(' ansible:');
|
|
168
168
|
console.log(' vault_path: group_vars/all/vault.yml');
|
|
169
169
|
console.log(' vault_password_file: ~/.vault_pass');
|
|
@@ -184,7 +184,7 @@ async function deploySecrets(environment, options = {}) {
|
|
|
184
184
|
// Find environment config for this stage
|
|
185
185
|
const envName = Object.keys(environments).find(name => getStageType(name) === stage);
|
|
186
186
|
if (!envName) {
|
|
187
|
-
console.log(
|
|
187
|
+
console.log('\n[!] No ' + stage + ' environment configured in config');
|
|
188
188
|
continue;
|
|
189
189
|
}
|
|
190
190
|
const envConfig = environments[envName];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy-secrets.js","sourceRoot":"","sources":["../../src/cli/deploy-secrets.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"deploy-secrets.js","sourceRoot":"","sources":["../../src/cli/deploy-secrets.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/deploy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/cli/deploy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/cli/deploy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAUH,OAAO,KAAK,EAAiB,aAAa,EAAE,YAAY,EAAS,MAAM,mBAAmB,CAAC;AAkG3F;;;;;;;;GAQG;AACH,wBAAsB,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CA8LpG;AAED,eAAe,MAAM,CAAC"}
|
package/dist/cli/deploy.js
CHANGED
|
@@ -55,17 +55,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
55
55
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
56
56
|
exports.deploy = deploy;
|
|
57
57
|
const fs = __importStar(require("fs"));
|
|
58
|
-
const path = __importStar(require("path"));
|
|
59
58
|
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
59
|
+
const config_files_js_1 = require("../constants/config-files.js");
|
|
60
60
|
const scan_js_1 = require("./scan.js");
|
|
61
61
|
const deploy_secrets_js_1 = require("./deploy-secrets.js");
|
|
62
62
|
const index_js_1 = require("../plugins/index.js");
|
|
63
63
|
const config_helpers_js_1 = require("../utils/config-helpers.js");
|
|
64
64
|
/**
|
|
65
|
-
* Load config from factiii.yml
|
|
65
|
+
* Load config from stack.yml (or legacy factiii.yml)
|
|
66
66
|
*/
|
|
67
67
|
function loadConfig(rootDir) {
|
|
68
|
-
const configPath =
|
|
68
|
+
const configPath = (0, config_files_js_1.getStackConfigPath)(rootDir);
|
|
69
69
|
if (!fs.existsSync(configPath)) {
|
|
70
70
|
return {};
|
|
71
71
|
}
|
|
@@ -74,7 +74,7 @@ function loadConfig(rootDir) {
|
|
|
74
74
|
}
|
|
75
75
|
catch (e) {
|
|
76
76
|
const errorMessage = e instanceof Error ? e.message : String(e);
|
|
77
|
-
console.error(
|
|
77
|
+
console.error('[!] Error parsing config: ' + errorMessage);
|
|
78
78
|
return {};
|
|
79
79
|
}
|
|
80
80
|
}
|
|
@@ -127,12 +127,12 @@ function printRollbackInstructions(stage, environment, config) {
|
|
|
127
127
|
console.log(' ssh -i ~/.ssh/' + stage + '_deploy_key ' + user + '@' + domain + ' "docker logs --tail 50 \\$(docker ps -lq)"');
|
|
128
128
|
console.log('\n 2. Rollback to previous commit:');
|
|
129
129
|
console.log(' git log --oneline -5 # find working commit');
|
|
130
|
-
console.log(' npx
|
|
130
|
+
console.log(' npx stack deploy --' + stage + ' --commit <hash>');
|
|
131
131
|
console.log('\n 3. Manual server access:');
|
|
132
132
|
console.log(' ssh -i ~/.ssh/' + stage + '_deploy_key ' + user + '@' + domain);
|
|
133
133
|
console.log('\n 4. Full reset:');
|
|
134
|
-
console.log(' npx
|
|
135
|
-
console.log(' npx
|
|
134
|
+
console.log(' npx stack undeploy --' + stage);
|
|
135
|
+
console.log(' npx stack deploy --' + stage + '\n');
|
|
136
136
|
}
|
|
137
137
|
/**
|
|
138
138
|
* Deploy to a specified environment
|
|
@@ -259,7 +259,7 @@ async function deploy(environment, options = {}) {
|
|
|
259
259
|
}
|
|
260
260
|
}
|
|
261
261
|
console.log('\n[DRY RUN] All pre-deploy checks passed. Run without --dry-run to execute:\n');
|
|
262
|
-
console.log(' npx
|
|
262
|
+
console.log(' npx stack deploy --' + stage + '\n');
|
|
263
263
|
return { success: true, message: 'Dry run completed' };
|
|
264
264
|
}
|
|
265
265
|
console.log(`DEPLOYING ${environment.toUpperCase()}\n`);
|
|
@@ -280,11 +280,21 @@ async function deploy(environment, options = {}) {
|
|
|
280
280
|
if (result.message) {
|
|
281
281
|
console.log(` ${result.message}`);
|
|
282
282
|
}
|
|
283
|
-
// Post-deploy
|
|
283
|
+
// Post-deploy summary for staging/prod
|
|
284
284
|
if (stage === 'staging' || stage === 'prod') {
|
|
285
285
|
const environments = (0, config_helpers_js_1.extractEnvironments)(config);
|
|
286
286
|
const envConfig = environments[environment];
|
|
287
287
|
if (envConfig?.domain) {
|
|
288
|
+
console.log('');
|
|
289
|
+
console.log('============================================================');
|
|
290
|
+
console.log('DEPLOYMENT SUMMARY');
|
|
291
|
+
console.log('============================================================');
|
|
292
|
+
console.log(' Domain: https://' + envConfig.domain);
|
|
293
|
+
console.log(' Server: ' + (envConfig.server ?? 'ubuntu'));
|
|
294
|
+
console.log(' Docker: ✅ Containers running');
|
|
295
|
+
console.log(' Nginx: ✅ Reverse proxy configured');
|
|
296
|
+
console.log(' SSL: ✅ Let\'s Encrypt (auto-renewal)');
|
|
297
|
+
console.log('============================================================');
|
|
288
298
|
await runHealthCheck(envConfig.domain);
|
|
289
299
|
}
|
|
290
300
|
}
|
package/dist/cli/deploy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/cli/deploy.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/cli/deploy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-sync.d.ts","sourceRoot":"","sources":["../../src/cli/dev-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;
|
|
1
|
+
{"version":3,"file":"dev-sync.d.ts","sourceRoot":"","sources":["../../src/cli/dev-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAYH,OAAO,KAAK,EAAiB,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAybvE;;GAEG;AACH,wBAAsB,OAAO,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2EzE"}
|