CI tool chain with Docker ( 3 ) — Install Jenkins

Wang William (WJWang)
6 min readJun 21, 2017

--

安裝 Jenkins CI

Step1. 在 host 主機上開啟一個資料夾,準備做為稍後 jenkins 的 container volumn

$ mkdir /srv/jenkins
$ sudo chown 1000 /srv/jenkins
$ sudo chmod 775 /srv/jenkins
$ sudo docker run --name jenkins -p 8888:8080 -p 50000:50000 -v /srv/jenkins:/var/jenkins_home -d --restart unless-stopped jenkins

Step2. 獲取首次登入密碼

登入[Docker GUI] 然後選擇 Containers → jenkins → stdout/stderr 如下圖:

3

在STDERR 的區塊,應該可以看到如下方的Log 當中的亂數文字就是密碼:

*************************************************************
*************************************************************
*************************************************************

Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:

e956cf3e8a4c4aa392f5396653255d78

This may also be found at: /var/jenkins_home/secrets/initialAdminPassword

*************************************************************
*************************************************************
*************************************************************

Step3. 執行首次登入Jenkins

剛剛架設好的Jenkins 可以由此登入(http://< IP / Domain >:8888/),此時就會用到剛剛看到首次登入密碼。

4

Step4. 選擇 Install Suggested Plugin

這個選項會讓Jenkins 幫我們先裝好常用的插件

5

Step5. 等待所有插件安裝完成

6

Step6.

7
8

Step7. 安裝額外需要的插件

在Jenkins 主畫面選擇 管理 Jenkins → 管理外掛程式 → 可用的 ,之後搜尋下列插件的名稱並勾選,之後後再選擇最下方的直接安裝按鈕。 需要安裝的插件如下:

  • Docker Commons Plugin
  • Docker build step plugin
  • Git plugin
  • Gitlab Hook Plugin
  • Gitlab Merge Request Builder
  • Publish Over SSH
  • Slack Notification Plugin
  • SSH plugin
  • Maven Integration plugin (建置maven project)
  • nvm wrapper (建置nodejs project)

安裝插件的過程中,有時候可能會因為網路狀況的問題造成安裝失敗,此時可以重新啟動Jenkins在嘗試安裝一遍。

Step8. 等待所有插件安裝完成

Step9. 重新啟動Jenkins

在瀏覽器網址列輸入(http://< IP / Domain >:8888/restart),之後按下,即可重開Jenkins

Step10. 設定 Docker Builder 插件

在Jenkins 主畫面選擇 管理 Jenkins → 設定系統 找到 Docker Builder 下的 Docker URL,將其修改為

http://< IP / Domain >:2376

之後可以透過右下方的Test Connection 測試是否成功。 不過此插件似乎有一個BUG 就是要先儲存整份設定再回來按Test Connection才會測試成功,否則一定會失敗。

Step11. 讓Jenkins 取得 host 節點 root 帳號的 SSH 私鑰與公鑰

此步驟是為後面的設定SSH相關的插件做準備

$ sudo su
$ cd /srv/jenkins/
$ mkdir .ssh
$ cp /root/.ssh/id_rsa* /srv/jenkins/.ssh/. (或是重新使用ssh-keygen再產生一把金鑰)
$ chown -R 1000 /srv/jenkins/.ssh
$ chmod -R 775 /srv/jenkins/.ssh
$ exit

Step11. 設定 Publish over SSH 插件

在Jenkins 主畫面選擇 管理 Jenkins → 設定系統 找到 Publish over SSH ,並修改 Path to Key 的值為.ssh/id_rsa。 之後在 SSH Servers 處點下新增 來新增一台遠端電腦,設定如下:

  • Name: [USER]@[IP / FQDN]
  • Hostname: [IP]
  • Username: [USER]
  • Remote Directory: /
  • Port: [ssh port number]

Port 要展開 進階...才找得到

Step12. 設定 SSH Plugin 插件

在Jenkins 主畫面選擇 管理 Jenkins → 設定系統 找到 SSH remote hosts,之後在 SSH sites 處點下新增 來新增一台遠端電腦,設定如下:

  • Hostname: [IP]
  • Port: [ssh port number]
  • Username: [USER]
  • Keyfile: /var/jenkins_home/.ssh/id_rsa
  • Pty: 打勾
  • serverAliveInterval: 0

第一次存擋之前可能會有一些Connection Refuse 的訊息,這應該是前端的BUG

--

--

No responses yet