centos7下docker+.netcore+jenkins实现持续集成
在进行持续集成的过程中 遇到了些问题 所以写文章记录下
1.安装Jenkins
①.安装java环境
②.安装jenkins:
yum install git
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install jenkins
可以进入vim /etc/sysconfig/jenkins进行端口号或者其他配置的修改
JENKINS_PORT为端口号
③.配置jenkins:
chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins
重启jenkins:service jenkins restart
验证jenkins状态:systemctl start jenkins
④.解锁jenkins:
输入服务器地址:http://xxxxx:8080/ 通过cat /var/lib/jenkins/secrets/initialAdminPassword进行密码的获取
输入密码后安装推荐插件 等安装完成创建用户即可访问主页面
2.创建一个.netcore的项目 勾选docker支持
①.添加docker-compose文件的配置
②.对初始文件Dockerfile进行修改(由于这里使用初始的文件导致docker构建镜像的时候一直失败,所以对其进行了小改,后续如果有不正确的希望可以指出来)
下面是修改后的文件:
FROM docker.io/microsoft/dotnet:latest
WORKDIR /app
EXPOSE 80
FROM docker.io/microsoft/dotnet:latest
WORKDIR /src
COPY ["WebApplication5/WebApplication5.csproj", "WebApplication5/"]
RUN dotnet restore "WebApplication5/WebApplication5.csproj"
COPY . .
WORKDIR "/src/WebApplication5"
RUN dotnet build "WebApplication5.csproj" -c Release -o /app
RUN dotnet publish "WebApplication5.csproj" -c Release -o /app
WORKDIR /app
ENTRYPOINT ["dotnet", "WebApplication5.dll"]
③.进行docker-compose.override.yml文件进行端口号的修改
5006代表服务器访问的端口号 80代表容器内部的端口号与上面第二点进行对应,由于程序默认启动是占用80端口,所以这里选择容器内的80端口直接指向了该程序
④.之后将项目提交上git或其他网站进行托管
3.由于jenkins需要用到docker-compose 所以需要对docker-compose进行安装
官方安装:https://docs.docker.com/compose/install/
4.开始进行jenkins任务的创建
①.点击新建任务之后选择第一个,输入名字点击确定
②.在源码管理输入代码仓库地址
③.选择触发模式,这里采用的是轮询:
H/2 * * * * : 代表两分一次
④.配置构建环境:
10分钟代表如果构建超过10分钟,则默认超时
⑤.构建时执行的命令:
#!/bin/bash
# 获取短版本号
GITHASH=`git rev-parse --short HEAD`
echo ---------------Remove-Orphans------------------
docker-compose -f ./docker-compose.yml -f ./docker-compose.override.yml -p WebApplication5 down --rmi local --remove-orphans
echo ------------------Config-----------------------
docker-compose -f ./docker-compose.yml -f ./docker-compose.override.yml -p WebApplication5 config
echo ---------------Publishing...------------------
docker-compose -f ./docker-compose.yml -f ./docker-compose.override.yml -p WebApplication5 up -d --build
echo ---------------Clear-Images...------------------
clearImagesList=$(docker images -f "dangling=true" -q)
if [ ! -n "$clearImagesList" ]; then
echo "No need to clean up images."
else
docker rmi $(docker images -f "dangling=true" -q)
echo "clear success."
fi
echo ---------------Clear-Containers...------------------
点击应用
⑥进入创建的任务中进行构建,选择立即构建
等待过程中可以点击构建记录的控制台进行执行日志的查看
5.构建完成后可进入服务器查看任务执行情况
docker ps -a:查看容器运行情况
如果ports那一列没有的话代表构建失败了 可以查看日志进行查看 后面的参数为容器id
docker logs a3aae354de7f
至此就完成了.netcore+jenkins+docker的持续集成了 这样就可以更加快速地进行版本的迭代 更容易发现问题且减少人工发布的时间