Skip to main content
The repository provisioning workflow automatically sets up new agent repositories when they are cloned or created from a template. When a new repository is created from a template, the workflow:
  1. Detects initial commit
  2. Sets up project configuration
  3. Baselines service version
  4. Provisions Python project structure

Workflow triggers

The provisioning workflow is triggered on:
  • Initial Push: First push to develop branch
  • Manual Trigger: Via workflow_dispatch
The workflow only runs if:
  • It’s the first workflow run (github.run_number == 1)
  • The pusher name starts with gc-tfrw- (Terraform workflow bot)

Provisioning process

1. project setup

The workflow sets up the project:
  • Authentication: Uses GitHub App for authentication
  • Repository Access: Checks out code with proper permissions
  • Token Generation: Creates GitHub token for subsequent steps

2. Python project provisioning

The workflow provisions the Python project:
  • Package Configuration: Sets up package name based on repository name
  • Project Structure: Creates standard Python project structure
  • Version Baseline: Sets initial version in project files

Workflow flowchart

Workflow configuration

The repository provisioning workflow is defined in .github/workflows/repository-provisioning.yaml:
[!TIP] See the Configurations page for complete setup instructions and required secrets.

Configuration

Required secrets

The workflow requires these secrets:
  • GIT_GITHUB_APP_PEM_FILE: GitHub App private key
  • GIT_GITHUB_APP_ID: GitHub App ID

Workflow conditions

The workflow only runs when:
  • github.run_number == 1: First workflow run
  • startsWith(github.event.pusher.name, 'gc-tfrw-'): Pushed by Terraform workflow

Provisioning steps

Setup project

The setup-project action:
  • Authenticates using GitHub App
  • Checks out repository code
  • Generates GitHub token for subsequent steps
  • Sets up project environment

Provision Python project

The provision-python-project action:
  • Creates Python package structure
  • Sets package name from repository name
  • Configures project files
  • Baselines version information

What gets provisioned

The workflow provisions:
  • Package Structure: Standard Python package layout
  • Configuration Files: Project configuration files
  • Version Information: Initial version baseline
  • Project Metadata: Repository name and metadata

Best practices

  • Template Usage: Create repositories from templates for automatic provisioning
  • Secret Configuration: Ensure GitHub App secrets are configured
  • First Commit: Push initial commit to develop branch
  • Verification: Verify provisioning completed successfully

Troubleshooting

Workflow not running

If the workflow doesn’t run:
  1. Check Run Number: Ensure it’s the first workflow run
  2. Verify Pusher: Check if pusher name starts with gc-tfrw-
  3. Branch Check: Ensure push is to develop branch
  4. Manual Trigger: Use workflow_dispatch if needed

Provisioning failures

Common issues:
  1. Authentication: Verify GitHub App credentials
  2. Permissions: Check repository permissions
  3. Secrets: Ensure secrets are properly configured
  4. Timeout: Workflow times out after 10 minutes

Next steps