|
21 | 21 | PIP := $(CURDIR)/$(VENV_DIR)/bin/pip |
22 | 22 | endif |
23 | 23 |
|
| 24 | +# idp-cli invocation — uses `python -m idp_cli.cli` so it works whether or not |
| 25 | +# the virtualenv is activated (picks up $(PYTHON) which prefers .venv). |
| 26 | +IDP_CLI := $(PYTHON) -m idp_cli.cli |
| 27 | + |
24 | 28 | ##@ General |
25 | 29 | .PHONY: help |
26 | 30 | help: ## Show this help message |
@@ -393,3 +397,74 @@ dsr-scan: ## Run DSR security scan |
393 | 397 | dsr-fix: ## Run DSR interactive fix |
394 | 398 | @echo "Running DSR interactive fix..." |
395 | 399 | $(PYTHON) scripts/dsr/fix.py |
| 400 | + |
| 401 | +##@ Deploy |
| 402 | +# Thin wrappers around `idp-cli publish` / `deploy` / `delete` for the common |
| 403 | +# 80% case. Uncommon flags can still be passed via EXTRA_ARGS="--foo --bar". |
| 404 | +# See 'docs/idp-cli.md' (or 'idp-cli <cmd> --help') for the full option list. |
| 405 | + |
| 406 | +.PHONY: publish deploy delete-stack |
| 407 | + |
| 408 | +# Usage examples: |
| 409 | +# make publish REGION=us-east-1 |
| 410 | +# make publish REGION=us-east-1 BUCKET_BASENAME=my-idp-artifacts PREFIX=v1 |
| 411 | +# make publish REGION=us-gov-west-1 HEADLESS=1 |
| 412 | +# make publish REGION=us-east-1 PUBLIC=1 EXTRA_ARGS="--clean-build --verbose" |
| 413 | +publish: ## Build & publish IDP artifacts to S3 (Usage: make publish REGION=... [BUCKET_BASENAME=...] [PREFIX=...] [HEADLESS=1] [PUBLIC=1] [EXTRA_ARGS=...]) |
| 414 | +ifndef REGION |
| 415 | + $(error REGION is not set. Usage: make publish REGION=us-east-1 [BUCKET_BASENAME=...] [PREFIX=...] [HEADLESS=1] [PUBLIC=1] [EXTRA_ARGS=...]) |
| 416 | +endif |
| 417 | + @echo -e "$(CYAN)Running idp-cli publish (region=$(REGION))...$(NC)" |
| 418 | + $(IDP_CLI) publish \ |
| 419 | + --source-dir . \ |
| 420 | + --region $(REGION) \ |
| 421 | + $(if $(BUCKET_BASENAME),--bucket-basename $(BUCKET_BASENAME)) \ |
| 422 | + $(if $(PREFIX),--prefix $(PREFIX)) \ |
| 423 | + $(if $(HEADLESS),--headless) \ |
| 424 | + $(if $(PUBLIC),--public) \ |
| 425 | + $(EXTRA_ARGS) |
| 426 | + |
| 427 | +# Usage examples: |
| 428 | +# make deploy STACK_NAME=my-idp ADMIN_EMAIL=me@example.com # create new stack |
| 429 | +# make deploy STACK_NAME=my-idp # update existing stack |
| 430 | +# make deploy STACK_NAME=my-idp-dev ADMIN_EMAIL=me@example.com FROM_CODE=1 # build & deploy from local source |
| 431 | +# make deploy STACK_NAME=my-idp ADMIN_EMAIL=me@example.com HEADLESS=1 # headless (no UI) |
| 432 | +# make deploy STACK_NAME=my-idp CUSTOM_CONFIG=./my-config.yaml # update config on existing stack |
| 433 | +# make deploy STACK_NAME=my-idp NO_WAIT=1 # fire-and-forget (default is --wait) |
| 434 | +# make deploy STACK_NAME=my-idp EXTRA_ARGS="--max-concurrent 200 --log-level DEBUG" |
| 435 | +deploy: ## Deploy/update IDP CloudFormation stack (Usage: make deploy STACK_NAME=... [ADMIN_EMAIL=...] [REGION=...] [FROM_CODE=1] [HEADLESS=1] [CUSTOM_CONFIG=...] [TEMPLATE_URL=...] [TEMPLATE_FILE=...] [NO_WAIT=1] [EXTRA_ARGS=...]) |
| 436 | +ifndef STACK_NAME |
| 437 | + $(error STACK_NAME is not set. Usage: make deploy STACK_NAME=my-stack [ADMIN_EMAIL=...] [REGION=...] [FROM_CODE=1] [HEADLESS=1] [CUSTOM_CONFIG=...] [NO_WAIT=1] [EXTRA_ARGS=...]) |
| 438 | +endif |
| 439 | + @echo -e "$(CYAN)Running idp-cli deploy (stack=$(STACK_NAME))...$(NC)" |
| 440 | + $(IDP_CLI) deploy \ |
| 441 | + --stack-name $(STACK_NAME) \ |
| 442 | + $(if $(ADMIN_EMAIL),--admin-email $(ADMIN_EMAIL)) \ |
| 443 | + $(if $(REGION),--region $(REGION)) \ |
| 444 | + $(if $(FROM_CODE),--from-code .) \ |
| 445 | + $(if $(HEADLESS),--headless) \ |
| 446 | + $(if $(CUSTOM_CONFIG),--custom-config $(CUSTOM_CONFIG)) \ |
| 447 | + $(if $(TEMPLATE_URL),--template-url $(TEMPLATE_URL)) \ |
| 448 | + $(if $(TEMPLATE_FILE),--template-file $(TEMPLATE_FILE)) \ |
| 449 | + $(if $(NO_WAIT),,--wait) \ |
| 450 | + $(EXTRA_ARGS) |
| 451 | + |
| 452 | +# Usage examples: |
| 453 | +# make delete-stack STACK_NAME=test-stack # interactive |
| 454 | +# make delete-stack STACK_NAME=test-stack FORCE=1 # skip confirmation |
| 455 | +# make delete-stack STACK_NAME=test-stack FORCE=1 EMPTY_BUCKETS=1 # empty buckets first |
| 456 | +# make delete-stack STACK_NAME=test-stack FORCE=1 FORCE_DELETE_ALL=1 # comprehensive cleanup |
| 457 | +delete-stack: ## Delete an IDP CloudFormation stack (Usage: make delete-stack STACK_NAME=... [FORCE=1] [EMPTY_BUCKETS=1] [FORCE_DELETE_ALL=1] [REGION=...] [NO_WAIT=1] [EXTRA_ARGS=...]) |
| 458 | +ifndef STACK_NAME |
| 459 | + $(error STACK_NAME is not set. Usage: make delete-stack STACK_NAME=my-stack [FORCE=1] [EMPTY_BUCKETS=1] [FORCE_DELETE_ALL=1]) |
| 460 | +endif |
| 461 | + @echo -e "$(YELLOW)Running idp-cli delete (stack=$(STACK_NAME))...$(NC)" |
| 462 | + $(IDP_CLI) delete \ |
| 463 | + --stack-name $(STACK_NAME) \ |
| 464 | + $(if $(FORCE),--force) \ |
| 465 | + $(if $(EMPTY_BUCKETS),--empty-buckets) \ |
| 466 | + $(if $(FORCE_DELETE_ALL),--force-delete-all) \ |
| 467 | + $(if $(REGION),--region $(REGION)) \ |
| 468 | + $(if $(NO_WAIT),,--wait) \ |
| 469 | + $(EXTRA_ARGS) |
| 470 | + |
0 commit comments