基於CentOS、docker搭建jenkins內網前端可持續整合環境

睡不醒的黑客發表於2017-12-14

測試環境:centos 7(64位)、docker-ce、jenkins 2.93

docker-ce安裝文件jenkins官方react和node整合文件

docker離線安裝

在centos上安裝docker,除了docker的rpm外還需要有以下的依賴包:

安裝依賴:

sudo yum install libtool-ltdl-2.4.2-22.el73.x8664.rpm
複製程式碼
sudo yum install container-selinux-2.33-1.git86f33cd.el7.noarch.rpm
複製程式碼
sudo yum install docker-ce.rpm
複製程式碼

如果之前安裝過docker而遇到問題,請參考docker-ce安裝文件

開啟docker服務

sudo systemctl start docker
複製程式碼

下載jenkins映象並匯出

我這裡選擇的是這個jenkins映象,之前在win10 pro上有用過jenkinsci/blueocean:latest,在執行node命令是會出現找不到node命令,即使我已經設定了PATH

docker pull jenkins/jenkins
複製程式碼

輸入 docker images檢視當前的映象列表

基於CentOS、docker搭建jenkins內網前端可持續整合環境

輸入sudo docker save -o myjenkins.tar jenkins/jenkins:latest 以.tar的格式匯出jenkins/jenkins:latest映象到當前資料夾,並將它拷貝到離線環境

在離線環境下匯入

離線環境下,輸入sudo docker load --input myjenkins.tar匯入映象。

這時輸入docker images檢視映象,即可看見匯入的映象

執行匯出的jenkins映象

docker run 
  
  // 當此容器stop時,刪除此容器
  --rm 
  
  // 設定呼叫docker中命令終端時,使用的角色
  -u root 
  
  // 對映主機的物理埠8080到docker的8080虛擬埠
  -p 8080:8080 
  
  //如果jenkins-data(資料夾名字,可以取其他的)在/var/lib/docker/volumes下不存在,docker會建立此資料夾,並將此資料夾下的_data資料夾對映到docker中的/var/jenkins_home,此資料夾下儲存的是jenkins的資料(包含外掛、使用者資訊、構建記錄等)
  -v jenkins-data:/var/jenkins_home
  
  // docker的守護程式(沒深入研究過)
  -v /var/run/docker.sock:/var/run/docker.sock 
  
  // 對映主機的/home/hanqing/source到docker容器中的/home
  -v /home/hanqing/source:/home
  
  // 要執行的映象
  myjenkins
複製程式碼

打命令的時候是一行寫完的,不換行

執行後下圖的紅框中的字串要拷貝下來,之後jenkins啟用需要用到

基於CentOS、docker搭建jenkins內網前端可持續整合環境

配置jenkins

開啟瀏覽器訪問localhost:8080,看到jenkins服務已經開啟了

基於CentOS、docker搭建jenkins內網前端可持續整合環境

administrator的password就是之前紅框中的那一串

因為是離線(可以先跳過這個步驟,等配置完jenkins的時候再新增),我知道的外掛安裝方式有兩種

  • 外掛可以通過jenkins-plugins下載後,從系統設定->管理外掛->高階->上傳外掛
  • 從已經下載好外掛的jenkins外掛目錄下拷貝出來,複製到離線jenkins的外掛目錄(此例子的外掛目錄是/var/lib/docker/volumes/jenkins-data/_data/plugins)

設定使用者(電子郵件一欄一定要有@)

基於CentOS、docker搭建jenkins內網前端可持續整合環境

開始使用jenkins

點選主頁左側的新建Item選項,輸入任務名,選擇構建一個自由風格的軟體專案,點選確定

基於CentOS、docker搭建jenkins內網前端可持續整合環境

在頁面中原始碼管理section中選擇版本管理器,我用的是git,所以就用git作例子,這裡的Repository URL可以是一個本地地址,也可以是一個網址,必須指向一個帶.git檔案的資料夾或者一個git倉庫,如果要使用ssh的話,需要在Credentials中設定ssh私鑰

在構建section選擇execute shell,然後就可以在command輸入框中輸入命令了(這些命令是在docker的容器中執行的,所以執行環境也是容器的)

給構建環境增加node

預設情況下,此docker容器的執行環境中沒有node,就跑不了npm script,如果是聯網的話,可以通過NodeJS Plugin外掛來解決,但離線的話就需要在command裡面需要將node的可執行檔案新增進PATH中

我的解決方案是將node的linux二進位制檔案壓縮包解壓到/home/hanqing/source目錄下,為了方便將解壓後的資料夾命名為node,也就是把這些檔案對映到了容器的/home目錄下,這時將bin資料夾下的二進位制檔案新增到PATH中就可以使用node命令了,在command輸入框中輸入:PATH=$PATH:/home/node/bin

相關文章