The setup-cicd
command is a powerful utility provided by agent-starter-pack
that automates the deployment of your complete Terraform infrastructure and configures your Google Cloud projects in a single operation.
⚡️ Quick Start Example:
The command is now even simpler to get started with. You can run it without any arguments, and it will prompt you for the required project IDs:
agent-starter-pack setup-cicd
(You will be prompted for Staging and Production project IDs)
Alternatively, you can provide the project IDs directly as flags:
agent-starter-pack setup-cicd \
--staging-project=your-staging-project-id \
--prod-project=your-prod-project-id
- Experimental: This command is under active development. Use it with caution and report any issues.
- Production Use: For production environments, we strongly recommend following the detailed instructions in
deployment/README.md
. Manual setup offers greater control over security and configuration. This automated command is best suited for development and testing. - GitHub Only: Currently, only GitHub is supported as a Git provider.
- Run from Project Root: Execute the command from the root directory of your
agent-starter-pack
project (wherepyproject.toml
is located). - Install Tools:
- Terraform
gh
CLI (GitHub CLI): Install and authenticate usinggh auth login
.gcloud
CLI (Google Cloud SDK): Authenticate usinggcloud auth application-default login
.
- Google Cloud Projects: You need at least two Google Cloud projects: one for staging and one for production. The command will prompt you for their IDs if you don't provide the
--staging-project
and--prod-project
flags. You also need a project to host the CI/CD resources (Cloud Build, Artifact Registry, Terraform state). You can specify this using--cicd-project
. If omitted, the production project will be used for CI/CD resources. - Permissions: The user or service account running this command must have the
Owner
role on the specified Google Cloud projects (staging, production, CI/CD if specified, development if specified). This is necessary for creating resources and assigning IAM roles.
The setup-cicd
command automates the following:
- GitHub Integration: Creates a new private GitHub repository or connects to an existing one (prompting for details if needed).
- Project ID Confirmation: Prompts for Staging and Production project IDs if they are not provided via flags.
- Cloud Build Connection: Sets up a Cloud Build connection to your GitHub repository.
- Terraform Setup:
- Configures Terraform to manage your CI/CD infrastructure (Cloud Build triggers, IAM permissions, etc.) and optionally, a development environment (if
--dev-project
is provided). - By default, sets up remote Terraform state management using a Google Cloud Storage (GCS) bucket in your CI/CD project (
<CICD_PROJECT_ID>-terraform-state
). Use--local-state
to opt-out.
- Configures Terraform to manage your CI/CD infrastructure (Cloud Build triggers, IAM permissions, etc.) and optionally, a development environment (if
- Resource Deployment: Runs
terraform apply
to create the necessary resources in Google Cloud and configure the GitHub repository connection. - Local Git Setup: Initializes a Git repository locally (if needed) and adds the GitHub repository as the
origin
remote.
agent-starter-pack setup-cicd \
[--staging-project <YOUR_STAGING_PROJECT_ID>] \
[--prod-project <YOUR_PROD_PROJECT_ID>] \
[--cicd-project <YOUR_CICD_PROJECT_ID>] \
[--dev-project <YOUR_DEV_PROJECT_ID>] \
[--region <GCP_REGION>] \
[--repository-name <GITHUB_REPO_NAME>] \
[--repository-owner <GITHUB_USERNAME_OR_ORG>] \
[--local-state] \
[--auto-approve] \
[--debug]
Key Options:
--staging-project
,--prod-project
: Required Information. Your Google Cloud project IDs for staging and production environments. The command will prompt for these if the flags are omitted.--cicd-project
: (Optional) Project ID for hosting CI/CD resources (Cloud Build, Artifact Registry, Terraform state bucket). If omitted, defaults to the production project ID (provided via flag or prompt).--dev-project
: (Optional) Project ID for a dedicated development environment managed by Terraform. If provided, Terraform will also be applied to set up resources in this development project.--region
: (Optional) GCP region for resources (default:us-central1
).--repository-name
: (Optional) Name for the GitHub repository. If omitted, you'll be prompted or a name will be generated.--repository-owner
: (Optional) Your GitHub username or organization. Defaults to the authenticatedgh
user if omitted.--local-state
: (Optional) Use local files for Terraform state instead of the default GCS backend. Not recommended for collaboration.--auto-approve
: (Optional) Skip interactive prompts (including project ID prompts if flags are omitted). Use carefully.--debug
: (Optional) Enable verbose logging.
(For advanced/programmatic use with pre-existing connections, see options like --github-pat
, --github-app-installation-id
, --host-connection-name
by running agent-starter-pack setup-cicd --help
)
- Commit and Push: This is crucial to trigger the pipeline.
git add . git commit -m "Initial commit of agent starter pack" git push -u origin main
- Verify: Check your GitHub repository and Google Cloud projects (Cloud Build > Triggers, Secret Manager, IAM) to see the created resources.
For robust, production-ready deployments with fine-grained control over security, customization, and advanced CI/CD practices, please follow the manual setup guide.