CI tool chain with Docker ( 3 ) — Install Jenkins
安裝 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 如下圖:
在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/),此時就會用到剛剛看到首次登入密碼。
Step4. 選擇 Install Suggested Plugin
這個選項會讓Jenkins 幫我們先裝好常用的插件
Step5. 等待所有插件安裝完成
Step6.
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