Skip to content

Moving from GitHub to Kizuna? This guide covers everything you need for a smooth transition.

What Migrates

DataMigration Path
Git repositoriesNative — full history preserved
IssuesAPI import or CSV export
Pull requestsManual or API-based
WikisGit-based, easily migrated
GitHub ActionsConvert to Kizuna Actions
WebhooksRecreate in Kizuna
SSH keysRe-add to Kizuna

Repository Migration

Kizuna can mirror GitHub repositories, preserving full history:

bash
# In Kizuna web UI
1. Go to **New Repository** **Import**
2. Select **Import from GitHub**
3. Enter GitHub URL: `https://github.com/user/repo.git`
4. Enter your GitHub credentials (or use access token)
5. Select visibility settings
6. Click **Import**

Method 2: Manual Git Migration

bash
# Clone from GitHub with all branches
git clone --mirror https://github.com/user/repo.git
cd repo.git

# Push to Kizuna
git push --mirror https://kizuna.yourdomain.com/your-org/repo

# Clean up
cd ..
rm -rf repo.git

Method 3: Using Migration Script

For bulk migrations:

bash
# Install migration tool
curl -sSL https://migrate.kizuna.codes/install | bash

# Run migration
kizuna-migrate github \
  --source-org my-github-org \
  --target-org my-kizuna-org \
  --token $GITHUB_TOKEN \
  --repos "repo1,repo2,repo3"

Issues Migration

Export from GitHub

bash
# Using GitHub CLI
gh issue list --repo user/repo --limit 1000 --json number,title,body,labels,assignees,state > issues.json

Import to Kizuna

bash
# Using Kizuna API
curl -X POST https://kizuna.yourdomain.com/api/v1/repos/your-org/repo/issues/bulk \
  -H "Authorization: Bearer $KIZUNA_TOKEN" \
  -H "Content-Type: application/json" \
  -d @issues.json

CI/CD Migration

GitHub Actions → Kizuna Actions

Kizuna Actions is syntax-compatible with GitHub Actions. Most workflows work with minimal changes:

Before (GitHub Actions)

yaml
name: CI
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
      - run: npm ci
      - run: npm test

After (Kizuna Actions)

yaml
name: CI
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
      - run: npm ci
      - run: npm test

Most workflows work unchanged!

Changes to Make

GitHubKizuna
GITHUB_TOKENKIZUNA_TOKEN
github.event.pull_requestkizuna.event.pull_request
actions/github-scriptkizuna/script

Secrets Migration

  1. In GitHub: SettingsSecretsActions
  2. Export secrets (manual copy)
  3. In Kizuna: SettingsCI/CDSecrets
  4. Add each secret with the same name

Webhooks Migration

Export GitHub Webhooks

bash
gh api repos/:owner/:repo/hooks > webhooks.json

Recreate in Kizuna

  1. Go to SettingsWebhooks
  2. Click Add Webhook
  3. Configure:
    • Payload URL: Same as GitHub
    • Content Type: application/json
    • Secret: Same secret as GitHub
    • Events: Select same events
  4. Click Add Webhook

Bot & Integration Migration

Dependabot → Renovate

Kizuna doesn't include Dependabot, but Renovate works great:

  1. Add renovate.json to repository:
json
{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": ["config:recommended"],
  "endpoint": "https://kizuna.yourdomain.com/api/v1"
}
  1. Configure Renovate with your Kizuna token

GitHub Apps

Most GitHub Apps won't work directly. Alternatives:

GitHub AppKizuna Alternative
CodecovBuilt-in coverage reporting
SonarCloudNative in PR diff view
SnykBuilt-in vulnerability scanning
StaleBuilt-in issue management

Team & Permissions Migration

Organization Structure

  1. Create organizations in Kizuna matching your GitHub structure
  2. Invite team members via email
  3. Set up teams with corresponding permissions

Permission Mapping

GitHubKizuna
ReadRead
TriageRead + Issue management
WriteWrite
MaintainMaintain
AdminAdmin

SSH Key Migration

Your existing SSH keys work with Kizuna:

  1. Go to SettingsSSH Keys
  2. Click New SSH Key
  3. Paste your existing public key
  4. Add a descriptive title

Or use the same ~/.ssh/config:

Host kizuna
    HostName kizuna.yourdomain.com
    User git
    IdentityFile ~/.ssh/id_rsa

Post-Migration Checklist

  • [ ] All repositories imported with full history
  • [ ] Issues migrated with labels and assignees
  • [ ] CI/CD workflows converted and tested
  • [ ] Secrets configured in repository settings
  • [ ] Webhooks recreated and tested
  • [ ] Team members invited and permissions set
  • [ ] Branch protection rules configured
  • [ ] SSH keys added for all developers
  • [ ] Documentation updated with new URLs
  • [ ] Update remote URLs in local clones:
    bash
    git remote set-url origin https://kizuna.yourdomain.com/org/repo

Keeping GitHub as Mirror

During transition, you can mirror Kizuna back to GitHub:

bash
# In repository settings, add mirror URL
# Kizuna will push all changes to GitHub automatically

Troubleshooting

Large File Migration

For repositories with large files:

bash
# Use git-lfs
kizuna-migrate github --source-org org --target-org org --use-lfs

Submodule Migration

Submodules migrate as regular Git references:

bash
# After migration, update .gitmodules URLs
git submodule update --init --recursive

Next Steps