Docker安裝Jenkins教程


一、當前配置環境

CentOS7: 1908

IP:             192.168.81.103

hostname: jenkins

鏡像:         jenkins/jenkins 

二、准備工作

1.關閉防火牆和SeLinux

systemctl stop firewalld && systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/sysconfig/selinux

2.禁用swap交換分區

swapoff -a && sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/sysconfig/selinux 

三、Docker安裝

1.配置docker源

yum install -y wget
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

2.安裝docker環境依賴

yum install -y yum-utils device-mapper-persistent-data lvm2

3.安裝docker

yum install docker-ce-18.09.9 docker-ce-cli-18.09.9 containerd.io -y 

4.啟動docker並設置為開機自啟

systemctl start docker && systemctl enable docker

5.配置鏡像加速

# 這里使用的是我的阿里雲鏡像加速,可以自己去阿里雲配置一個
mkdir -p /etc/docker 
tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": ["https://mxdu1aof.mirror.aliyuncs.com"], 
    "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF

6.配置ipv4.ip_forward

vim /etc/sysctl.conf
​
# 在sysctl.conf的最后加入下面這一行
net.ipv4.ip_forward=1

7.重新啟動守護進程並重啟docker

systemctl daemon-reload && systemctl restart docker 

四、安裝Docker版Jenkins

1.下載jenkins鏡像,選擇jenkins/jenkins版本

2.由於jenkins的docker版本沒有dotnetcore環境,所以,我們要基於jenkins/jenkins鏡像構建包含dotnetcore3.1環境的jenkins鏡像

mkdir -p /root/jenkins

Dockerfile文件代碼如下:

FROM jenkins/jenkins
​
# Switch to root to install .NET Core SDK
USER root
​
# Show distro information!
RUN uname -a && cat /etc/*release
​
# Based on instructiions at https://www.microsoft.com/net/download/linux-package-manager/debian9/sdk-current
# Install dependency for .NET Core 3
RUN apt-get update
RUN apt-get install -y curl libunwind8 gettext apt-transport-https
​
# Based on instructions at https://www.microsoft.com/net/download/linux-package-manager/debian9/sdk-current
# Install microsoft.qpg
RUN curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
RUN mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
RUN sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-debian-stretch-prod stretch main" > /etc/apt/sources.list.d/dotnetdev.list'
​
# Install the .NET Core framework
RUN apt-get update
RUN apt-get install -y dotnet-sdk-3.1

3.將Dockerfile文件拖入到/root/jenkins目錄中,構建鏡像

cd /root/jenkins
docker build -t my-docker-jenkins .

 4.通過my-docker-jenkins鏡像運行容器

docker run -d --name jenkins -p 8080:8080 \
-v /usr/bin/docker:/usr/bin/docker \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /home/jenkins_home:/home/jenkins_home \
-v /usr/jenkinsci/:/usr/jenkinsci/ \
my-docker-jenkins

命令行解讀:

第一行:將鏡像容器以后台方式運行並命名為jenkins,並對外開放8080端口映射到jenkins內部的8080端口

第二行:將宿主機上面的docker命令行掛載到容器上面,不然在執行jenkins任務時用到docker命令時會報docker:command not found

第三行:將宿主機上的docker.sock掛載到容器中的相應位置,使得容器中的docker命令行能跟宿主機的docker通信

第四行:掛載我們創建的配置文件存放目錄到指定的文件夾

第五行:掛載我們創建的配置文件存放目錄到指定的文件夾,用於存放CICD的模板

5.運行jenkins

在瀏覽器輸入192.168.81.103:8080

通過鏡像獲取密碼

docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword

安裝插件(如果遇到插件安裝失敗,重試就好了)並配置第一個用戶名和密碼

安裝后配置完用戶,就可以使用Jenkins了

五、使用Jenkins創建任務

1.新建任務

2.配置任務,通過gitee倉庫

我gitee上隨便弄了個測試,由於是公開的就不需要憑證,如果是私有的gitlab的,就添加Credentials,如下所示

3.構建觸發器

構建觸發器比如在git提交代碼后,Jenkins自動拉取代碼后立即構建,這一步我們需要先在系統設置-->插件管理安裝響應的插件,例如gitlab插件,我就把gitlab所有相關插件一並安裝上。

構建觸發器如下,你也可以根據自己所需配置相關信息

4.配置shell腳本

由於我把shell腳本放在/usr/jenkinsci目錄下了,也在啟動容器的時候掛載了卷 -v /usr/jenkinsci/:/usr/jenkinsci/ ,所有在容器內部是獲取的到的,也可以用以下命令處理

#!/bin/bash -ilex
​
dotnet restore
mkdir -p /tmp/dotnet/publish/
dotnet publish -c Release -r linux-x64 -o /tmp/dotnet/publish/
echo "Successfully!!!! ^ please see the file ."
cd /tmp/dotnet/publish/
​
PROJECT_NAME=${JOB_NAME,,}
IMAGE_VERSION=`date +%Y%m%d%H%M%S`
IMAGE_VERSION_RANDOM=$RANDOM
IMAGENAME=${JOB_NAME,,}$IMAGE_VERSION$IMAGE_VERSION_RANDOM
echo 'start build image'
# 項目的Dockerfile屬性需要設為復制模式,不然publish后找不到
docker build -t $IMAGENAME .
echo 'end build image'
rm -rf /tmp/dotnet/publish/

5.配置完后立即構建,看看有沒有失敗的,如果失敗了,可以點擊構建的版本看看控制台輸出什么錯誤,我是遇到挺多坑的,就是由於自己沒配置好或者shell腳本沒寫好。

主要有以下錯誤&分析&解決:

1.xxx.sh:not found

修改錯誤:在Execute shell中第一行改為這句話:#!/bin/bash -ilex

2.docker: command not found

修改錯誤:在docker run -d --name jenkins時,一定要映射-v /usr/bin/docker:/usr/bin/docker

解決完bug也就構建成功了

 

六、參考

https://mp.weixin.qq.com/s/ngUfM27drd3fApC2PlJkOQ

https://www.cnblogs.com/YahuiWang/p/jenkins-docker-dotnet-core-publish.html

https://www.cnblogs.com/little-ab/p/12974139.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM