MoriKen's Journal

MoriKen's Journal

アラサー社会人博士による徒然日記。技術についてつらつら。だけだとコンテンツが貧弱なので、会社公認で大学院博士課程に進学した経緯や、独学でTOEICを475→910にしたノウハウを共有します。

GitLab CI を使って GitHub の Private Repository を無料で CI ②ミラーリング編

Sponsored Link

はじめに

さて、タイトルの通りです。前回は背景を話しましたが、今回からは具体的なチュートリアルに入っていきます。

www.moriken254.com

まずは、ミラーリング編。GitHub の Repository をGitLab にミラーリングしないと、GitLab CI にかけることができませんので、その手順を示します。

その後、CI を有効にするための設定ファイルを準備します。

依存する Repository を CI にクローンする方法の方はちょっとゴチャゴチャするので、次回に持ち越すことにします。

GitLab にログイン

GitLab にログインしないと何も始まりませんね。

about.gitlab.com

f:id:MoriKen254:20190601162054p:plain


GitHub の Repository をミラーリングするので、GitHub のセッション経由でログインをします。

f:id:MoriKen254:20190601162344p:plain


Repository のインポート

CI をする対象となる GitHub の Repository を GitLab にインポートします。

f:id:MoriKen254:20190601162525p:plain


左上の「Projects」→「Your Projects」→右上の「New Projects」を選択します。

f:id:MoriKen254:20190601162814p:plain


「Import Project」を選択します。

f:id:MoriKen254:20190601163025p:plain


「GitHub」を選択します。

f:id:MoriKen254:20190601163119p:plain


「インポート元の GitHub Private Repository」を選択します。このとき、「インポート先の GitLab User / Group」も選択できるので、然るべきインポート先にしておいて下さい。間違えると面倒なので。そして、「Import」を押下します。

f:id:MoriKen254:20190601163227p:plain


選択した Repository が一覧の先頭に移動します。インポート中であれば「Running...」と表示されます。

f:id:MoriKen254:20190601232003p:plain


インポートが完了すれば、「Done」と表示されます。

f:id:MoriKen254:20190601163737p:plain


Repository のミラーリング

次に、ミラーリング設定を行います。実は、インポートをしただけでは GitHub 側の Repository と同期を取ってくれるわけではないのです。

明示的にミラーリング設定を追加しないと、インポートした Repository は、GitHub 側で変化が起きたとしても、初回インポートの状態ままになってしまいます。CI したくて GitLab にやってきたのに、同期されないのでは意味がありませんね。

f:id:MoriKen254:20190601164118p:plain


てなわけで、設定ページに参りましょう。

「インポートした Repository」のページから、「Settings」→「Repository」を選択します。

表示されたページ内の「Mirror a repository」を展開すると、設定項目が出てきます。

f:id:MoriKen254:20190601164641p:plain


ミラーリング元の GitHub Repository の URL を入力する欄がありますが、少し注意が必要です。その Repository にアクセスできる GitHub ユーザ ID を URL に挿入します。書式は下図を参照下さい。

ミラーリング方向は「Pull」、認証は「Password」、Password には「GitHubのパスワード」、Mirror userは「Private Repository にアクセス可能な GitHub ユーザ名」となります。

このユーザは必ずしも自分自身である必要はなく、共通ユーザなどを持っていて、そのユーザが対象 Repository へのアクセス権を持っていれば、そのユーザを設定することもできます。

そして必要項目にチェックを入れて(下図参照)、「Mirror repository」をクリック!これでミラーリングが開始されます。

f:id:MoriKen254:20190601164835p:plain


「Mirror repository」ボタン直下にある「Mirrored repositories」の「Last update」に最新更新時間が記載されれば、ミラーリング成功です!

f:id:MoriKen254:20190601165702p:plain


CI の有効化

CI を有効化するために、GitHub 側のリポジトリにあるファイルを追加します。

そう、.gitlab-ci.yml です。

f:id:MoriKen254:20190601171725p:plain


この記事ではこの内部の書式について細かくは語りません。ここは、ユーザアプリ次第ですので、他記事による良質な解説に譲らせていただきます。

qiita.com

とにかく、この.gitlab-ci.ymlにしかるべき設定を記述した上で、 GitHub Repository 直下に格納し、リモートにプッシュして下さい。

私の開発分野でのユースケースですが、以下に例を示します。

cd "ミラーリング元の GitHub のローカル Repository 最上位ディレクトリ"
vim .gitlab-ci.yml

yml の例です。ROS の industrial_ci を用いる場合です。何度も言いますが、このファイルの中身は、ご自身の開発プロジェクトの内容に合わせて適切なものに置き換えて下さい。

image: docker:git
services:
  - docker:dind
before_script:
  - apk add --update bash coreutils tar
  - git clone --quiet --depth 1 https://github.com/ros-industrial/industrial_ci .industrial_ci
  
kinetic:
  script:
    - .industrial_ci/gitlab.sh
  variables:
    ROS_DISTRO: "kinetic"
    CATKIN_LINT: "true"
    OPT_VI: "-vi"

上記ファイルを保存して、あとはリモートにプッシュしておいて下さい。

それ以外の設定(Runner 等)は全てデフォルトでも基本は大丈夫ですので、この記事では扱いません。

おわりに

これで、最低限 GitLab CI を有効にするためのミラーリング設定は完了です。

次は、依存するプライベート Repository を クローンできるように、SSH 認証を行えるようにする手順を述べます。

次回:③SSH 編

www.moriken254.com

前回:①背景編

www.moriken254.com