3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

OSSのdroneでgitプロトコルを利用してGitLab連携してみた

Last updated at Posted at 2015-07-16

1. Activate不具合対応

droneのマスターブランチを改造して、GitLabの7.12系でもActivateが動くように改造しました。

2. GitLab運用前提

GitLabをAWS上でマルチノードで動かし、その際にELBを利用を前提とします。
このとき、ELBをでは22番ポートではポートフォワーディングができません。。

3. GitLabとDroneの連携についての対応案

droneは、基本的にソースを取得する際にはコンテナ内部から、sshプロトコルでVCS(GitHubやGitLab)にアクセスするみたいです。
また、22番ポート以外は利用できなさそうでした。。

回避策として以下を考えてみました。

  • 22番ポートを開放するGitLabインスタンスを一台作成する
  • gitプロトコルを利用できるGitLabインスタンスを一台作成する

セキュリティやアクセスポリシーは気になりますが、まずは後者を試しました(鍵管理がめんどい。。)

4. Droneのデータベースを直接更新しちゃう

Droneの内部では、reposというテーブルをもっていて、ここに[repo_clone_url]というカラムをもっています。

こいつを更新するRESTが今のところ公開されてないので、手でデータベースを更新しました。

update repos set
  repo_clone_url='git://${git-daemonが動いているインスタンスのIP}/hogenamespace/hogerepo.git'
where
  repo_name = 'hogerepo'; 

これで準備がととのいましたので、該当のリポジトリに対してpushしてみました。

行けました。

$ git clone --depth=50 --recursive --branch=master git://*.*.*.....
3
3
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
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?