0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitLabにコミットしたら自動でGithubへも反映させる方法

Posted at

はじめに

自宅内にGitlabをDockerで建てており、個人のソースコードはそこで管理しているのですが、Githubにアップしておいた方がポートフォリオ的な感覚で見てもらいやすいかなと感じ設定をしました。
(念のためのソースコードのバックアップも兼ねてます)

記事をいくつか探していたのですが、GitlabやGithubの仕様が異なっていて少し詰まったのでその備忘も兼ねています。

環境

Gitlabのバージョンはイメージプルをした時の最新であった17.2.1を使用しています。

バージョン情報

コマンド
test01@k8s-master-node01:/work/gitlab$ docker exec -it gitlab-web-1 gitlab-rake gitlab:env:info

System information
System:
Current User:   git
Using RVM:      no
Ruby Version:   3.1.5p253
Gem Version:    3.5.11
Bundler Version:2.5.11
Rake Version:   13.0.6
Redis Version:  7.0.15
Sidekiq Version:7.1.6
Go Version:     unknown

GitLab information
Version:        17.2.1
Revision:       b30193cc04c
Directory:      /opt/gitlab/embedded/service/gitlab-rails
DB Adapter:     PostgreSQL
DB Version:     14.11
URL:            https://gitlab.motuneko253.work
HTTP Clone URL: https://gitlab.motuneko253.work/some-group/some-project.git
SSH Clone URL:  git@gitlab.motuneko253.work:some-group/some-project.git
Using LDAP:     no
Using Omniauth: yes
Omniauth Providers:

GitLab Shell
Version:        14.37.0
Repository storages:
- default:      unix:/var/opt/gitlab/gitaly/gitaly.socket
GitLab Shell path:              /opt/gitlab/embedded/service/gitlab-shell

Gitaly
- default Address:      unix:/var/opt/gitlab/gitaly/gitaly.socket
- default Version:      17.2.1
- default Git Version:  2.45.2

1.Gitlabでミラーリング準備

GitlabおよびGithubにそれぞれtestというリポジトリを作成し、それをミラーリングするようにします。
まずは、Gitlab上のリポジトリから、[設定] - [リポジトリ] - [ミラーしているリポジトリ] - [展開]をクリックします。
すると[新規追加]というボタンが現れますので、そこをクリックします。
image.png


以下のような画面が出ますので、必要な項目を入力してミラーリポジトリをクリックします。

  • GitリポジトリのURLssh://git@github.com/[ユーザ名]/[対象リポジトリ].gitというURLになります。今回の例だと、ssh://git@github.com/motuneko253/test.gitです。
  • 認証方法:デフォルトではユーザー名とパスワードとなっているのですが、SSH 公開鍵にします。少し前にGithub側がセキュリティ強化のため、パスワード方式は無効化したため、こちらを使用しても同期時にエラーとなります。
  • ユーザー名:ここがハマったポイントなのですが、結論gitとしてください。私は自身のGithubのユーザ名を指定していたためか永遠に成功しなくて苦しみました。

image.png


入力が完了すると以下の画面に遷移します。[SSH 公開キーをコピー]をクリックすると、鍵情報がクリップボードにコピーされます。一旦Gitlabの操作は終わりです。

image.png

2.Githubでの鍵登録

続いてGithubでは、[settings] - [SSH and GPG Keys] - [New SSH Key]をクリックします。
遷移した以下の画面で値を入力し、[Add SSH Key]をクリックします。

  • Title:何でも良いですが、私はリポジトリ名に統一しています。
  • Key type:デフォルトのままです。
  • Key:先ほどGitlabからコピーしたキー情報をそのまま貼り付けます。

image.png

3.同期の実行

鍵の登録が終わったら再びGitlabに戻り同期を行います。
[今すぐ更新]をクリックし、少し待ちます。
「最後に成功した」という項目が「たった今」に変われば同期は成功しています。
Github側でも資材が反映されているかと思います。

image.png

image.png

gitlab上の資材を試しに更新してGithubまで反映されるかテストをしてみます。

コマンド
motuneko253@k8s-master-node01:/work/gitlab/test$ echo "test!" > README.md
motuneko253@k8s-master-node01:/work/gitlab/test$ git status
ブランチ main
Your branch is up to date with 'origin/main'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   README.md

no changes added to commit (use "git add" and/or "git commit -a")
motuneko253@k8s-master-node01:/work/gitlab/test$
motuneko253@k8s-master-node01:/work/gitlab/test$ git add README.md
motuneko253@k8s-master-node01:/work/gitlab/test$ git status
ブランチ main
Your branch is up to date with 'origin/main'.

コミット予定の変更点:
  (use "git restore --staged <file>..." to unstage)
        modified:   README.md

motuneko253@k8s-master-node01:/work/gitlab/test$ git commit -m "testコミット反映"
[main 4ad5fc9] testコミット反映
 1 file changed, 1 insertion(+), 93 deletions(-)
motuneko253@k8s-master-node01:/work/gitlab/test$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 2 threads
Compressing objects: 100% (1/1), done.
Writing objects: 100% (3/3), 281 bytes | 281.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To gitlab.motuninja250.work:sample/test.git
   1c7daf8..4ad5fc9  main -> main

gitの資材が無事反映できていることが確認できました!

image.png

image.png

最後に

今回も小粒な記事でしたが、意外とこういうのメモしておかないと忘れるんですよね…。
肝心のgitlabの構築記事が作れていないので、そちらも時間を見てまた書こうかと思います!

参考サイト

・【GitLab・GitHub】GitLabにpushされたらGitHubのリポジトリにも反映させる!(ミラーリング)
https://bftnagoya.hateblo.jp/entry/2022/10/25/091826

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?