Vagrant環境のDockerでJenkinsサーバを構築し、スレーブのWindowsマシンを接続する(前半)

## イントロ
以前自分のWikiに「[Dockerサーバに、Jenkinsサーバを構築する](https://www.masatom.in/pukiwiki/Docker/Jenkins/)」って記事を書いたのですが、そのときは``docker run ...`` って多少チマチマと構築してましたが、今回は同じ環境を docker-compose で作成します。
そして、Jenkinsサーバを構築したのち、**スレーブとなるWindowsPCをそのJenkinsにぶらさげて、JenkinsからそのWindowsマシンに何か処理をさせて**みようとおもいます。
![00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73777/0ffa7039-5296-aa6b-ab3a-b5a5b94c31da.png)


あ、一応 UiPathをリモート実行出来るかな？？ってのを調査するための環境構築という位置づけです。[^1]
ちなみに UiPath社は**「スケジューラなどからの定期起動はライセンスポリシー違反」**としていますので、実運用へ適用する際はライセンス的に問題ないかキチンとご確認ください。


UiPath社がだしている [UiPath Robots の外部トリガーによる実行について](https://www.uipath.com/ja/resources/knowledge-base/2019-06-03)によると**「直接のユーザ操作によらない起動はNG」**と書いてありますが**「スケジューラを用いた直接ユーザ操作による起動はサポート外だが実施してよい」** みたいなので、Jenkinsからの実行自体は問題がなさそうですね。


[^1]: 結論いうとリモートから実行は出来るんですが、さすがにOrchestratorを使った方がラクです :-)


## 作成する環境

- 1つのVagrantfileで Jenkinsサーバを立ち上げます。
- Vagrantfileでは、Ubuntu Linux 上にDockerサーバを構築し、Docker上にJenkinsサーバを立ち上げます。
- リアルのネットワークに「スレーブにしたいWindowsPC」が存在していて、それをJenkinsにスレーブとして設定します。

図にすると、こんな感じです。
![Vagrant_Docker_jenkins.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73777/51fc688d-9c3a-7cca-274c-da699784671a.png)

ちなみに今回作業する環境は下記の通り。

```bash:Vagrantを動かすコンピュータ
$ sw_vers
ProductName:	Mac OS X
ProductVersion:	10.14.6
BuildVersion:	18G84
$
$ vagrant --version
Vagrant 2.0.4
$
```


```:スレーブにしたいWindowsPC
Microsoft Windows [Version 10.0.17763.615]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\>ver

Microsoft Windows [Version 10.0.17763.615]

C:\>java -version
java version "1.8.0_221"
Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
Java HotSpot(TM) Client VM (build 25.221-b11, mixed mode)
```

UiPathのバージョンは、2018.4.5 でした。



## コードの取得、Jenkinsサーバの構築

使用するファイル群を[GitHub](https://github.com/masatomix/environment_template/tree/feature/for_qiita_jenkins)から取得します。

```bash
$ git clone --branch feature/for_qiita_jenkins https://github.com/masatomix/environment_template.git
$ cd environment_template/
$ vagrant up
```

と実行することで、Ubuntu Linuxの構築から Dockerのインストール、Dockerサーバ上でのJenkinsサーバのインストールまでが行われます。
環境が構築できたら、``http://localhost:8888/jenkins/``[^2]へアクセスしてください。何か画面が出てきたらOKです。
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73777/4b512872-9e57-e215-6301-c9b932e1a0f6.png)

[^2]: vagrantを立ち上げた端末以外からアクセスする場合は``http://[vagrantが動いているマシンのIP]:8888/jenkins/`` です。ねんのため。

初回アクセス時に Administrator password を入れろと出ますが、``vagrant ssh`` でJenkinsが稼働するLinuxサーバにログインし、

```bash
$ vagrant ssh
vagrant@ubuntu-xenial:~$ cat /vagrant/jenkins/jenkins_home/secrets/initialAdminPassword
744a5ab5c95f4b438ecd2ac7cb74b960
```

で表示される値を入れればOKです。

Continueをクリックすると、初回に入れたいプラグインを指定する画面となりますが、とりあえず左を選択します。
![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73777/738bb708-6964-b697-3167-6517590acf46.png)

インストールが始まりました。
![02_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73777/859ba275-f172-3e06-3e4d-944aff29b88d.png)

完了したら、アカウント作成画面が表示されるので、、、適当に入力。
![03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73777/6501d55f-4aed-a3e1-aed2-ba98fec0d5d5.png)

URLもデフォルトでよいでしょう。「Save and Finish」をクリックして、、
![04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73777/ed7a5afa-64c1-a9de-30ac-24943805ad1f.png)

完了です。
![05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73777/032bb05d-6996-bef8-b4d6-22f3181cd98c.png)

トップページが表示されました！
![06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73777/2bb832f0-10ae-48bc-7107-e0b912fd28fb.png)




### docker-compose.yml はこちら

``vagrant up`` が実行されると、Ubuntu Linux上のDockerで、下記の docker-compose.yml が実行されてJenkinsが構築されます。


```yaml:docker-compose.yml
version: '3.5'
services:
  jenkins-master:
    image: jenkins/jenkins:${VERSION}
    environment:
      - JENKINS_OPTS= --prefix=/jenkins
    ports:
      - 8080:8080
      - 50000:50000
    volumes:
      - ./jenkins_home:/var/jenkins_home
    restart: always

```

```properties:.env
VERSION=2.187-centos
```

Jenkinsを立ち上げるだけなので、シンプルですね。Jenkinsの構築は完了です。


さて[次の記事](https://qiita.com/masatomix/items/6d751d361af760346383)で、スレーブにしたいWindowsPC を設定していきましょう。


おつかれさまでした。

## 関連リンク
- [Vagrant環境のDockerでJenkinsサーバを構築し、スレーブのWindowsマシンを接続する(後半)](https://qiita.com/masatomix/items/6d751d361af760346383)
- [UiPath Robots の外部トリガーによる実行について](https://www.uipath.com/ja/resources/knowledge-base/2019-06-03)
- [GitHub](https://github.com/masatomix/environment_template/tree/feature/for_qiita_jenkins)
- [Jenkins Continuous Integration and Delivery server](https://hub.docker.com/r/jenkins/jenkins/)