いまさらながらJenkinsです。

みなさんJenkinsでCIでCDでAgileなDevOpsしてますよね。

しかし自分は

  • .Net/C#プロジェクトが多い。
  • 一人プロジェクトが多い。
  • なんか利点がいまいちわからん。

ってことで使ってきませんでした。

やってみないと良さがわからんのかも?ってことで、いまさらながら環境だけでも作ってみます。

環境は

Ubuntu 16.04 on Vagrant (masterにします)

Windows 7 ( slave にします)

です。

.NetプロジェクトをCIしてみたいのでLinuxをmaster、windowsをslaveとした構成を作ります。

Linux(master)

ちょい前に作ったALMinium(Redmine)環境に追加します。

Jenkins

see https://pkg.jenkins.io/debian/

see https://github.com/ayapapa/alminium/blob/master/jenkins/setup/debian/install.sh

1
2
3
4
5
6
7
8
admin@vagrant:~$ sudo apt-get update
admin@vagrant:~$ sudo apt-get install -y openjdk-8-jre-headless
admin@vagrant:~$ wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
admin@vagrant:~$ echo "deb https://pkg.jenkins.io/debian binary/" | sudo tee /etc/apt/sources.list.d/jenkins.list
admin@vagrant:~$ sudo apt-get update
admin@vagrant:~$ sudo apt-get -y install jenkins
admin@vagrant:~$ sudo sed -i 's/JENKINS_ARGS="--webroot/JENKINS_ARGS="--prefix=\/jenkins --webroot/' /etc/default/jenkins
admin@vagrant:~$ sudo service jenkins restart

これで http://linuxserver:8080/jenkins でJenkinsが見れるはず。

Apache reverse proxy

8080はかっこ悪いのでreverse proxyを設定します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
admin@vagrant:~$ sudo nano /etc/apache2/conf-available/jenkins.conf
admin@vagrant:~$ cat /etc/apache2/conf-available/jenkins.conf
ProxyPass           /jenkins http://127.0.0.1:8080/jenkins nocanon
ProxyPassReverse    /jenkins http://127.0.0.1:8080/jenkins
ProxyRequests       Off
AllowEncodedSlashes NoDecode

<Proxy http://127.0.0.1:8080/jenkins*>
  Order deny,allow
  Allow from all
</Proxy>
admin@vagrant:~$ cd /etc/apache2/conf-enabled
admin@vagrant:/etc/apache2/conf-enabled$ sudo ln -s ../conf-available/jenkins.conf
admin@vagrant:/etc/apache2/conf-enabled$ sudo  systemctl restart apache2

これで http://linuxserver/jenkins でもJenkinsが見れるはず。

Jenkinsの管理>システム設定>Jenkinsの位置>Jenkins URL を http://linuxserver/jenkins/ にする。

Plugin

see windows Slave

Windows Slaves

Enable JNLP

Jenkinsの管理>グローバルセキュリティの設定>Agents>TCP port for JNLP agents> 固定:50100

ノード作成

Jenkinsの管理>ノードの管理>新規ノード作成>

ノード名 : windows7

リモートFSルート: c:\var\jenkins

ラベル: windows

用途: このマシーンを特定ジョブ専用にする

起動方法:Launch agent via Java Web Start

ジョブ作成

「実行するノードを制限」をチェック、ラベル式に”windows7″

他はジョブ毎に調整。

Windows(Slave)

エージェントのインストール

ブラウザでJenkinsにアクセスして、

Jenkinsの管理>ノードの管理>windows7

download slave-agent.jnlp (right click “Launch” Icon and download)

open command prompt as Admin

1
$ javaws slave-agent.jnlp

小さいウインドウが出るので、file> install as a service を選択。

サービスとして登録されます。

とりあえず環境はできました。

試しに単純なコマンドラインツールをビルドするジョブを作ってみましたが、そんなに難しくは無いようです。

ネット上の情報はほとんどlinuxを前提としているので、masterはlinuxに入れといたほうが無難だと思います。

master/slave構成ってのができるって事と、slaveにはJenkinsインストール不要ってことを知らないと、

いきなりWindowsにjenkinsをインストールしたりしますよね~。

もしかしたら ASP.NET MVCなアプリのCI/CDに挑戦するかも。