@factiii/stack 0.1.2
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 +420 -0
- package/bin/factiii +229 -0
- package/dist/cli/check-config.d.ts +9 -0
- package/dist/cli/check-config.d.ts.map +1 -0
- package/dist/cli/check-config.js +19 -0
- package/dist/cli/check-config.js.map +1 -0
- package/dist/cli/deploy-secrets.d.ts +16 -0
- package/dist/cli/deploy-secrets.d.ts.map +1 -0
- package/dist/cli/deploy-secrets.js +227 -0
- package/dist/cli/deploy-secrets.js.map +1 -0
- package/dist/cli/deploy.d.ts +30 -0
- package/dist/cli/deploy.d.ts.map +1 -0
- package/dist/cli/deploy.js +306 -0
- package/dist/cli/deploy.js.map +1 -0
- package/dist/cli/deployer.d.ts +13 -0
- package/dist/cli/deployer.d.ts.map +1 -0
- package/dist/cli/deployer.js +21 -0
- package/dist/cli/deployer.js.map +1 -0
- package/dist/cli/dev-sync.d.ts +30 -0
- package/dist/cli/dev-sync.d.ts.map +1 -0
- package/dist/cli/dev-sync.js +500 -0
- package/dist/cli/dev-sync.js.map +1 -0
- package/dist/cli/execute-plugin-command.d.ts +25 -0
- package/dist/cli/execute-plugin-command.d.ts.map +1 -0
- package/dist/cli/execute-plugin-command.js +237 -0
- package/dist/cli/execute-plugin-command.js.map +1 -0
- package/dist/cli/fix.d.ts +22 -0
- package/dist/cli/fix.d.ts.map +1 -0
- package/dist/cli/fix.js +267 -0
- package/dist/cli/fix.js.map +1 -0
- package/dist/cli/index.d.ts +17 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +31 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init.d.ts +9 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +190 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/plugin-commands.d.ts +22 -0
- package/dist/cli/plugin-commands.d.ts.map +1 -0
- package/dist/cli/plugin-commands.js +121 -0
- package/dist/cli/plugin-commands.js.map +1 -0
- package/dist/cli/scan.d.ts +66 -0
- package/dist/cli/scan.d.ts.map +1 -0
- package/dist/cli/scan.js +511 -0
- package/dist/cli/scan.js.map +1 -0
- package/dist/cli/secrets.d.ts +19 -0
- package/dist/cli/secrets.d.ts.map +1 -0
- package/dist/cli/secrets.js +318 -0
- package/dist/cli/secrets.js.map +1 -0
- package/dist/cli/undeploy.d.ts +9 -0
- package/dist/cli/undeploy.d.ts.map +1 -0
- package/dist/cli/undeploy.js +95 -0
- package/dist/cli/undeploy.js.map +1 -0
- package/dist/cli/upgrade.d.ts +9 -0
- package/dist/cli/upgrade.d.ts.map +1 -0
- package/dist/cli/upgrade.js +24 -0
- package/dist/cli/upgrade.js.map +1 -0
- package/dist/cli/validate.d.ts +9 -0
- package/dist/cli/validate.d.ts.map +1 -0
- package/dist/cli/validate.js +20 -0
- package/dist/cli/validate.js.map +1 -0
- package/dist/generators/generate-factiii-auto.d.ts +31 -0
- package/dist/generators/generate-factiii-auto.d.ts.map +1 -0
- package/dist/generators/generate-factiii-auto.js +251 -0
- package/dist/generators/generate-factiii-auto.js.map +1 -0
- package/dist/generators/generate-factiii-yml.d.ts +23 -0
- package/dist/generators/generate-factiii-yml.d.ts.map +1 -0
- package/dist/generators/generate-factiii-yml.js +228 -0
- package/dist/generators/generate-factiii-yml.js.map +1 -0
- package/dist/generators/index.d.ts +8 -0
- package/dist/generators/index.d.ts.map +1 -0
- package/dist/generators/index.js +14 -0
- package/dist/generators/index.js.map +1 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +90 -0
- package/dist/index.js.map +1 -0
- package/dist/plugins/addons/server-mode/index.d.ts +57 -0
- package/dist/plugins/addons/server-mode/index.d.ts.map +1 -0
- package/dist/plugins/addons/server-mode/index.js +136 -0
- package/dist/plugins/addons/server-mode/index.js.map +1 -0
- package/dist/plugins/addons/server-mode/scanfix/mac.d.ts +17 -0
- package/dist/plugins/addons/server-mode/scanfix/mac.d.ts.map +1 -0
- package/dist/plugins/addons/server-mode/scanfix/mac.js +461 -0
- package/dist/plugins/addons/server-mode/scanfix/mac.js.map +1 -0
- package/dist/plugins/addons/server-mode/scanfix/ubuntu.d.ts +12 -0
- package/dist/plugins/addons/server-mode/scanfix/ubuntu.d.ts.map +1 -0
- package/dist/plugins/addons/server-mode/scanfix/ubuntu.js +246 -0
- package/dist/plugins/addons/server-mode/scanfix/ubuntu.js.map +1 -0
- package/dist/plugins/addons/server-mode/scanfix/windows.d.ts +14 -0
- package/dist/plugins/addons/server-mode/scanfix/windows.d.ts.map +1 -0
- package/dist/plugins/addons/server-mode/scanfix/windows.js +113 -0
- package/dist/plugins/addons/server-mode/scanfix/windows.js.map +1 -0
- package/dist/plugins/approved.json +13 -0
- package/dist/plugins/frameworks/prisma-trpc/index.d.ts +65 -0
- package/dist/plugins/frameworks/prisma-trpc/index.d.ts.map +1 -0
- package/dist/plugins/frameworks/prisma-trpc/index.js +668 -0
- package/dist/plugins/frameworks/prisma-trpc/index.js.map +1 -0
- package/dist/plugins/index.d.ts +101 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +411 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/interfaces/addon.d.ts +43 -0
- package/dist/plugins/interfaces/addon.d.ts.map +1 -0
- package/dist/plugins/interfaces/addon.js +53 -0
- package/dist/plugins/interfaces/addon.js.map +1 -0
- package/dist/plugins/interfaces/framework.d.ts +43 -0
- package/dist/plugins/interfaces/framework.d.ts.map +1 -0
- package/dist/plugins/interfaces/framework.js +53 -0
- package/dist/plugins/interfaces/framework.js.map +1 -0
- package/dist/plugins/interfaces/index.d.ts +10 -0
- package/dist/plugins/interfaces/index.d.ts.map +1 -0
- package/dist/plugins/interfaces/index.js +17 -0
- package/dist/plugins/interfaces/index.js.map +1 -0
- package/dist/plugins/interfaces/pipeline.d.ts +78 -0
- package/dist/plugins/interfaces/pipeline.d.ts.map +1 -0
- package/dist/plugins/interfaces/pipeline.js +82 -0
- package/dist/plugins/interfaces/pipeline.js.map +1 -0
- package/dist/plugins/interfaces/server.d.ts +65 -0
- package/dist/plugins/interfaces/server.d.ts.map +1 -0
- package/dist/plugins/interfaces/server.js +72 -0
- package/dist/plugins/interfaces/server.js.map +1 -0
- package/dist/plugins/pipelines/aws/configs/ec2.d.ts +9 -0
- package/dist/plugins/pipelines/aws/configs/ec2.d.ts.map +1 -0
- package/dist/plugins/pipelines/aws/configs/ec2.js +34 -0
- package/dist/plugins/pipelines/aws/configs/ec2.js.map +1 -0
- package/dist/plugins/pipelines/aws/configs/free-tier.d.ts +13 -0
- package/dist/plugins/pipelines/aws/configs/free-tier.d.ts.map +1 -0
- package/dist/plugins/pipelines/aws/configs/free-tier.js +86 -0
- package/dist/plugins/pipelines/aws/configs/free-tier.js.map +1 -0
- package/dist/plugins/pipelines/aws/configs/index.d.ts +14 -0
- package/dist/plugins/pipelines/aws/configs/index.d.ts.map +1 -0
- package/dist/plugins/pipelines/aws/configs/index.js +21 -0
- package/dist/plugins/pipelines/aws/configs/index.js.map +1 -0
- package/dist/plugins/pipelines/aws/configs/types.d.ts +36 -0
- package/dist/plugins/pipelines/aws/configs/types.d.ts.map +1 -0
- package/dist/plugins/pipelines/aws/configs/types.js +9 -0
- package/dist/plugins/pipelines/aws/configs/types.js.map +1 -0
- package/dist/plugins/pipelines/aws/dev.d.ts +10 -0
- package/dist/plugins/pipelines/aws/dev.d.ts.map +1 -0
- package/dist/plugins/pipelines/aws/dev.js +70 -0
- package/dist/plugins/pipelines/aws/dev.js.map +1 -0
- package/dist/plugins/pipelines/aws/index.d.ts +118 -0
- package/dist/plugins/pipelines/aws/index.d.ts.map +1 -0
- package/dist/plugins/pipelines/aws/index.js +346 -0
- package/dist/plugins/pipelines/aws/index.js.map +1 -0
- package/dist/plugins/pipelines/aws/prod.d.ts +19 -0
- package/dist/plugins/pipelines/aws/prod.d.ts.map +1 -0
- package/dist/plugins/pipelines/aws/prod.js +362 -0
- package/dist/plugins/pipelines/aws/prod.js.map +1 -0
- package/dist/plugins/pipelines/aws/scanfix/aws-cli.d.ts +7 -0
- package/dist/plugins/pipelines/aws/scanfix/aws-cli.d.ts.map +1 -0
- package/dist/plugins/pipelines/aws/scanfix/aws-cli.js +31 -0
- package/dist/plugins/pipelines/aws/scanfix/aws-cli.js.map +1 -0
- package/dist/plugins/pipelines/aws/scanfix/config.d.ts +7 -0
- package/dist/plugins/pipelines/aws/scanfix/config.d.ts.map +1 -0
- package/dist/plugins/pipelines/aws/scanfix/config.js +134 -0
- package/dist/plugins/pipelines/aws/scanfix/config.js.map +1 -0
- package/dist/plugins/pipelines/factiii/github-secrets-store.d.ts +65 -0
- package/dist/plugins/pipelines/factiii/github-secrets-store.d.ts.map +1 -0
- package/dist/plugins/pipelines/factiii/github-secrets-store.js +221 -0
- package/dist/plugins/pipelines/factiii/github-secrets-store.js.map +1 -0
- package/dist/plugins/pipelines/factiii/index.d.ts +195 -0
- package/dist/plugins/pipelines/factiii/index.d.ts.map +1 -0
- package/dist/plugins/pipelines/factiii/index.js +862 -0
- package/dist/plugins/pipelines/factiii/index.js.map +1 -0
- package/dist/plugins/pipelines/factiii/prod.d.ts +17 -0
- package/dist/plugins/pipelines/factiii/prod.d.ts.map +1 -0
- package/dist/plugins/pipelines/factiii/prod.js +282 -0
- package/dist/plugins/pipelines/factiii/prod.js.map +1 -0
- package/dist/plugins/pipelines/factiii/scanfix/config.d.ts +7 -0
- package/dist/plugins/pipelines/factiii/scanfix/config.d.ts.map +1 -0
- package/dist/plugins/pipelines/factiii/scanfix/config.js +80 -0
- package/dist/plugins/pipelines/factiii/scanfix/config.js.map +1 -0
- package/dist/plugins/pipelines/factiii/scanfix/github-cli.d.ts +7 -0
- package/dist/plugins/pipelines/factiii/scanfix/github-cli.d.ts.map +1 -0
- package/dist/plugins/pipelines/factiii/scanfix/github-cli.js +43 -0
- package/dist/plugins/pipelines/factiii/scanfix/github-cli.js.map +1 -0
- package/dist/plugins/pipelines/factiii/scanfix/secrets.d.ts +7 -0
- package/dist/plugins/pipelines/factiii/scanfix/secrets.d.ts.map +1 -0
- package/dist/plugins/pipelines/factiii/scanfix/secrets.js +237 -0
- package/dist/plugins/pipelines/factiii/scanfix/secrets.js.map +1 -0
- package/dist/plugins/pipelines/factiii/scanfix/workflows.d.ts +7 -0
- package/dist/plugins/pipelines/factiii/scanfix/workflows.d.ts.map +1 -0
- package/dist/plugins/pipelines/factiii/scanfix/workflows.js +169 -0
- package/dist/plugins/pipelines/factiii/scanfix/workflows.js.map +1 -0
- package/dist/plugins/pipelines/factiii/staging.d.ts +25 -0
- package/dist/plugins/pipelines/factiii/staging.d.ts.map +1 -0
- package/dist/plugins/pipelines/factiii/staging.js +223 -0
- package/dist/plugins/pipelines/factiii/staging.js.map +1 -0
- package/dist/plugins/pipelines/factiii/utils/detection.d.ts +36 -0
- package/dist/plugins/pipelines/factiii/utils/detection.d.ts.map +1 -0
- package/dist/plugins/pipelines/factiii/utils/detection.js +140 -0
- package/dist/plugins/pipelines/factiii/utils/detection.js.map +1 -0
- package/dist/plugins/pipelines/factiii/utils/workflows.d.ts +16 -0
- package/dist/plugins/pipelines/factiii/utils/workflows.d.ts.map +1 -0
- package/dist/plugins/pipelines/factiii/utils/workflows.js +129 -0
- package/dist/plugins/pipelines/factiii/utils/workflows.js.map +1 -0
- package/dist/plugins/pipelines/factiii/workflows/factiii-cicd-prod.yml +112 -0
- package/dist/plugins/pipelines/factiii/workflows/factiii-cicd-staging.yml +112 -0
- package/dist/plugins/pipelines/factiii/workflows/factiii-command.yml +130 -0
- package/dist/plugins/pipelines/factiii/workflows/factiii-deploy.yml +198 -0
- package/dist/plugins/pipelines/factiii/workflows/factiii-dev-sync.yml +179 -0
- package/dist/plugins/pipelines/factiii/workflows/factiii-fix.yml +176 -0
- package/dist/plugins/pipelines/factiii/workflows/factiii-scan.yml +176 -0
- package/dist/plugins/pipelines/factiii/workflows/factiii-undeploy.yml +95 -0
- package/dist/plugins/servers/amazon-linux/index.d.ts +93 -0
- package/dist/plugins/servers/amazon-linux/index.d.ts.map +1 -0
- package/dist/plugins/servers/amazon-linux/index.js +217 -0
- package/dist/plugins/servers/amazon-linux/index.js.map +1 -0
- package/dist/plugins/servers/mac/dev.d.ts +10 -0
- package/dist/plugins/servers/mac/dev.d.ts.map +1 -0
- package/dist/plugins/servers/mac/dev.js +71 -0
- package/dist/plugins/servers/mac/dev.js.map +1 -0
- package/dist/plugins/servers/mac/index.d.ts +101 -0
- package/dist/plugins/servers/mac/index.d.ts.map +1 -0
- package/dist/plugins/servers/mac/index.js +257 -0
- package/dist/plugins/servers/mac/index.js.map +1 -0
- package/dist/plugins/servers/mac/scanfix/config.d.ts +7 -0
- package/dist/plugins/servers/mac/scanfix/config.d.ts.map +1 -0
- package/dist/plugins/servers/mac/scanfix/config.js +168 -0
- package/dist/plugins/servers/mac/scanfix/config.js.map +1 -0
- package/dist/plugins/servers/mac/scanfix/containers.d.ts +7 -0
- package/dist/plugins/servers/mac/scanfix/containers.d.ts.map +1 -0
- package/dist/plugins/servers/mac/scanfix/containers.js +167 -0
- package/dist/plugins/servers/mac/scanfix/containers.js.map +1 -0
- package/dist/plugins/servers/mac/scanfix/system.d.ts +7 -0
- package/dist/plugins/servers/mac/scanfix/system.d.ts.map +1 -0
- package/dist/plugins/servers/mac/scanfix/system.js +144 -0
- package/dist/plugins/servers/mac/scanfix/system.js.map +1 -0
- package/dist/plugins/servers/mac/staging.d.ts +21 -0
- package/dist/plugins/servers/mac/staging.d.ts.map +1 -0
- package/dist/plugins/servers/mac/staging.js +708 -0
- package/dist/plugins/servers/mac/staging.js.map +1 -0
- package/dist/plugins/servers/ubuntu/index.d.ts +93 -0
- package/dist/plugins/servers/ubuntu/index.d.ts.map +1 -0
- package/dist/plugins/servers/ubuntu/index.js +224 -0
- package/dist/plugins/servers/ubuntu/index.js.map +1 -0
- package/dist/plugins/servers/windows/index.d.ts +90 -0
- package/dist/plugins/servers/windows/index.d.ts.map +1 -0
- package/dist/plugins/servers/windows/index.js +205 -0
- package/dist/plugins/servers/windows/index.js.map +1 -0
- package/dist/scanfix/commands/index.d.ts +27 -0
- package/dist/scanfix/commands/index.d.ts.map +1 -0
- package/dist/scanfix/commands/index.js +97 -0
- package/dist/scanfix/commands/index.js.map +1 -0
- package/dist/scanfix/commands/mac.d.ts +11 -0
- package/dist/scanfix/commands/mac.d.ts.map +1 -0
- package/dist/scanfix/commands/mac.js +31 -0
- package/dist/scanfix/commands/mac.js.map +1 -0
- package/dist/scanfix/commands/ubuntu.d.ts +11 -0
- package/dist/scanfix/commands/ubuntu.d.ts.map +1 -0
- package/dist/scanfix/commands/ubuntu.js +30 -0
- package/dist/scanfix/commands/ubuntu.js.map +1 -0
- package/dist/scanfix/fixes/certbot.d.ts +25 -0
- package/dist/scanfix/fixes/certbot.d.ts.map +1 -0
- package/dist/scanfix/fixes/certbot.js +136 -0
- package/dist/scanfix/fixes/certbot.js.map +1 -0
- package/dist/scanfix/fixes/docker.d.ts +29 -0
- package/dist/scanfix/fixes/docker.d.ts.map +1 -0
- package/dist/scanfix/fixes/docker.js +149 -0
- package/dist/scanfix/fixes/docker.js.map +1 -0
- package/dist/scanfix/fixes/git.d.ts +20 -0
- package/dist/scanfix/fixes/git.d.ts.map +1 -0
- package/dist/scanfix/fixes/git.js +71 -0
- package/dist/scanfix/fixes/git.js.map +1 -0
- package/dist/scanfix/fixes/index.d.ts +11 -0
- package/dist/scanfix/fixes/index.d.ts.map +1 -0
- package/dist/scanfix/fixes/index.js +27 -0
- package/dist/scanfix/fixes/index.js.map +1 -0
- package/dist/scanfix/fixes/node.d.ts +20 -0
- package/dist/scanfix/fixes/node.d.ts.map +1 -0
- package/dist/scanfix/fixes/node.js +71 -0
- package/dist/scanfix/fixes/node.js.map +1 -0
- package/dist/scanfix/fixes/pnpm.d.ts +20 -0
- package/dist/scanfix/fixes/pnpm.d.ts.map +1 -0
- package/dist/scanfix/fixes/pnpm.js +122 -0
- package/dist/scanfix/fixes/pnpm.js.map +1 -0
- package/dist/scanfix/index.d.ts +23 -0
- package/dist/scanfix/index.d.ts.map +1 -0
- package/dist/scanfix/index.js +44 -0
- package/dist/scanfix/index.js.map +1 -0
- package/dist/scanfix/platform.d.ts +20 -0
- package/dist/scanfix/platform.d.ts.map +1 -0
- package/dist/scanfix/platform.js +48 -0
- package/dist/scanfix/platform.js.map +1 -0
- package/dist/scanfix/ssl-cert-helper.d.ts +27 -0
- package/dist/scanfix/ssl-cert-helper.d.ts.map +1 -0
- package/dist/scanfix/ssl-cert-helper.js +117 -0
- package/dist/scanfix/ssl-cert-helper.js.map +1 -0
- package/dist/scanfix/types.d.ts +27 -0
- package/dist/scanfix/types.d.ts.map +1 -0
- package/dist/scanfix/types.js +8 -0
- package/dist/scanfix/types.js.map +1 -0
- package/dist/scripts/check-existing-secrets.d.ts +6 -0
- package/dist/scripts/check-existing-secrets.d.ts.map +1 -0
- package/dist/scripts/check-existing-secrets.js +86 -0
- package/dist/scripts/check-existing-secrets.js.map +1 -0
- package/dist/scripts/generate-all.d.ts +40 -0
- package/dist/scripts/generate-all.d.ts.map +1 -0
- package/dist/scripts/generate-all.js +373 -0
- package/dist/scripts/generate-all.js.map +1 -0
- package/dist/scripts/get-repo-name.d.ts +6 -0
- package/dist/scripts/get-repo-name.d.ts.map +1 -0
- package/dist/scripts/get-repo-name.js +54 -0
- package/dist/scripts/get-repo-name.js.map +1 -0
- package/dist/scripts/index.d.ts +7 -0
- package/dist/scripts/index.d.ts.map +1 -0
- package/dist/scripts/index.js +14 -0
- package/dist/scripts/index.js.map +1 -0
- package/dist/scripts/validate-env-files.d.ts +6 -0
- package/dist/scripts/validate-env-files.d.ts.map +1 -0
- package/dist/scripts/validate-env-files.js +126 -0
- package/dist/scripts/validate-env-files.js.map +1 -0
- package/dist/scripts/validate-example-values.d.ts +8 -0
- package/dist/scripts/validate-example-values.d.ts.map +1 -0
- package/dist/scripts/validate-example-values.js +88 -0
- package/dist/scripts/validate-example-values.js.map +1 -0
- package/dist/scripts/validate-factiii-yml.d.ts +6 -0
- package/dist/scripts/validate-factiii-yml.d.ts.map +1 -0
- package/dist/scripts/validate-factiii-yml.js +71 -0
- package/dist/scripts/validate-factiii-yml.js.map +1 -0
- package/dist/types/cli.d.ts +138 -0
- package/dist/types/cli.d.ts.map +1 -0
- package/dist/types/cli.js +8 -0
- package/dist/types/cli.js.map +1 -0
- package/dist/types/config.d.ts +113 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +8 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/index.d.ts +9 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +25 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/plugin.d.ts +352 -0
- package/dist/types/plugin.d.ts.map +1 -0
- package/dist/types/plugin.js +8 -0
- package/dist/types/plugin.js.map +1 -0
- package/dist/utils/ansible-vault-secrets.d.ts +95 -0
- package/dist/utils/ansible-vault-secrets.d.ts.map +1 -0
- package/dist/utils/ansible-vault-secrets.js +406 -0
- package/dist/utils/ansible-vault-secrets.js.map +1 -0
- package/dist/utils/config-helpers.d.ts +72 -0
- package/dist/utils/config-helpers.d.ts.map +1 -0
- package/dist/utils/config-helpers.js +171 -0
- package/dist/utils/config-helpers.js.map +1 -0
- package/dist/utils/config-schema.d.ts +17 -0
- package/dist/utils/config-schema.d.ts.map +1 -0
- package/dist/utils/config-schema.js +100 -0
- package/dist/utils/config-schema.js.map +1 -0
- package/dist/utils/config-validator.d.ts +29 -0
- package/dist/utils/config-validator.d.ts.map +1 -0
- package/dist/utils/config-validator.js +146 -0
- package/dist/utils/config-validator.js.map +1 -0
- package/dist/utils/deployment-report.d.ts +100 -0
- package/dist/utils/deployment-report.d.ts.map +1 -0
- package/dist/utils/deployment-report.js +225 -0
- package/dist/utils/deployment-report.js.map +1 -0
- package/dist/utils/dns-validator.d.ts +19 -0
- package/dist/utils/dns-validator.d.ts.map +1 -0
- package/dist/utils/dns-validator.js +94 -0
- package/dist/utils/dns-validator.js.map +1 -0
- package/dist/utils/env-validator.d.ts +108 -0
- package/dist/utils/env-validator.d.ts.map +1 -0
- package/dist/utils/env-validator.js +342 -0
- package/dist/utils/env-validator.js.map +1 -0
- package/dist/utils/github-workflow-monitor.d.ts +49 -0
- package/dist/utils/github-workflow-monitor.d.ts.map +1 -0
- package/dist/utils/github-workflow-monitor.js +145 -0
- package/dist/utils/github-workflow-monitor.js.map +1 -0
- package/dist/utils/index.d.ts +18 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +48 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/secret-prompts.d.ts +67 -0
- package/dist/utils/secret-prompts.d.ts.map +1 -0
- package/dist/utils/secret-prompts.js +369 -0
- package/dist/utils/secret-prompts.js.map +1 -0
- package/dist/utils/server-check.d.ts +43 -0
- package/dist/utils/server-check.d.ts.map +1 -0
- package/dist/utils/server-check.js +397 -0
- package/dist/utils/server-check.js.map +1 -0
- package/dist/utils/ssh-deploy.d.ts +70 -0
- package/dist/utils/ssh-deploy.d.ts.map +1 -0
- package/dist/utils/ssh-deploy.js +268 -0
- package/dist/utils/ssh-deploy.js.map +1 -0
- package/dist/utils/ssh-helper.d.ts +40 -0
- package/dist/utils/ssh-helper.d.ts.map +1 -0
- package/dist/utils/ssh-helper.js +221 -0
- package/dist/utils/ssh-helper.js.map +1 -0
- package/dist/utils/template-generator.d.ts +42 -0
- package/dist/utils/template-generator.d.ts.map +1 -0
- package/dist/utils/template-generator.js +223 -0
- package/dist/utils/template-generator.js.map +1 -0
- package/dist/utils/version-check.d.ts +69 -0
- package/dist/utils/version-check.d.ts.map +1 -0
- package/dist/utils/version-check.js +211 -0
- package/dist/utils/version-check.js.map +1 -0
- package/package.json +82 -0
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Production environment operations for AWS plugin
|
|
4
|
+
* Handles production deployment, server preparation, and production-specific helpers
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
39
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
40
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
41
|
+
};
|
|
42
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
+
exports.ensureServerReady = ensureServerReady;
|
|
44
|
+
exports.deployProd = deployProd;
|
|
45
|
+
const fs = __importStar(require("fs"));
|
|
46
|
+
const path = __importStar(require("path"));
|
|
47
|
+
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
48
|
+
const ssh_helper_js_1 = require("../../../utils/ssh-helper.js");
|
|
49
|
+
const config_helpers_js_1 = require("../../../utils/config-helpers.js");
|
|
50
|
+
const index_js_1 = require("../../../scripts/index.js");
|
|
51
|
+
/**
|
|
52
|
+
* Execute a command on a remote server via SSH
|
|
53
|
+
*/
|
|
54
|
+
async function sshExecCommand(envConfig, command) {
|
|
55
|
+
return await (0, ssh_helper_js_1.sshExec)(envConfig, command);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Ensure Node.js is installed on the server
|
|
59
|
+
*/
|
|
60
|
+
async function ensureNodeInstalled(envConfig) {
|
|
61
|
+
try {
|
|
62
|
+
await sshExecCommand(envConfig, 'which node');
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
console.log(' Installing Node.js...');
|
|
66
|
+
await sshExecCommand(envConfig, 'curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - && sudo apt-get install -y nodejs');
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Ensure git is installed on the server
|
|
71
|
+
*/
|
|
72
|
+
async function ensureGitInstalled(envConfig) {
|
|
73
|
+
try {
|
|
74
|
+
await sshExecCommand(envConfig, 'which git');
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
console.log(' Installing git...');
|
|
78
|
+
await sshExecCommand(envConfig, 'sudo apt-get update && sudo apt-get install -y git');
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Ensure repository is cloned
|
|
83
|
+
*/
|
|
84
|
+
async function ensureRepoCloned(envConfig, repoUrl, repoDir, repoName) {
|
|
85
|
+
const checkExists = await sshExecCommand(envConfig, `test -d ${repoDir}/.git && echo "exists" || echo "missing"`);
|
|
86
|
+
if (checkExists.includes('missing')) {
|
|
87
|
+
console.log(' Cloning repository...');
|
|
88
|
+
// Extract GitHub repo from URL if provided, otherwise use GITHUB_REPO env var
|
|
89
|
+
let gitUrl = repoUrl;
|
|
90
|
+
if (repoUrl && !repoUrl.startsWith('git@') && !repoUrl.startsWith('https://')) {
|
|
91
|
+
// Format: owner/repo
|
|
92
|
+
gitUrl = `git@github.com:${repoUrl}.git`;
|
|
93
|
+
}
|
|
94
|
+
await sshExecCommand(envConfig, `mkdir -p ~/.factiii && cd ~/.factiii && git clone ${gitUrl} ${repoName}`);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Pull latest changes and checkout specific commit
|
|
99
|
+
*/
|
|
100
|
+
async function pullAndCheckout(envConfig, repoDir, branch, commitHash) {
|
|
101
|
+
console.log(` Checking out ${branch}${commitHash ? ' @ ' + commitHash.substring(0, 7) : ''}...`);
|
|
102
|
+
const commands = [
|
|
103
|
+
`cd ${repoDir}`,
|
|
104
|
+
'git fetch --all',
|
|
105
|
+
`git checkout ${branch}`,
|
|
106
|
+
`git pull origin ${branch}`,
|
|
107
|
+
];
|
|
108
|
+
// If commit hash provided, checkout that specific commit
|
|
109
|
+
if (commitHash) {
|
|
110
|
+
commands.push(`git checkout ${commitHash}`);
|
|
111
|
+
}
|
|
112
|
+
await sshExecCommand(envConfig, commands.join(' && '));
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Write environment variables to .env file on server
|
|
116
|
+
* Handles both local (on-server) and remote (SSH) execution
|
|
117
|
+
*/
|
|
118
|
+
async function writeEnvFile(envConfig, repoDir, environment, envVarsString) {
|
|
119
|
+
if (!envVarsString) {
|
|
120
|
+
// If no env vars provided, skip writing (allow manual .env files)
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
const envFileName = `.env.${environment === 'production' ? 'prod' : environment}`;
|
|
124
|
+
const isOnServer = process.env.GITHUB_ACTIONS === 'true';
|
|
125
|
+
// Parse env vars string (newline-separated KEY=VALUE format)
|
|
126
|
+
const envVars = envVarsString
|
|
127
|
+
.split('\n')
|
|
128
|
+
.map((line) => line.trim())
|
|
129
|
+
.filter((line) => line && !line.startsWith('#'))
|
|
130
|
+
.filter((line) => line.includes('='));
|
|
131
|
+
if (envVars.length === 0) {
|
|
132
|
+
console.log(` ⚠️ No environment variables found in ${environment} secrets`);
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
// Build env file content
|
|
136
|
+
const envFileContent = envVars.join('\n') + '\n';
|
|
137
|
+
if (isOnServer) {
|
|
138
|
+
// We're on the server - write directly
|
|
139
|
+
const expandedRepoDir = repoDir.replace('~', process.env.HOME ?? '/home/ubuntu');
|
|
140
|
+
const envFilePath = path.join(expandedRepoDir, envFileName);
|
|
141
|
+
console.log(` 📝 Writing ${envFileName} (${envVars.length} variables)...`);
|
|
142
|
+
fs.writeFileSync(envFilePath, envFileContent, 'utf8');
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
// We're remote - SSH to write
|
|
146
|
+
console.log(` 📝 Writing ${envFileName} on remote server (${envVars.length} variables)...`);
|
|
147
|
+
await sshExecCommand(envConfig, `cat > ${repoDir}/${envFileName} << 'ENVEOF'
|
|
148
|
+
${envFileContent}ENVEOF`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
// ============================================================
|
|
152
|
+
// CRITICAL: SSL Certificate Management
|
|
153
|
+
// ============================================================
|
|
154
|
+
// Why this exists: Automatically obtain/renew Let's Encrypt SSL certificates
|
|
155
|
+
// What breaks if changed: HTTPS will fail, browsers show security warnings
|
|
156
|
+
// Dependencies: Docker must be installed, ssl_email must be configured
|
|
157
|
+
// Uses Docker certbot for portability (no host certbot installation needed)
|
|
158
|
+
// ============================================================
|
|
159
|
+
/**
|
|
160
|
+
* Run certbot to obtain/renew SSL certificates using Docker
|
|
161
|
+
* Called after nginx.conf is generated but before containers start
|
|
162
|
+
* Collects all domains from all environments in factiii.yml and obtains certificates
|
|
163
|
+
* Uses standalone mode with Docker certbot (nginx must be stopped first)
|
|
164
|
+
*/
|
|
165
|
+
async function runCertbot(envConfig, config) {
|
|
166
|
+
const environments = (0, config_helpers_js_1.extractEnvironments)(config);
|
|
167
|
+
// Collect all domains that need certificates
|
|
168
|
+
const domains = [];
|
|
169
|
+
for (const env of Object.values(environments)) {
|
|
170
|
+
if (env.domain && !env.domain.startsWith('EXAMPLE-')) {
|
|
171
|
+
domains.push(env.domain);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
if (domains.length === 0) {
|
|
175
|
+
console.log(' No domains configured, skipping SSL certificates');
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
const sslEmail = config.ssl_email;
|
|
179
|
+
if (!sslEmail || sslEmail.startsWith('EXAMPLE-')) {
|
|
180
|
+
console.log(' ⚠️ ssl_email not configured in factiii.yml, skipping SSL');
|
|
181
|
+
console.log(' Add ssl_email to factiii.yml to enable automatic SSL certificates');
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
// For each domain, obtain certificate using Docker certbot
|
|
185
|
+
for (const domain of domains) {
|
|
186
|
+
console.log(` Obtaining SSL certificate for: ${domain}`);
|
|
187
|
+
// Build Docker certbot command (standalone mode - port 80 must be free)
|
|
188
|
+
const certbotCmd = [
|
|
189
|
+
'docker run --rm',
|
|
190
|
+
'-v /etc/letsencrypt:/etc/letsencrypt',
|
|
191
|
+
'-v /var/lib/letsencrypt:/var/lib/letsencrypt',
|
|
192
|
+
'-p 80:80',
|
|
193
|
+
'certbot/certbot certonly',
|
|
194
|
+
'--standalone',
|
|
195
|
+
'-d ' + domain,
|
|
196
|
+
'--email ' + sslEmail,
|
|
197
|
+
'--agree-tos',
|
|
198
|
+
'--non-interactive',
|
|
199
|
+
].join(' ');
|
|
200
|
+
try {
|
|
201
|
+
await sshExecCommand(envConfig, certbotCmd);
|
|
202
|
+
console.log(` ✅ SSL certificate obtained for ${domain}`);
|
|
203
|
+
}
|
|
204
|
+
catch (error) {
|
|
205
|
+
console.log(` ⚠️ Certbot failed for ${domain}, continuing without SSL`);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Setup automatic certificate renewal via cron using Docker certbot
|
|
211
|
+
* Only runs once - checks if renewal is already configured
|
|
212
|
+
*/
|
|
213
|
+
async function setupCertbotRenewal(envConfig) {
|
|
214
|
+
console.log(' Setting up automatic certificate renewal...');
|
|
215
|
+
// Docker certbot renewal command (webroot mode since nginx will be running)
|
|
216
|
+
const renewCmd = 'docker run --rm -v /etc/letsencrypt:/etc/letsencrypt -v /var/lib/letsencrypt:/var/lib/letsencrypt -v /var/www/certbot:/var/www/certbot certbot/certbot renew --quiet && docker exec factiii_nginx nginx -s reload';
|
|
217
|
+
// Check if certbot renewal is already configured
|
|
218
|
+
const cronCheck = await sshExecCommand(envConfig, 'crontab -l 2>/dev/null | grep "certbot/certbot renew" || echo "NOT_FOUND"');
|
|
219
|
+
if (cronCheck.includes('NOT_FOUND')) {
|
|
220
|
+
// Add renewal cron job (runs twice daily)
|
|
221
|
+
await sshExecCommand(envConfig, `(crontab -l 2>/dev/null; echo "0 0,12 * * * ${renewCmd}") | crontab -`);
|
|
222
|
+
console.log(' ✅ Configured automatic certificate renewal (twice daily)');
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
console.log(' ✅ Certificate renewal already configured');
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Update docker-compose.yml to replace build context with ECR image for prod services
|
|
230
|
+
* This is called after generate-all.js runs (which generates generic compose with build context)
|
|
231
|
+
*/
|
|
232
|
+
async function updateComposeForECR(envConfig, config) {
|
|
233
|
+
const repoName = config.name ?? 'app';
|
|
234
|
+
const region = config.aws?.region ?? 'us-east-1';
|
|
235
|
+
const serviceName = `${repoName}-prod`;
|
|
236
|
+
// Get ECR registry - use config value or construct from AWS account ID on server
|
|
237
|
+
let ecrRegistry;
|
|
238
|
+
if (config.ecr_registry) {
|
|
239
|
+
ecrRegistry = config.ecr_registry;
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
// Get AWS account ID from the server
|
|
243
|
+
try {
|
|
244
|
+
const accountId = await sshExecCommand(envConfig, `aws sts get-caller-identity --query Account --output text --region ${region}`);
|
|
245
|
+
ecrRegistry = `${accountId.trim()}.dkr.ecr.${region}.amazonaws.com`;
|
|
246
|
+
}
|
|
247
|
+
catch (error) {
|
|
248
|
+
throw new Error(`Failed to get AWS account ID from server: ${error instanceof Error ? error.message : String(error)}`);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
const ecrRepository = config.ecr_repository ?? repoName;
|
|
252
|
+
const imageTag = `${ecrRegistry}/${ecrRepository}:latest`;
|
|
253
|
+
// Read docker-compose.yml from server
|
|
254
|
+
const composeContent = await sshExecCommand(envConfig, 'cat ~/.factiii/docker-compose.yml');
|
|
255
|
+
// Parse and update
|
|
256
|
+
const compose = js_yaml_1.default.load(composeContent);
|
|
257
|
+
if (compose.services && compose.services[serviceName]) {
|
|
258
|
+
// Remove build section and set image to ECR
|
|
259
|
+
delete compose.services[serviceName].build;
|
|
260
|
+
compose.services[serviceName].image = imageTag;
|
|
261
|
+
}
|
|
262
|
+
// Write back to server
|
|
263
|
+
const updatedContent = js_yaml_1.default.dump(compose, { lineWidth: -1 });
|
|
264
|
+
await sshExecCommand(envConfig, `cat > ~/.factiii/docker-compose.yml << 'EOF'\n${updatedContent}\nEOF`);
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Ensure server is ready for deployment
|
|
268
|
+
* Installs Node.js, git, clones repo, checks out commit
|
|
269
|
+
* Note: Production doesn't install dependencies (pulls pre-built images)
|
|
270
|
+
*/
|
|
271
|
+
async function ensureServerReady(config, environment, options = {}) {
|
|
272
|
+
// AWS only handles prod-type environments (prod, prod2, production, etc.)
|
|
273
|
+
if (!environment.startsWith('prod') && environment !== 'production') {
|
|
274
|
+
return { success: true, message: 'AWS only handles production environments' };
|
|
275
|
+
}
|
|
276
|
+
// Get environment config (supports both v1.x and v2.0.0+ formats)
|
|
277
|
+
const environments = (0, config_helpers_js_1.extractEnvironments)(config);
|
|
278
|
+
const envConfig = environments[environment] ?? environments['prod'] ?? environments['production'];
|
|
279
|
+
if (!envConfig?.domain) {
|
|
280
|
+
throw new Error(`${environment} domain not configured`);
|
|
281
|
+
}
|
|
282
|
+
const { commitHash, branch = 'main', repoUrl } = options;
|
|
283
|
+
const repoName = config.name ?? 'app';
|
|
284
|
+
const repoDir = `~/.factiii/${repoName}`;
|
|
285
|
+
try {
|
|
286
|
+
// 1. Ensure Node.js is installed
|
|
287
|
+
console.log(' Checking Node.js...');
|
|
288
|
+
await ensureNodeInstalled(envConfig);
|
|
289
|
+
// 2. Ensure git is installed
|
|
290
|
+
console.log(' Checking git...');
|
|
291
|
+
await ensureGitInstalled(envConfig);
|
|
292
|
+
// 3. Ensure repo is cloned and up to date
|
|
293
|
+
console.log(' Syncing repository...');
|
|
294
|
+
await ensureRepoCloned(envConfig, repoUrl, repoDir, repoName);
|
|
295
|
+
await pullAndCheckout(envConfig, repoDir, branch, commitHash);
|
|
296
|
+
// 4. Write environment variables from GitHub secrets if provided
|
|
297
|
+
const envVarsString = process.env.PROD_ENVS;
|
|
298
|
+
if (envVarsString) {
|
|
299
|
+
console.log(' Writing environment variables...');
|
|
300
|
+
await writeEnvFile(envConfig, repoDir, 'prod', envVarsString);
|
|
301
|
+
}
|
|
302
|
+
else {
|
|
303
|
+
console.log(' ⚠️ PROD_ENVS not provided, skipping env file write (using existing .env.prod if present)');
|
|
304
|
+
}
|
|
305
|
+
// Note: Production doesn't install dependencies - it pulls pre-built images from ECR
|
|
306
|
+
return { success: true, message: 'Server ready' };
|
|
307
|
+
}
|
|
308
|
+
catch (error) {
|
|
309
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
310
|
+
throw new Error(`Failed to prepare server: ${errorMessage}`);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Deploy to production server (pull from ECR)
|
|
315
|
+
*
|
|
316
|
+
* @param config - Factiii config (supports both v1.x and v2.0.0+)
|
|
317
|
+
* @param environment - Environment name (defaults to 'prod' for backward compatibility)
|
|
318
|
+
*/
|
|
319
|
+
async function deployProd(config, environment = 'prod') {
|
|
320
|
+
// Get environment config (supports both v1.x and v2.0.0+ formats)
|
|
321
|
+
const environments = (0, config_helpers_js_1.extractEnvironments)(config);
|
|
322
|
+
const envConfig = environments[environment] ?? environments['prod'] ?? environments['production'];
|
|
323
|
+
if (!envConfig?.domain) {
|
|
324
|
+
return { success: false, error: `${environment} domain not configured` };
|
|
325
|
+
}
|
|
326
|
+
console.log(` 🚀 Deploying to production (${envConfig.domain})...`);
|
|
327
|
+
try {
|
|
328
|
+
const repoName = config.name ?? 'app';
|
|
329
|
+
const region = config.aws?.region ?? 'us-east-1';
|
|
330
|
+
// Step 1: Regenerate unified docker-compose.yml (generic, uses build context)
|
|
331
|
+
console.log(' 🔄 Regenerating unified docker-compose.yml...');
|
|
332
|
+
const repos = (0, index_js_1.scanRepos)();
|
|
333
|
+
const configs = (0, index_js_1.loadConfigs)(repos);
|
|
334
|
+
(0, index_js_1.generateDockerCompose)(configs);
|
|
335
|
+
(0, index_js_1.generateNginx)(configs);
|
|
336
|
+
// Step 2: Update docker-compose.yml to use ECR image for prod services
|
|
337
|
+
console.log(' 🔄 Updating docker-compose.yml with ECR image references...');
|
|
338
|
+
await updateComposeForECR(envConfig, config);
|
|
339
|
+
// Step 3: Login to ECR and pull latest image
|
|
340
|
+
console.log(' 🔐 Logging in to ECR and pulling image...');
|
|
341
|
+
await sshExecCommand(envConfig, `
|
|
342
|
+
aws ecr get-login-password --region ${region} | docker login --username AWS --password-stdin $(aws sts get-caller-identity --query Account --output text).dkr.ecr.${region}.amazonaws.com && \
|
|
343
|
+
cd ~/.factiii && \
|
|
344
|
+
docker compose pull ${repoName}-prod
|
|
345
|
+
`);
|
|
346
|
+
// Step 4: Manage SSL certificates
|
|
347
|
+
console.log(' 🔐 Managing SSL certificates...');
|
|
348
|
+
await runCertbot(envConfig, config);
|
|
349
|
+
await setupCertbotRenewal(envConfig);
|
|
350
|
+
// Step 5: Start containers using unified docker-compose.yml
|
|
351
|
+
console.log(' 🚀 Starting containers with unified docker-compose.yml...');
|
|
352
|
+
await sshExecCommand(envConfig, `cd ~/.factiii && docker compose up -d ${repoName}-prod`);
|
|
353
|
+
return { success: true, message: 'Production deployment complete' };
|
|
354
|
+
}
|
|
355
|
+
catch (error) {
|
|
356
|
+
return {
|
|
357
|
+
success: false,
|
|
358
|
+
error: error instanceof Error ? error.message : String(error),
|
|
359
|
+
};
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
//# sourceMappingURL=prod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prod.js","sourceRoot":"","sources":["../../../../src/plugins/pipelines/aws/prod.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aws-cli.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/aws/scanfix/aws-cli.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAiB,GAAG,EAAE,MAAM,4BAA4B,CAAC;AAErE,eAAO,MAAM,WAAW,EAAE,GAAG,EAoB5B,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* AWS CLI fixes for AWS plugin
|
|
4
|
+
* Handles AWS CLI installation for dev environment
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.awsCliFixes = void 0;
|
|
8
|
+
const child_process_1 = require("child_process");
|
|
9
|
+
exports.awsCliFixes = [
|
|
10
|
+
{
|
|
11
|
+
id: 'aws-cli-not-installed-dev',
|
|
12
|
+
stage: 'dev',
|
|
13
|
+
severity: 'warning',
|
|
14
|
+
description: 'AWS CLI not installed (needed for ECR)',
|
|
15
|
+
scan: async (config, _rootDir) => {
|
|
16
|
+
// Only check if AWS is configured
|
|
17
|
+
if (!config?.aws?.access_key_id)
|
|
18
|
+
return false;
|
|
19
|
+
try {
|
|
20
|
+
(0, child_process_1.execSync)('which aws', { stdio: 'pipe' });
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
fix: null,
|
|
28
|
+
manualFix: 'Install AWS CLI: brew install awscli',
|
|
29
|
+
},
|
|
30
|
+
];
|
|
31
|
+
//# sourceMappingURL=aws-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aws-cli.js","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/aws/scanfix/aws-cli.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,iDAAyC;AAG5B,QAAA,WAAW,GAAU;IAChC;QACE,EAAE,EAAE,2BAA2B;QAC/B,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,wCAAwC;QACrD,IAAI,EAAE,KAAK,EAAE,MAAqB,EAAE,QAAgB,EAAoB,EAAE;YACxE,kCAAkC;YAClC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,aAAa;gBAAE,OAAO,KAAK,CAAC;YAE9C,IAAI,CAAC;gBACH,IAAA,wBAAQ,EAAC,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;gBACzC,OAAO,KAAK,CAAC;YACf,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,GAAG,EAAE,IAAI;QACT,SAAS,EAAE,sCAAsC;KAClD;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/aws/scanfix/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAiB,GAAG,EAAE,MAAM,4BAA4B,CAAC;AAErE,eAAO,MAAM,WAAW,EAAE,GAAG,EA6F5B,CAAC"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Configuration-related fixes for AWS plugin
|
|
4
|
+
* Handles configuration checks and validation
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.configFixes = void 0;
|
|
41
|
+
const child_process_1 = require("child_process");
|
|
42
|
+
exports.configFixes = [
|
|
43
|
+
// PROD STAGE FIXES
|
|
44
|
+
{
|
|
45
|
+
id: 'prod-domain-missing',
|
|
46
|
+
stage: 'prod',
|
|
47
|
+
severity: 'critical',
|
|
48
|
+
description: 'Production domain not configured in factiii.yml',
|
|
49
|
+
scan: async (config, _rootDir) => {
|
|
50
|
+
const { extractEnvironments } = await Promise.resolve().then(() => __importStar(require('../../../../utils/config-helpers.js')));
|
|
51
|
+
const environments = extractEnvironments(config);
|
|
52
|
+
// Only check if prod environment is defined in config
|
|
53
|
+
const hasProdEnv = environments.prod || environments.production;
|
|
54
|
+
if (!hasProdEnv)
|
|
55
|
+
return false; // Skip check if prod not configured
|
|
56
|
+
return !environments.prod?.domain && !environments.production?.domain;
|
|
57
|
+
},
|
|
58
|
+
fix: null,
|
|
59
|
+
manualFix: 'Add prod.domain to factiii.yml',
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
id: 'prod-aws-config-missing',
|
|
63
|
+
stage: 'prod',
|
|
64
|
+
severity: 'critical',
|
|
65
|
+
description: 'AWS configuration missing in factiii.yml',
|
|
66
|
+
scan: async (config, _rootDir) => {
|
|
67
|
+
const { extractEnvironments } = await Promise.resolve().then(() => __importStar(require('../../../../utils/config-helpers.js')));
|
|
68
|
+
const environments = extractEnvironments(config);
|
|
69
|
+
// Only check if prod environment is defined in config
|
|
70
|
+
const hasProdEnv = environments.prod || environments.production;
|
|
71
|
+
if (!hasProdEnv)
|
|
72
|
+
return false; // Skip check if prod not configured
|
|
73
|
+
const prodEnv = environments.prod ?? environments.production;
|
|
74
|
+
return !prodEnv?.access_key_id || !prodEnv?.region;
|
|
75
|
+
},
|
|
76
|
+
fix: null,
|
|
77
|
+
manualFix: 'Add access_key_id and region to prod environment in factiii.yml',
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
id: 'prod-unreachable',
|
|
81
|
+
stage: 'prod',
|
|
82
|
+
severity: 'critical',
|
|
83
|
+
description: 'Cannot reach production server',
|
|
84
|
+
scan: async (config, _rootDir) => {
|
|
85
|
+
const { extractEnvironments } = await Promise.resolve().then(() => __importStar(require('../../../../utils/config-helpers.js')));
|
|
86
|
+
const environments = extractEnvironments(config);
|
|
87
|
+
// Only check if prod environment is defined in config
|
|
88
|
+
const hasProdEnv = environments.prod || environments.production;
|
|
89
|
+
if (!hasProdEnv)
|
|
90
|
+
return false; // Skip check if prod not configured
|
|
91
|
+
const domain = environments.prod?.domain ?? environments.production?.domain;
|
|
92
|
+
if (!domain)
|
|
93
|
+
return false;
|
|
94
|
+
try {
|
|
95
|
+
(0, child_process_1.execSync)(`ping -c 1 -W 3 ${domain}`, { stdio: 'pipe' });
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
return true;
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
fix: null,
|
|
103
|
+
manualFix: 'Check network connectivity to production server',
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
id: 'prod-repo-not-cloned',
|
|
107
|
+
stage: 'prod',
|
|
108
|
+
severity: 'warning',
|
|
109
|
+
description: 'Repository not cloned on production server',
|
|
110
|
+
scan: async (config, _rootDir) => {
|
|
111
|
+
const { extractEnvironments } = await Promise.resolve().then(() => __importStar(require('../../../../utils/config-helpers.js')));
|
|
112
|
+
const environments = extractEnvironments(config);
|
|
113
|
+
const envConfig = environments.prod ?? environments.production;
|
|
114
|
+
if (!envConfig)
|
|
115
|
+
return false;
|
|
116
|
+
if (!envConfig?.domain)
|
|
117
|
+
return false;
|
|
118
|
+
const repoName = config.name ?? 'app';
|
|
119
|
+
// Executed locally - SSH handled by CLI wrapper
|
|
120
|
+
const fs = await Promise.resolve().then(() => __importStar(require('fs')));
|
|
121
|
+
const path = await Promise.resolve().then(() => __importStar(require('path')));
|
|
122
|
+
try {
|
|
123
|
+
const repoPath = path.join(process.env.HOME ?? '/home/ubuntu', '.factiii', repoName, '.git');
|
|
124
|
+
return !fs.existsSync(repoPath);
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
return true;
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
fix: null, // Will be handled by ensureServerReady()
|
|
131
|
+
manualFix: 'Repository will be cloned automatically on first deployment',
|
|
132
|
+
},
|
|
133
|
+
];
|
|
134
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/aws/scanfix/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub Secrets Store
|
|
3
|
+
*
|
|
4
|
+
* Utility for managing GitHub repository secrets via the GitHub API.
|
|
5
|
+
* Used by the pipeline plugin and secrets CLI command.
|
|
6
|
+
*/
|
|
7
|
+
interface RepoInfo {
|
|
8
|
+
owner: string;
|
|
9
|
+
repo: string;
|
|
10
|
+
}
|
|
11
|
+
interface SetSecretResult {
|
|
12
|
+
success: boolean;
|
|
13
|
+
error?: string;
|
|
14
|
+
}
|
|
15
|
+
interface CheckSecretsResult {
|
|
16
|
+
existing?: string[];
|
|
17
|
+
status?: Record<string, boolean>;
|
|
18
|
+
missing?: string[];
|
|
19
|
+
error?: string;
|
|
20
|
+
}
|
|
21
|
+
interface PublicKeyResponse {
|
|
22
|
+
key: string;
|
|
23
|
+
key_id: string;
|
|
24
|
+
}
|
|
25
|
+
interface GitHubSecretsStoreConfig {
|
|
26
|
+
token?: string;
|
|
27
|
+
owner?: string;
|
|
28
|
+
repo?: string;
|
|
29
|
+
}
|
|
30
|
+
export declare class GitHubSecretsStore {
|
|
31
|
+
private token?;
|
|
32
|
+
private owner?;
|
|
33
|
+
private repo?;
|
|
34
|
+
constructor(config?: GitHubSecretsStoreConfig);
|
|
35
|
+
/**
|
|
36
|
+
* Get repository info from git remote
|
|
37
|
+
*/
|
|
38
|
+
static getRepoInfo(): RepoInfo | null;
|
|
39
|
+
/**
|
|
40
|
+
* Make GitHub API request
|
|
41
|
+
*/
|
|
42
|
+
private request;
|
|
43
|
+
/**
|
|
44
|
+
* Get repository public key for encrypting secrets
|
|
45
|
+
*/
|
|
46
|
+
getPublicKey(): Promise<PublicKeyResponse>;
|
|
47
|
+
/**
|
|
48
|
+
* Encrypt a secret value using the repository's public key
|
|
49
|
+
*/
|
|
50
|
+
encryptSecret(value: string, _publicKey: string): string;
|
|
51
|
+
/**
|
|
52
|
+
* Set a secret in the repository
|
|
53
|
+
*/
|
|
54
|
+
setSecret(name: string, value: string): Promise<SetSecretResult>;
|
|
55
|
+
/**
|
|
56
|
+
* Check which secrets exist
|
|
57
|
+
*/
|
|
58
|
+
checkSecrets(secretNames: string[]): Promise<CheckSecretsResult>;
|
|
59
|
+
/**
|
|
60
|
+
* Delete a secret
|
|
61
|
+
*/
|
|
62
|
+
deleteSecret(name: string): Promise<SetSecretResult>;
|
|
63
|
+
}
|
|
64
|
+
export {};
|
|
65
|
+
//# sourceMappingURL=github-secrets-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-secrets-store.d.ts","sourceRoot":"","sources":["../../../../src/plugins/pipelines/factiii/github-secrets-store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,UAAU,QAAQ;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,eAAe;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,iBAAiB;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAMD,UAAU,wBAAwB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,KAAK,CAAC,CAAS;IACvB,OAAO,CAAC,KAAK,CAAC,CAAS;IACvB,OAAO,CAAC,IAAI,CAAC,CAAS;gBAEV,MAAM,GAAE,wBAA6B;IAejD;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,QAAQ,GAAG,IAAI;IAuBrC;;OAEG;YACW,OAAO;IAwDrB;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAKhD;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IAQxD;;OAEG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAwBtE;;OAEG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA6BtE;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;CAY3D"}
|