Overview
The GitHub installer runs after the shared GCP install and layers GitHub-specific infrastructure onto that base. It readsgenerated/gcp/<project-id>/install-state.json, creates or reuses GitHub App credentials, deploys the Cloud Run job used for call graph bootstrap, and triggers one execution.
Before you run the GitHub installer, make sure:
./providers/gcp/install-gcp.shhas already completed for the samegcp.project_id- You have Terraform
>= 1.9,gcloud,jq,curl, andopensslinstalled - You have already authenticated with Application Default Credentials using
gcloud auth application-default login - You also have
python3installed ifgithub.modeisself-hosting
What permissions the installer needs
The identity running./providers/gcp/install-gcp-integration.sh github should have permissions equivalent to the following:
| What the installer needs to do | GCP IAM permissions |
|---|---|
| Create the GitHub integration subnet, Artifact Registry repository, service account, Secret Manager secret, and VPC connector | compute.subnetworks.create, artifactregistry.repositories.create, iam.serviceAccounts.create, secretmanager.secrets.create, vpcaccess.connectors.create |
| Grant the build service accounts and Cloud Run job access to project resources and secrets | resourcemanager.projects.setIamPolicy, secretmanager.secrets.setIamPolicy |
| Store or reuse GitHub App credentials, build the bootstrap image, deploy the Cloud Run job, and trigger the first execution | secretmanager.versions.add, secretmanager.versions.access, cloudbuild.builds.create, run.jobs.create, run.jobs.update, run.jobs.run |
self-hosting mode, you also need permission to create and install a GitHub App in the target GitHub organization.
Fill the GitHub config file
The installer readsproviders/gcp/integrations/github/config/install-gcp-github.yaml by default. Fill in the required values, then leave optional fields blank unless you need custom names.
This is the full template with comments explaining each field:
connector_subnet_cidr, keep it as a non-overlapping IPv4 /28 range.
GitHub App modes
Self-hosting mode
self-hosting is the default mode. The installer opens a browser, registers an organization-owned GitHub App from a manifest, waits for the manifest callback on 127.0.0.1, stores the returned credentials in Secret Manager, and then waits for the app to be installed on the configured repositories before triggering the Cloud Run job.
If GitHub asks which repositories the app can access, choose Only select repositories and select every repository listed in github.repositories.
On reruns, if those GitHub App credentials already exist in Secret Manager and still validate against GitHub, the installer reuses them instead of creating another app.
If GITHUB_TOKEN is set, the installer uses it for the GitHub manifest conversion API call.
Cloud-hosting mode
cloud-hosting keeps the hosted ownership split. In that mode, do not put app credentials in YAML. Export them in the shell that runs the installer:
ASYMPTOTE_GITHUB_APP_IDASYMPTOTE_GITHUB_APP_PRIVATE_KEY_PEMorASYMPTOTE_GITHUB_APP_PRIVATE_KEY_PEM_FILEASYMPTOTE_GITHUB_APP_WEBHOOK_SECRETif you need to provide a webhook secret
Run the GitHub installer
Update `providers/gcp/integrations/github/config/install-gcp-github.yaml`
Fill in the GCP project ID and every GitHub repository that should be processed.
What the installer does
After the GitHub App setup completes successfully, the installer:- Reads the base install state from
generated/gcp/<project-id>/install-state.json. - Creates the GitHub-specific connector subnet, Artifact Registry repository, service account, Secret Manager secret, and VPC connector.
- Creates or reuses a GitHub App credential set.
- Builds the
jobs/call-graph-bootstrapcontainer image with Cloud Build. - Creates or updates the Cloud Run job used for call graph generation.
- Triggers one job execution for the repositories in your config.
Add more repositories later
Update the existing GitHub App installation
Edit the GitHub App installation and grant it access to the same newly added repositories.
github.repositories or the GitHub App installation, it will not be processed by the bootstrap job.
Troubleshooting
If the installer says the base install state is missing, run./providers/gcp/install-gcp.sh first or confirm that gcp.project_id points to the correct generated project.
If a previous self-hosting run already created the GitHub App and a later step failed, rerun the GitHub integration installer. It reuses the stored GitHub App credentials from Secret Manager when they are still valid.
