活動報告4 ~gitとjenkinsとcloud9~

17
パソコン部活動報告 2014/12/25 最新の技術をとりあえず試 してみることを目的とした 部です。

Upload: vx-pc-club

Post on 22-Jul-2015

160 views

Category:

Engineering


2 download

TRANSCRIPT

Page 1: 活動報告4 ~gitとjenkinsとcloud9~

パソコン部活動報告2014/12/25

最新の技術をとりあえず試してみることを目的とした部です。

Page 2: 活動報告4 ~gitとjenkinsとcloud9~

2014/12月活動内容

1. AWS EC2にgitlabとjenkinsをインストールして連携させたら、cloud9とgitlabを連携させてそこからjenkinsへ連携させる

Look at me mom...dad and I are having so much fun!

Page 3: 活動報告4 ~gitとjenkinsとcloud9~

1.セキュリティグループの設定

1. セキュリティグループを作成する

まず、今回は同一インスタンス内にgitlabとjenkinsを立てる。んで、cloud9からgitlabへのpushでjenkinsにビルドさせる。

セキュリティグループは以下の通り。

HTTPの設定は社内からのアクセスに限定したいところだけど、gitlabからのhookがHTTPなんでこの設定。gitlabとjenkinsは分けたほうがいいのかも。。。

ポートレンジ 用途

8081 gitlab用

18080 jenkins用

Page 4: 活動報告4 ~gitとjenkinsとcloud9~

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系になってた。。。

Page 5: 活動報告4 ~gitとjenkinsとcloud9~

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

Page 6: 活動報告4 ~gitとjenkinsとcloud9~

3.EC2にgitlabをインストール

2. 設定したドメインへアクセス

正常にインストールされていれば下図の画面が表示される。初回は

username : rootpassword : 5iveL!fe

でログインする。

最新版だと、パスワード変更画面からパスワードを変更するとログイン画面に戻ってきて再度ログインすると、またパスワード変更画面へ遷移してループ状態に陥る。

パスワードを変更してログインしたら、上部メニューから別画面へ遷移すると、次回からはこの現象は起きなくなる。

Page 7: 活動報告4 ~gitとjenkinsとcloud9~

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

Page 8: 活動報告4 ~gitとjenkinsとcloud9~

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”

Page 9: 活動報告4 ~gitとjenkinsとcloud9~

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;

}

Page 10: 活動報告4 ~gitとjenkinsとcloud9~

5.EC2にnginxをインストール

gitlabにアクセスする

http://vxvideo.asia/

jenkinsにアクセスるhttp://vxvideo.asia/jenkins/

Page 11: 活動報告4 ~gitとjenkinsとcloud9~

6.cloud9からgitlab

1. SSHキーの設定

1. cloud9のダッシュボードにある「Show your SSH key」を押してSSHキーをコピペしておく

2. gitlabにSSHキーを設定

ヘッダーメニューのprofile setting > SSH Key > ADD SSH key で画面を表示

Page 12: 活動報告4 ~gitとjenkinsとcloud9~

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のはず。

ソースが追加されていることが確認できる

Page 13: 活動報告4 ~gitとjenkinsとcloud9~

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のリポジトリを指定する。

Page 14: 活動報告4 ~gitとjenkinsとcloud9~

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は空にして適用する。

Page 15: 活動報告4 ~gitとjenkinsとcloud9~

7.jenkinsからgitlab

1. jenkinsユーザーの作成

gitlabでjenkinsユーザーを作成する。作成後、プロジェクトメンバーにjenkinsを追加して、Developerにしておく。

2. jenkinsユーザーのSSHキー設定

前に作成したjenkinsのSSHキーをcloud9のSSHキー指定の時と同じように設定する。

Page 16: 活動報告4 ~gitとjenkinsとcloud9~

7.jenkinsからgitlab

3. Hooksの設定

リポジトリにイベントが発生したらjenkinsがビルドするように設定する。該当プロジェクトを開いて「edit」ボタンを押すと下の画面になるので、URLを指定してaddするURLは、http://vxvideo.asia/jenkins/gitlab/build_nowtest hookしてjenkinsでビルドされてればOK

Page 17: 活動報告4 ~gitとjenkinsとcloud9~

8.cloud9->gitlab->jenkins

1. cloud9からpush

cloud9からpush jenkinsのビルド変更履歴に表示されたので連携できてるー!