昨日の記事で少し触れた通り、サイトのデプロイのフローを変更した際に試したものの、ボツにした方法が2つほどあります。せっかくなのでそのボツ案について少し書いてみようと思います。

なお、図がゴチャゴチャしてしまったのでDockerのアイコンとかは消してます。青線内がそれぞれ別のDockerで動いてます。

ボツ1


全てGitBucketにpushしてGitBucketがマウントしているベアリポジトリにGit hookを仕掛けてデプロイするという方法です。いやね~これでやりたかったのですが、GitBucketにpushしてもGit hookが動いてくれなくて諦めました。

考えられる原因は…

  • プロトコルがダメ(httpsでpushしてる)
  • GitBucketを挟むとgit hookが動かない
  • Dockerでホストからマウントしてるのがダメ

くらいな感じがします。調べてもよかったのですが、時間もなかったので早々に諦めました。

ボツ2


GitBucketからJenkinsにWeb hookで通知してJobを実行してゴチャゴチャやる方法ですね。前職では一時期この方法でやってました。これがダメだった理由ですが、Jenkins側の認証を突破できませんでした。以前の記事にも書いているのですが、このJenkinsはGitHub OAuthを利用して認証しているのですが、私以外のGitHubアカウントではJobが一切見れない・実行できないようにしています。その結果、認証エラーでJobが実行できませんでした。Jenkinsの認証をザルにするか、認証方式をGitHub OAuth以外にすれば行けたと思うのですが、新しくユーザ・パスワードを設定するのも(覚えるのが)しんどいのでやめました。

また、JenkinsもDockerを使用して動かしており、ホストOSのリポジトリを見に行く & デプロイするにはJenkinsコンテナにホストOSの鍵を保存してsshでリモートコマンドを実行する必要があったりして、結構めんどくさいというのも見送った理由の一つにあります。会社ではその方法でやってるのですが、sshの鍵作ったりするのって結構億劫な作業じゃないです?私は億劫です。

ちなみに、GitBucketのWebhookを用いたJenkins連携のやり方は下記の記事が詳しいです。

GitBucket の Webhook(Service Hooks、Payload URL)を Jenkins のビルド・トリガにする方法