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://*.*.*.....