Skip to content

Switch Platform

PACE uses a platform adapter for CI polling, pull request creation, and issue tracking. Set platform.type in pace.config.yaml and export the required environment variables.

GitHub (default)

platform:
type: github
VariableDescription
GITHUB_TOKENPersonal access token or GITHUB_TOKEN from Actions
GITHUB_REPOSITORYowner/repo-name (e.g. acme-corp/acme-api)

The token needs repo scope for private repositories, public_repo for public ones.

Terminal window
export GITHUB_TOKEN="ghp_..."
export GITHUB_REPOSITORY="acme-corp/acme-api"
pip install PyGithub

GitHub Actions usage

When running inside a GitHub Actions workflow, GITHUB_TOKEN and GITHUB_REPOSITORY are automatically injected. No extra setup needed.


GitLab

platform:
type: gitlab
VariableDescription
GITLAB_TOKENProject or Group access token with api scope
GITLAB_PROJECTProject ID (integer) or namespace path (group/project)
GITLAB_URLOptional — defaults to https://gitlab.com
Terminal window
export GITLAB_TOKEN="glpat-..."
export GITLAB_PROJECT="my-group/my-project"
pip install python-gitlab

GitLab CI/CD usage

.gitlab-ci.yml
pace:
stage: dev
script:
- python pace/orchestrator.py --day $DAY
variables:
GITLAB_TOKEN: $CI_JOB_TOKEN
GITLAB_PROJECT: $CI_PROJECT_ID

Bitbucket

platform:
type: bitbucket
VariableDescription
BITBUCKET_USERYour Bitbucket username
BITBUCKET_APP_PASSWORDApp password with pullrequests:write and issues:write permissions
BITBUCKET_WORKSPACEWorkspace slug (formerly “team”)
BITBUCKET_REPO_SLUGRepository slug
Terminal window
export BITBUCKET_USER="jane"
export BITBUCKET_APP_PASSWORD="ATB..."
export BITBUCKET_WORKSPACE="acme-corp"
export BITBUCKET_REPO_SLUG="acme-api"
pip install requests

Jenkins

platform:
type: jenkins
VariableDescription
JENKINS_URLBase URL of your Jenkins instance (e.g. https://ci.example.com)
JENKINS_USERJenkins username
JENKINS_TOKENJenkins API token
JENKINS_JOB_NAMEJob or pipeline name to poll
Terminal window
export JENKINS_URL="https://ci.example.com"
export JENKINS_USER="admin"
export JENKINS_TOKEN="11abc..."
export JENKINS_JOB_NAME="acme-api/main"
pip install requests

Jira

platform:
type: jira
VariableDescription
JIRA_URLBase URL of your Jira Cloud instance (e.g. https://mycompany.atlassian.net)
JIRA_EMAILAtlassian account email
JIRA_TOKENAPI token from id.atlassian.com → Security → API tokens
JIRA_PROJECT_KEYJira project key (e.g. ENG, PAY)
Terminal window
export JIRA_URL="https://mycompany.atlassian.net"
export JIRA_EMAIL="engineer@mycompany.com"
export JIRA_TOKEN="your-api-token"
export JIRA_PROJECT_KEY="ENG"
# requests is already in requirements.txt — no extra install needed

The Jira adapter handles HOLD escalation tickets and advisory issue push. It does not poll CI — use this adapter when Jira is your issue tracker but CI runs on a separate system (GitHub Actions, Jenkins, etc.). The wait_for_commit_ci step will return no_runs and be skipped.

Optional overrides:

Terminal window
export JIRA_HOLD_ISSUE_TYPE="Bug" # default
export JIRA_HOLD_PRIORITY="High" # default
export JIRA_ADVISORY_ISSUE_TYPE="Task" # default
export JIRA_ADVISORY_PRIORITY="Medium" # default

See Connect PACE to Jira for the full setup guide and troubleshooting.


Local (no platform)

platform:
type: local

No credentials required. All platform artifacts are written to your local filesystem:

ArtifactLocation
PR description.pace/day-N/review-pr.md
Escalation issue.pace/day-N/escalation-issue.md
Job summarypace-summary.md (repo root)

CI result returns {"conclusion": "no_runs"} immediately. Use local for:

  • Development and testing of PACE itself
  • Air-gapped environments
  • Demos without credentials

Verifying your platform setup

Run the platform check:

Terminal window
python pace/pace/platforms/__init__.py --check

This attempts to connect to your configured platform and reports any credential or permission issues before you run a full day.