Gitlab的使用
进入Gitlab,点击【Admin Area】-【Network】,勾选选项后保存
进入一个Project,点击【Setting】-【Webhooks】,把刚刚在Jenkins的复制下来的Url填写进去,勾选相应的触发事件后保存
结束
以上就是本篇的内容了,完成了部署后,可以在Jenkins点击【立刻构建】和在Gitlab迁入一次代码查看运行效果。Shell脚本作为一个demo,如果对脚本有更好的建议和优化的写法可以在评论区反馈给我。
容器调用宿主Docker指令构建方式
该方案主要三大块需要额外处理:
1.Jenkins容器目录挂载方式
2.DockerFile使用多段构建
3.Shell构建脚本的路径修改,使用的是容器内的路径(原来是服务器路径)
Jenkins的安装
其余指令可以参考上文,核心主要把 /usr/bin/docker 与 /var/run/docker.sock目录挂载出来。这样就可以在Jenkins容器里调用宿主Docker指令了。
docker run --name jenkins -u 0 -d --restart always -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -v /root/jenkins/jenkins_home:/var/jenkins_home -v /root/jenkins/shell:/shell -p 8080:8080 -p 50000:50000 jenkins/jenkins:lts 安装完成后可以进入Jenkins容器测试下: docker exec -it jenkins /bin/bash docker info
DockerFile的修改
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS builder WORKDIR /src COPY ./ /src RUN dotnet nuget add source http://192.168.88.138:8081 -n LocalNugetServer RUN dotnet publish -c Release TestDockerSwarm.csproj FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base WORKDIR /app EXPOSE 80 COPY --from=builder /src/bin/Release/netcoreapp3.1/publish ./ ENTRYPOINT ["dotnet", "TestDockerSwarm.dll"] 可以优先到服务器把对应的sdk和runtime镜像下载下来 docker pull mcr.microsoft.com/dotnet/core/sdk:3.1 docker pull mcr.microsoft.com/dotnet/core/aspnet:3.1
Shell构建脚本的修改
下面只是针对的单个应用的示例,如果是用docker swarm可以参照上面的多应用部署的示例做调整,主要是一些路径调整,因为现在这种方案是在容器内编译,因此使用的是容器的路径。
#!/bin/bash echo '脚本开始执行' base_path=/var/jenkins_home/workspace/TestDockerSwarm project_name=testdockerswarm project_path=$base_path/TestDockerSwarm cd $project_path ( docker stop $project_name docker rm $project_name docker image rm $project_name docker build -t $project_name . && docker run -d -p 5000:80 -e ASPNETCORE_ENVIRONMENT="Development" --name $project_name $project_name && echo '发布成功:'$project_path'' || echo '发布失败:'$project_path'' ) || echo '发布失败:'$project_path'' echo '脚本执行结束'