読者です 読者をやめる 読者になる 読者になる

ITの隊長のブログ

ITの隊長のブログです。いや、まだ隊長と呼べるほどには至っていないけど、日々がんばります。CakePHPとPlayFrameworkを使って仕事しています。最近はAngular2をさわりはじめたお(^ω^ = ^ω^)

GitLab + Jenkinsを使ってのFTP自動デプロイ

git GitLab Jenkins CentOS CentOS7

スポンサードリンク

http://www.flickr.com/photos/72037040@N00/13291055284
photo by Luis M. Gallardo D.



デスマから開放されたので、Jenkinsの環境を構築してみた。


Jenkins。1ヵ月前に勉強会に参加してから1、2日ほど色々検証していたが(ほとんど環境構築に時間を割いたが)、直後デスマーチが始まったので全然触っていませんでした。


今回は長年の夢。自動デプロイを試してみた。


あと、今回やることなんですけど。gitlabは運用中。jenkinsはインストール済み。で、この2つは同じサーバ。またセキュリティのことはガン無視(公開しているサーバではないので)の連携のためのログです。


本当だったら、gitlabにjenkins用のユーザー作成したり、ssh認証鍵なんて作らないといけないと思いますので、ほどほどの参考でおなしゃすm(_ _ )m



環境

$ cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)
  • Jenkins
$  cat /var/lib/jenkins/config.xml
<?xml version='1.0' encoding='UTF-8'?>
<hudson>
  <disabledAdministrativeMonitors/>
  <version>1.613</version>

~ 省略 ~
  • GitLab 7.10.4 337225a

※ヘルプページ「http://${IPアドレス}/help」で確認できます。


Jenkins側

Jenkinsに必要なプラグインをインストール

  • Publish Over FTP Plugin ・・・ ftpに必要
  • GIT plugin ・・・ git連携で必要
Public Over FTP Plugin の設定


Jenkinsのシステム設定へ移動


んで、「Publish over FTP」という項目に設定する。

  • Name ・・・ FTP設定名
  • Hostname ・・・ 公開サーバのドメイン、もしくはIPアドレス
  • UserName & Password ・・・ FTPのユーザー&パスワード
  • Remote Directory ・・・ デプロイしたいディレクトリパス ex) /html/public_html/ 等
GIT plugin の設定


ソースコード管理 => gitを選択

「Repository URL」にGitlabで作成したプロジェクトのリポジトリURLを入れる。
「Credentials」は「root/****」を選択してください(ユーザー&パスは予め登録しています)


これでおk


試しにJob作って実行してみる




(;・∀・)ハッ?







できちゃったよおい。



最初だから失敗するノリで実行しましたが、できちゃったよ。すげぇ。めっちゃ簡単じゃん。(ここまで15分)


でも目標はgit pushでhookしてもらうことなので、まだまだ続く。

Gitlab側


では、hookの設定を進めます。


hookも簡単です。あるプロジェクトのこのページに設定するだけ。


しかし、ここで問題が・・・。



(;・∀・)どのURLを設定すれば良いのか・・・・・?


まぁでもぐぐったらみつかりました。


どうやらこんなURLをGETすればいいらしい。

http://${IPアドレス}/jenkins/job/${Jobの名前}/build


んで、hookに設定して、テスト実行。



キタ━━━━(゚∀゚)━━━━!!



すごい!すばらしい!!Excellent!!!


これでFTPツールとはおさらばだぜぇ

んで、このままの設定だとまだまだ


今回masterブランチだけでしか検証していませんが、どうやらすべてのpushでビルドが発生するようです(´Д`;


gitlabのhookでtag付のpushとか、レビュー後のプルリクとかでhookすればなんとか回避できるのかなと思うけど、それでもやっぱり特定のブランチにpushしたときだけが望ましいと思う。


ということで探してきました。「Run Condition Plugin」


このプラグインを使うと、Jenkinsをキックするときのパラメータをパースして、特定のブランチにpushした時を判別することができるとか。


早速インストールして試して見ましたが、、、、



(´ヘ`;)ウーム…


ほしい項目がでてこない。「プロジェクト」 => 「設定」 => 「ビルド手順の追加」 で「Conditional step (single)」の項目がでてこないお(^ω^ = ^ω^)


で、ここでパラメータを正規表現で取得して、特定のブランチのpushであればってことができる(らしい)


ここで詰まったので続きはまた次回

まとめ


ハマるだろうな。の体で挑んだわりには、サクサクできたので楽しかった。


jenkins。ものにしたい。