镜像: 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'
![img](https://img-blog.csdnimg.cn/img_convert/1dfcdb806289d11df93686efbbf25465.png)
![img](https://img-blog.csdnimg.cn/img_convert/84137c3c71315a28fecc3c1995b09975.png)
![img](https://img-blog.csdnimg.cn/img_convert/b26b3a875a1fa7947ad21640817b89c8.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!**
M
echo 'start build image'
# 项目的Dockerfile属性需要设为复制模式,不然publish后找不到
docker build -t $IMAGENAME .
echo 'end build image'
[外链图片转存中...(img-UlEFMD4G-1719212483345)]
[外链图片转存中...(img-yRT2Baxj-1719212483345)]
[外链图片转存中...(img-vpwxXHDX-1719212483346)]
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!**