活動報告4 ~gitとjenkinsとcloud9~
TRANSCRIPT
パソコン部活動報告2014/12/25
最新の技術をとりあえず試してみることを目的とした部です。
2014/12月活動内容
1. AWS EC2にgitlabとjenkinsをインストールして連携させたら、cloud9とgitlabを連携させてそこからjenkinsへ連携させる
Look at me mom...dad and I are having so much fun!
1.セキュリティグループの設定
1. セキュリティグループを作成する
まず、今回は同一インスタンス内にgitlabとjenkinsを立てる。んで、cloud9からgitlabへのpushでjenkinsにビルドさせる。
セキュリティグループは以下の通り。
HTTPの設定は社内からのアクセスに限定したいところだけど、gitlabからのhookがHTTPなんでこの設定。gitlabとjenkinsは分けたほうがいいのかも。。。
ポートレンジ 用途
8081 gitlab用
18080 jenkins用
2.EC2にgitをインストール
1. gitをインストールする
依存関係モジュールのインストール# sudo yum install -y curl-devel expat-devel gettext-devel openssl-devel perl-ExtUtils-MakeMaker
EC2にはコンパイラがないのでインストール# sudo yum install -y gcc
gitのインストール# cd /usr/local/src# sudo wget https://git-core.googlecode.com/files/git-1.8.2.1.tar.gz /usr/local/src# sudo tar zxvf git-1.8.2.1.tar.gz# sudo su -# cd git-1.8.2.1# ./configure# make install
gitのバージョンをチェック# git --version※1.8系入れたと思ったけど、2系になってた。。。
3.EC2にgitlabをインストール
1. インストール
以下のコマンドを順番に実行していく
# sudo yum update
#wget https://downloads-packages.s3.amazonaws.com/centos-6.5/gitlab-7.1.0_omnibus-1.el6.x86_64.rpm
# sudo yum install openssh-server
# sudo yum install postfix
# sudo rpm -i gitlab-7.1.0_omnibus-1.el6.x86_64.rpm
# sudo -e /etc/gitlab/gitlab.rb →ここでドメインを書き換えて http://vxvideo.asiaでアクセスできるようにする
# sudo gitlab-ctl reconfigure
3.EC2にgitlabをインストール
2. 設定したドメインへアクセス
正常にインストールされていれば下図の画面が表示される。初回は
username : rootpassword : 5iveL!fe
でログインする。
最新版だと、パスワード変更画面からパスワードを変更するとログイン画面に戻ってきて再度ログインすると、またパスワード変更画面へ遷移してループ状態に陥る。
パスワードを変更してログインしたら、上部メニューから別画面へ遷移すると、次回からはこの現象は起きなくなる。
4.EC2にjenkinsをインストール
1. jenkinsのインストール
javaがインストールされているかを確認してインストールされてなかったらインストールする# java -version
jenkinsのインストール
# sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
# rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
# sudo yum install -y jenkins
初期状態だと、jenkinsは起動しなかった。java.net.bindexception: address already in useとログ出ていたのでポートを変更したら動いた。# sudo vi /etc/sysconfig/jenkins※8080の箇所を任意のポートに変更します
jenkinsを起動させる
# sudo service jenkins start
jenkinsの自動起動をONにしておく
# sudo chkconfig jenkins on
ポート指定はダサいので変更する
http://vxvideo.asia:18080
5.EC2にnginxをインストール
1. nginxでリバースプロキシの設定をする
nginxをインストールする# sudo yum install nginx
jenkins側でPrefixの設定をする# sudo vi /etc/sysconfig/jenkins
nginXリバースプロキシの設定をする# sudo vi /etc/nginx/nginx.conf
※変更点は次ページ参照
再起動# sudo /etc/init.d/nginx restart
jenkinsをgitに登録
# sudo -u jenkins git config --global user.email "[email protected]"
# sudo -u jenkins git config --global user.name "jenkins"
[変更点]JENKINS_ARGS=--prefix=/jenkins --httpPort=${JENKINS_PORT} --ajp13Port=${JENKINS_AJP_PORT}
JENKINS_AJP_PORT=”8010”
5.EC2にnginxをインストール
httpセクションに
upstream Jenkins.backend {
server 127.0.0.1:18080;
}
serverセクションに#gitlab
location / {
proxy_pass http://vxvideo.asia:8081;
}
#jenkins
location ~ ^/jenkins.* {
proxy_pass http://Jenkins.backend;
break;
}
5.EC2にnginxをインストール
gitlabにアクセスする
http://vxvideo.asia/
jenkinsにアクセスるhttp://vxvideo.asia/jenkins/
6.cloud9からgitlab
1. SSHキーの設定
1. cloud9のダッシュボードにある「Show your SSH key」を押してSSHキーをコピペしておく
2. gitlabにSSHキーを設定
ヘッダーメニューのprofile setting > SSH Key > ADD SSH key で画面を表示
6.cloud9とgitlabの連携
2. cloud9からpushさせる
cloud9のターミナルで以下のコマンドを実行する
originの変更
# git remote rm origin
originの設定
# git remote add origin git@XXX
masterへの追加
# git push -u origin master
変更を反映
# git add --all
# git push -u origin master
PC部としてはworkspaceを共有しているプロジェクトに関してはoriginの設定だけ変更すればOKのはず。
ソースが追加されていることが確認できる
7.jenkinsからgitlab
※jenkinsのユーザー作成と権限設定を行っていることを前提として以下記述しています。
1. プラグインの追加
jenkinsの管理 > プラグインの管理からプラグイン追加の画面を表示し、「利用可能」タブを選択する。そこで検索窓にgitと入れて、以下のプラグインを入れる。
・GIT Plugin
・Gitlab Hook Plugin
2. gitの設定
jenkins側でgitの設定をする。ここがよくブログでは省略されていることが多いので注意。
jenkinsの管理 > システム設定からgitのPath to Git executableに「/usr/bin/git」を指定する。nameはdefaultでOK.
3. gitリポジトリの設定
新規ジョブ追加でジョブを作成したら、そのジョブの設定画面を開く。ソースコード管理でgitを選択して、gitlabのリポジトリを指定する。
7.jenkinsからgitlab
リポジトリ指定でエラーが出た場合、Credentialsの設定も必要がある。まず、jenkinsユーザーでログインできるようにするため、設定を変更する# sudo vi /etc/passwd
jenkins:x:498:499:Jenkins Continuous Build server:/var/lib/jenkins:/bin/false
⇒jenkins:x:498:499:Jenkins Continuous Build server:/var/lib/jenkins:/bin/bash
jenkinsユーザーのsuしてsshキーを作成する
# sudo -u jenkins -H ssh-keygen -t rsa -C [email protected]:8081
次に、Credentialsのaddボタンを押して、設定をする。ファイルのパスは「/var/lib/jenkins/.ssh/id_rsa」
Branches to buildは空にして適用する。
7.jenkinsからgitlab
1. jenkinsユーザーの作成
gitlabでjenkinsユーザーを作成する。作成後、プロジェクトメンバーにjenkinsを追加して、Developerにしておく。
2. jenkinsユーザーのSSHキー設定
前に作成したjenkinsのSSHキーをcloud9のSSHキー指定の時と同じように設定する。
7.jenkinsからgitlab
3. Hooksの設定
リポジトリにイベントが発生したらjenkinsがビルドするように設定する。該当プロジェクトを開いて「edit」ボタンを押すと下の画面になるので、URLを指定してaddするURLは、http://vxvideo.asia/jenkins/gitlab/build_nowtest hookしてjenkinsでビルドされてればOK
8.cloud9->gitlab->jenkins
1. cloud9からpush
cloud9からpush jenkinsのビルド変更履歴に表示されたので連携できてるー!