Core Settings
Core settings define the fundamental configuration for connecting to JPD and GitHub, along with the sync direction.
JPD Project Configuration
The jpd section specifies which JPD project to sync:
jpd:
project_key: "MTT" # Your JPD project key
project_key
Type: String
Required: Yes
The unique identifier for your JPD project.
How to find it:
- Look at the URL when viewing your project:
https://company.atlassian.net/jira/polaris/projects/MTT - The project key is
MTT - Or check issue keys:
MTT-123→ project key isMTT
Format:
- Usually 2-5 uppercase letters
- No spaces or special characters
- Examples:
MTT,PROJ,DEV,ROADMAP
GitHub Repository Configuration
The github section specifies the target repository:
github:
owner: "expedition" # GitHub username or organization
repo: "my-repo" # Repository name
owner
Type: String
Required: Yes
The GitHub account that owns the repository (username or organization).
How to find it:
- From URL:
https://github.com/expedition/my-repo - Owner is
expedition
Format:
- Case-sensitive
- Single word, no spaces
- Can be personal username or organization name
repo
Type: String
Required: Yes
The name of the GitHub repository.
How to find it:
- From URL:
https://github.com/expedition/my-repo - Repo is
my-repo
Format:
- Case-sensitive
- Just the repository name, not the full URL
- Use hyphens for spaces
Sync Direction
The sync section controls how data flows between systems:
sync:
direction: "bidirectional" # Sync direction
github_closed_status: "Done" # Where to move JPD issues when GitHub closes
enable_comment_sync: true # Sync comments bidirectionally
direction
Type: String
Required: No (defaults to jpd-to-github)
Options: jpd-to-github, bidirectional
Controls the direction of synchronization:
jpd-to-github (default):
- JPD is the source of truth
- Changes in JPD sync to GitHub
- Changes in GitHub are not synced back to JPD
- One-way sync only
bidirectional:
- Two-way synchronization
- JPD changes sync to GitHub
- GitHub changes sync to JPD
- Status updates work both ways
- Comments sync both ways (if enabled)
Example:
# One-way: JPD → GitHub
sync:
direction: "jpd-to-github"
# Two-way: JPD ↔ GitHub
sync:
direction: "bidirectional"
github_closed_status: "Done"
github_closed_status
Type: String
Required: Only when direction is bidirectional
The JPD status to set when a GitHub issue is closed.
Example:
sync:
direction: "bidirectional"
github_closed_status: "Done" # Move JPD issues here when GitHub closes
Important:
- Must match a valid status in your JPD workflow
- Case-sensitive
- Only used for bidirectional sync
enable_comment_sync
Type: Boolean
Required: No (defaults to false)
Enable bidirectional comment synchronization.
sync:
direction: "bidirectional"
enable_comment_sync: true # Sync comments both ways
When enabled:
- Comments added in JPD appear in GitHub
- Comments added in GitHub appear in JPD
- Author attribution is preserved
- Updates tracked to avoid duplicates
See Comment Sync for details.
Complete Example
A typical core settings configuration:
# JPD Project
jpd:
project_key: "MTT"
# GitHub Repository
github:
owner: "expedition"
repo: "manifest-jpd-sync"
# Sync Settings
sync:
direction: "bidirectional"
github_closed_status: "Done"
enable_comment_sync: true
Authentication
Credentials are not stored in the config file. They go in .env:
# JPD Credentials
JPD_BASE_URL=https://company.atlassian.net
JPD_EMAIL=user@company.com
JPD_API_KEY=your_api_token
# GitHub Credentials
GITHUB_TOKEN=ghp_your_token
GITHUB_OWNER=expedition
GITHUB_REPO=manifest-jpd-sync
Never commit .env to version control. The file is git-ignored by default. Share credentials securely through password managers or secret management services.
Validation
Validate your core settings:
pnpm run validate-config
The validator checks:
- Project key format is valid
- Owner and repo are specified
- Sync direction is valid
- Required environment variables are set
- Can connect to both JPD and GitHub
Common Issues
"Project key not found"
Cause: Incorrect project key or no access
Check:
- Project key matches exactly (case-sensitive)
- You have access to the JPD project
- Project exists and is active
Solution:
# List your accessible projects
pnpm run discover-fields YOUR_PROJECT_KEY
"Repository not found"
Cause: Incorrect owner/repo or insufficient permissions
Check:
- Owner and repo names are correct
- Repository exists and is accessible
- GitHub token has
reposcope - You have write access to the repository
Solution:
- Verify at
https://github.com/OWNER/REPO - Check token permissions
"Invalid sync direction"
Cause: Typo in direction value
Valid values:
jpd-to-githubbidirectional
Invalid:
jpdtogithubbi-directionaltwo-way
Environment-Specific Configuration
Multiple Environments
Use different configs for dev/prod:
config/dev.yaml:
jpd:
project_key: "DEV"
github:
owner: "my-org"
repo: "dev-repo"
config/prod.yaml:
jpd:
project_key: "PROD"
github:
owner: "my-org"
repo: "prod-repo"
Load with:
CONFIG_PATH=./config/prod.yaml pnpm run dev
Multiple Projects
One config per JPD project:
config/
project-mobile.yaml
project-web.yaml
project-api.yaml
Switch between them:
CONFIG_PATH=./config/project-mobile.yaml pnpm run dev
Next Steps
With core settings configured:
- Configure Field Mappings - Map JPD fields to GitHub
- Set Up Status Workflows - Define status sync
- Define Labels - Create label strategy
- Enable Hierarchy - Set up Epic/Story/Task relationships
Start with one-way sync (jpd-to-github) to verify everything works, then enable bidirectional sync once you're confident in the configuration.