首頁 > 軟體

使用docker搭建jenkins自動化工具的實現

2022-04-11 13:01:11

一、jenkins

Jenkins是一個開源軟體專案,是基於Java開發的一種持續整合工具,用於監控持續重複的工作,旨在提供一個開放易用的軟體平臺,使軟體專案可以進行持續整合。

大家在工作中,應該都有使用過jenkins 自動化打包或釋出,就比如我經常用到的就是將開發的專案自動化打包成docker映象,實現一鍵打包,大大減少了我們的工作量,下面就一起學習下,jenkins 的安裝與使用。

二、基於docker 搭建 jenkins

本篇使用dockerdocker-composejenkins進行搭建,所以在安裝前要保證伺服器上已經安裝了dockerdocker-compose。如果是內網伺服器,可以先關閉服務的防火牆,外網的話下面注意開放相應埠。

由於我們要在jenkins容器內部使用外部的docker命令,需要依賴libltdl.so.7包,所以首先安裝這個 library:

yum install libltdl.so.7

安裝完之後,我的位置在/usr/lib64/libltdl.so.7,最好確認下你的是不是這個位置。

下面建立jenkin資料儲存的地址:

mkdir /jenkins/jenkins_home

編寫docker-compose-jenkins.yaml 檔案,寫入一下內容:

version: '3.1'
services:
  jenkins:
    image: jenkins/jenkins:lts
    volumes:
      - /jenkins/jenkins_home/:/var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock
      - /usr/bin/docker:/usr/bin/docker
      - /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7
    ports:
      - "8010:8080"
    expose:
      - "8080"
      - "50000"
    privileged: true
    user: root
    restart: always
    container_name: jenkins
    environment:
      JAVA_OPTS: '-Djava.util.logging.config.file=/var/jenkins_home/log.properties'

要在 CentOS7 的容器中使用宿主機上的命令,需要在容器中使用 root 使用者,也可以以 jenkins 使用者執行,但是需要把容器內的 jenkins 使用者加入到 docker 組中,通過 grep docker /etc/group 命令檢視 docker 組的 GID

所以 user: root 表示在容器中以 root 使用者執行。
/var/run/docker.sock:/var/run/docker.sock 表示 Docker 守護行程監聽的 Unix 通訊端。要在 Jenkins 容器中使用 docker 命令,則此選項是必需的。

下面啟動jenkins映象:

docker-compose -f docker-compose-jenkins.yaml up -d

下面就可以在瀏覽器存取了:http://192.168.216.140:8010

第一次使用 jenkins,需要解鎖,金鑰上面已經提示在什麼位置了,由於我們將根目錄已經對映到本機的/jenkins/jenkins_home/下,所以檢視金鑰:

cat /jenkins/jenkins_home/secrets/initialAdminPassword

將上面金鑰填入,繼續可以看到新手入門,如果你不瞭解,就先下載推薦的外掛,如果瞭解件下載針對性的外掛,這裡先安裝推薦的外掛:

等待一會下載完成後,需要建立使用者,也可以使用admin使用者,這裡建立一個新使用者user,然後繼續:

下面一般不修改,直接繼續,然後開始使用,就來到jenkins的主頁面了:

到這裡jenkins就算安裝好了,如果要構建專案的話,還需要安裝maven外掛,後面就可以構建maven專案了:

搜尋Maven

然後等待一會下載完成。還需進行Maven的依賴下載:

直接新增一個maven,可以選擇線上安裝,也可以指定某個路徑,這裡直接從Apache進行安裝:

下面就可以使用jenkins 實現SpringBoot專案的docker環境自動化打包和釋出。

三、jenkins 自動釋出 SpringBoot 映象

首先我們需要建立一個Git倉庫,也可以使用SVN,這裡我在Gitee上新建了一個倉庫,並放入了一個基本的SpringBoot專案:

Dockerfile 檔案的內容:

FROM openjdk:8-jdk
COPY target/jenkins-demo-0.0.1-SNAPSHOT.jar /home/app/jenkins-demo.jar
ENV LANG=UTF-8
ENV TZ=Asia/Shanghai
WORKDIR  /home/app/
CMD java -jar /home/app/jenkins-demo.jar

測試介面:

下面在jenkin中建立專案:

由於上面下載了Maven的外掛,這裡我們可以直接選擇Maven專案:

在General中,填寫專案的描述,並使用引數化構建 ,將每次打包的映象版本,傳遞進來:

引數命名為version,後面打包docker映象時會使用到:

下面在原始碼管理中我們選擇Git:

點選新增,輸入git的使用者名稱密碼,ID可以為空,系統會自動生成一個唯一ID:

選擇上面新增的使用者和密碼:

這裡我就一個master分枝,這裡填寫master

在Build的地方,我們可以寫上打包的命令,這裡可以省略mvn

clean package

Post Steps中我們選擇執行Shell的方式,可以寫打包docker映象的指令:

#!/bin/sh
docker stop jenkins-demo
docker rm jenkins-demo
docker build -t jenkins-demo:${version}  .
docker run -itd --name jenkins-demo  -p 8088:8080 jenkins-demo:${version}

點選下面的儲存,再次回到主頁,就會看到剛才新增的專案了:

下面構建該專案:

需要輸入版本:

在左下角可以看到執行進度:

點進入也可以看到控制檯的列印:

第一次比較慢,等待一會就可以發現,SpringBoot專案就已經啟動在docker中啟動起來了。

檢視docker中的程序:

已經有我們打包的SpringBoot專案了,介面也可以正常存取:

修改下程式,重新發布:

重新構建:

構建完成後,再次存取測試介面:

到此這篇關於使用docker搭建jenkins自動化工具的實現的文章就介紹到這了,更多相關docker搭建jenkins自動化 內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com