使用Docker安裝Jenkins並新增外掛
Jenkins使用記錄
文章目錄
利用docker安裝Jenkins
拉取jenkins映象
docker pull jenkins
掛載目錄到宿主機,例如使用/var/jenkins_home,需要給目錄設定訪問許可權
chown -R 1000 /var/jenkins_home
啟動。 使用 root 賬號進行登入,暴露埠 8080,tcp 埠50000
docker run -u root -itd --name jenkins -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home jenkins
根據指導完成註冊
安裝外掛:
Publish Over SSH
maven plugin
SSH plugin
Maven Integration plugin
Docker plugin
注意:jenkins是基於jdk環境的,所以在系統管理中,要配置全域性工具配置,進行JDK安裝和Maven的安裝,可直接自動安裝。
使用過程:
建立專案
這裡以Maven專案為例,先新建任務,之前配置了Maven Integration plugin,所以多了一個maven專案,填寫專案名,選擇專案型別,即可建立。
建立完,進入專案,點選設定,進行配置:
原始碼管理
配置自動構建,一般可配置github或gitlab的webhook為觸發條件。也就是當我們push專案時,Jenkins自動幫我們自動測試與構建。當然也可以自動部署,視情況而定。
首先要配置原始碼管理,這裡以git為例:
選擇git,配置Repository URL,就是我們的git專案地址。
然後一定要配置證書,證書可配置ssh連線的,或賬號密碼的,你個人選擇。
我是使用賬號密碼的,注意要填寫你登入git的賬號密碼,不對會連線不上。
構建觸發器
步驟如下:
勾選 Build when a change is pushed to GitLab. GitLab webhook URL: http://jenkins.ss.com/project/…
如果需要加密,可要點選高階,填寫Secret token,然後這個token要與webhook上的一致。
其它功能
Pre Steps是執行構建前做的操作,有眾多選項,因為我是構建中linux環境的,一般都選Shell。
應用場景:如springboot的替換生產環境。
Builds是執行構建操作,一般無需配置,Maven專案預設構建pom.xml,其它視情況而定。
Post Steps是構建完後執行的操作。也有眾多選項,我也是用的shell,一般此選項可用來做部署。
額外配置
假如你安裝jenkins時,是使用docker映象安裝的,那麼如果你要在jenkins裡面使用docker的話,你還需做以下步驟:
- 在構建Jenkins映象時,將jenkins使用者加入docker組,
FROM jenkins/jenkins:latest
LABEL maintainer="[email protected]"
USER root
ARG dockerGid=999
RUN echo "docker:x:${dockerGid}:jenkins" >> /etc/group
USER jenkins
- docker啟動jenkins容器時,將docker的檔案掛載進去,分別是:
-v /var/run/docker.sock:/var/run/docker.sock
-v $(which docker):/usr/bin/docker
命令:
docker run -d --name myjenkins -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker -p 8080:8080 myname/jenkins:1.609.1
注意: 可能會出現一種情況,以上面的方式啟動容器後,還是無法用docker命令,報 找不到某些library,如:
docker: error while loading shared libraries: libltdl.so.7: cannot open shared object file: No such file or directory
原因是jenkins容器內部沒有這個包,解決的辦法有兩個:
- 將容器宿主機的包對映到容器內:
#省略了其他docker執行引數,只列出了缺少的包對映volume
$ docker run --name jenkins -v /usr/lib/x86_64-linux-gnu/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7 -d my-jenkins
如果沒有libltdl.so.7檔案,可進行下載,apt-get install -y libltdl7
- 對jenkins映象進行封裝,官方的jenkins映象是基於debian jessie的,dockerfile最好把源切換成國內的。Dockerfile內容如下:
FROM jenkins
USER root
#清除了基礎映象設定的源,切換成阿里雲的jessie源
RUN echo '' > /etc/apt/sources.list.d/jessie-backports.list \
&& echo "deb http://mirrors.aliyun.com/debian jessie main contrib non-free" > /etc/apt/sources.list \
&& echo "deb http://mirrors.aliyun.com/debian jessie-updates main contrib non-free" >> /etc/apt/sources.list \
&& echo "deb http://mirrors.aliyun.com/debian-security jessie/updates main contrib non-free" >> /etc/apt/sources.list
#更新源並安裝缺少的包
RUN apt-get update && apt-get install -y libltdl7
ARG dockerGid=999
RUN echo "docker:x:${dockerGid}:jenkins" >> /etc/group \
USER jenkins
role許可權管理,對不同的角色可授予不同許可權。
最終掛載:
volumes:
- '/var/jenkins_home:/var/jenkins_home'
- '/var/run/docker.sock:/var/run/docker.sock'
- '/usr/bin/docker:/usr/bin/docker'
- '/usr/lib/x86_64-linux-gnu/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7'
- '/etc/localtime:/etc/localtime'
- '/etc/timezone:/etc/timezone'
參考連結:
https://segmentfault.com/a/1190000010233185
https://my.oschina.net/donhui/blog/478514
https://www.cnblogs.com/leolztang/p/6934694.html
角色許可權