こんにちは goto です。
今回は私が個人開発をしたいけど、外出先からでも開発したいけどどうすれば良いだろう?と常々思ってはいて、claudeアプリからバイブコーディングでgithubに繋いで開発できることは知ってはいたものの、セルフホスティングで立てているgitlabには繋げられそうも無かったので諦めていたのですが、github経由でgitlabにアクセスすれば良いのでは?ということに気づいたので、その方法を探りました。
Opus4.5に聞いてみる
私: gitlabでプロジェクト管理をしていますがclaude にはgithubでしかリポジトリを繋げられません この場合、github で同一のプロジェクトを立てて、claude でコーディングさせた後、変更をgitlabにもコミットプッシュする、みたいな仕組みって可能ですか?
はい、可能です!いくつかの方法があります。
1. 複数リモートを設定する方法(シンプル)
ローカルリポジトリに両方のリモートを登録して、両方にプッシュする方法です。
# GitHubをorigin、GitLabを別名で追加
git remote add gitlab git@gitlab.com:your-username/your-repo.git
# プッシュ時は両方に
git push origin main
git push gitlab main
# または一度に両方にプッシュする設定
git remote set-url --add --push origin git@gitlab.com:your-username/your-repo.git
2. GitLabのミラーリング機能を使う(おすすめ)
GitLabには「Pull mirroring」機能があり、GitHubリポジトリを自動的に同期できます。
設定方法:
- GitLabプロジェクト → Settings → Repository → Mirroring repositories
- GitHubリポジトリのURLを入力
- 認証情報を設定(Personal Access Token)
- 「Mirror direction」を Pull に設定
これで定期的にGitHubの変更がGitLabに自動反映されます。
3. GitHub Actionsで自動同期
GitHubにプッシュされたら自動でGitLabにも同期するワークフロー:
# .github/workflows/mirror-to-gitlab.yml
name: Mirror to GitLab
on:
push:
branches: [main]
jobs:
mirror:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Push to GitLab
run: |
git remote add gitlab https://oauth2:${{ secrets.GITLAB_TOKEN }}@gitlab.com/your-username/your-repo.git
git push gitlab main --force
運用フロー例
[Claude Code / GitHub連携]
↓
GitHub (メイン開発)
↓ (自動ミラーリング)
GitLab (本番管理・CI/CD)
3つの方法が提案されました、個別に見ていきたいと思います。
複数リモート
スマホを使う前提なので却下
GitLabのミラーリング機能を使う
設定手順
1. GitHubでトークン作成
- GitHub → Settings → Developer settings → Personal access tokens
- 「Generate new token (classic)」
- repo 権限にチェック
- トークンをコピー(後で見れないので保存)
2. GitLabで設定
- Settings → Repository → Mirroring repositories
- 入力項目:
- URL:
https://github.com/ユーザー名/リポジトリ名.git - Mirror direction: Pull
- Authentication: Password
- Username: GitHubユーザー名
- Password: 上記で作成したトークン
- URL:
- 「Mirror repository」をクリック
同期の仕組み
- 自動同期: 約30分ごと(Freeプラン)
- 手動同期: 「Update now」ボタンで即座に実行可能
- 同期内容: ブランチ、タグ、コミット履歴
重要な注意点
- GitLab側は読み取り専用として扱う
- GitLab側で直接コミットすると次回同期時に上書きされる
- トークンの有効期限に注意
この手法をオススメされましたが、gitlabはmacで作業する場合にプッシュ先として使いたいので却下
GitHub Actionsで自動同期
GitHubにプッシュされたら自動でGitLabにも同期するワークフロー:
yaml
# .github/workflows/mirror-to-gitlab.yml
name: Mirror to GitLab
on:
push:
branches: [main]
jobs:
mirror:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Push to GitLab
run: |
git remote add gitlab https://oauth2:${{ secrets.GITLAB_TOKEN }}@gitlab.com/your-username/your-repo.git
git push gitlab main --force
```
## 運用フロー例
```
[Claude Code / GitHub連携]
↓
GitHub (メイン開発)
↓ (自動ミラーリング)
GitLab (本番管理・CI/CD)
この方法が一番細かく設定できるのでこの方法を採用しようと思っています。
gitlabにgithubからのプッシュ専用のブランチを作成し、そこに対してgithubからプッシュを行うことで実現するのが良いのかなと思いました。
まとめ
今回、Claudeアプリから開発を行い、GitLabにプッシュする方法について調査しました。
検討した方法:
- GitHub Actionsによる自動同期
- 個人的にはこの方法が細かく設定できて良いと感じました。
- GitLabのミラーリング機能を活用
- MacとiPhoneの両方からGitHubにプッシュする場合は、こちらの方が適していると思います。
- GitLabを読み取り専用として使用
- ミラーリング機能で自動的にGitLabに反映
- MacとiPhoneの両方からGitHubにプッシュする場合は、こちらの方が適していると思います。
