Skip to content

Moving from GitLab? This guide helps you migrate repositories, CI/CD pipelines, and project data.

Key Differences

FeatureGitLabKizuna
VCSGitJujutsu (Git-compatible)
CI/CDGitLab CIKizuna Actions (GitHub-compatible)
IssuesBuilt-inBuilt-in with Kanban
AI AgentsBolt-on (Duo)First-class native
LicensingOpen-core (EE)MIT (no feature walls)

Repository Migration

Direct Import

bash
# Via Kizuna web UI
1. **New Repository** **Import**
2. Select **Import from GitLab**
3. Enter GitLab URL and access token
4. Choose visibility and import

Manual Migration

bash
# Mirror from GitLab
git clone --mirror https://gitlab.com/user/repo.git
cd repo.git
git push --mirror https://kizuna.yourdomain.com/org/repo

CI/CD Migration

GitLab CI → Kizuna Actions

Before (GitLab CI)

yaml
stages:
  - test
  - build
  - deploy

test:
  stage: test
  image: node:20
  script:
    - npm ci
    - npm test
  only:
    - merge_requests
    - main

After (Kizuna Actions)

yaml
name: CI
on:
  pull_request:
    branches: [main]
  push:
    branches: [main]

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

Variable Migration

GitLabKizuna
CI_COMMIT_SHAGITHUB_SHA
CI_PROJECT_NAMEGITHUB_REPOSITORY
CI_JOB_TOKENKIZUNA_TOKEN

Issues & Boards Migration

Export from GitLab

bash
# Export issues as CSV
# GitLab: Project → Issues → Export CSV

Import to Kizuna

  1. IssuesImport
  2. Upload CSV file
  3. Map columns to Kizuna fields
  4. Import

Board Migration

Kizuna's Kanban board maps to GitLab boards:

GitLab ListKizuna Column
BacklogBacklog
To DoTo Do
DoingIn Progress
ReviewReview
DoneDone

Container Registry Migration

Pull from GitLab, Push to Kizuna

bash
# Login to both registries
docker login registry.gitlab.com
docker login kizuna.yourdomain.com

# Pull, tag, push
docker pull registry.gitlab.com/org/project/image:tag
docker tag registry.gitlab.com/org/project/image:tag \
  kizuna.yourdomain.com/org/project/image:tag
docker push kizuna.yourdomain.com/org/project/image:tag

Update CI/CD References

yaml
# Before (GitLab)
image: registry.gitlab.com/org/project/builder:latest

# After (Kizuna)
jobs:
  build:
    container: kizuna.yourdomain.com/org/project/builder:latest

Pages Migration

GitLab Pages → Static Hosting

Kizuna doesn't include Pages. Alternatives:

  • Cloudflare Pages: Direct integration
  • Vercel: Git integration
  • Netlify: Auto-deploy on push

Configure Cloudflare Pages

yaml
# .kizuna/workflows/pages.yml
name: Deploy to Cloudflare Pages
on:
  push:
    branches: [main]
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Build
        run: npm run build
      - name: Deploy
        uses: cloudflare/pages-action@v1
        with:
          apiToken: ${{ secrets.CF_API_TOKEN }}
          accountId: ${{ secrets.CF_ACCOUNT_ID }}
          projectName: my-site
          directory: dist

Next Steps