jenkins使用_使用Jenkins来发布和代理.NetCore项目

Back to 382f5d7118d412004aa4156ae18df9ed.pngStudy! 6da7e303dbd77e31e3bc6008da9ce8d8.png

注:书接上文,上回《【CI/CD系列】使用Docker安装Jenkins》咱们说到了使用Docker镜像的方式,来建立Jenkins服务,用来持续集成和持续发布项目,但是上一篇文章有两个问题:

0 1

创建的容器不能操作和使用宿主机的docker,导致我们无法在Jenkins服务中去使用docker命令去构建asp.netcore项目镜像。

0 2

文章只是重点讲解了下如何构建和配置Jenkins服务应用,那接下来如何发布项目和代理项目,没有具体说明。

所以今天就重点说一下这两点,其实也是很简单的,昨天的基本内容已经三分之二了,今天就是简单的补充说明一下。

57c485383b54d5f220836b6524b83e60.gif

PS最终的镜像,我已经推送到dockerHub上了,可以自行pull下来,然后按照下文的命令执行下即可。

9f5d5a40ab3b0e9875b2bf595f71f5f9.png

当然相关的视频版我会接下来的两周,配合着我的六个项目迁移的时候进一步讲解,现在我已经在生产环境构建好了,域名就是:

http://jenkins.neters.club

下一步就是把项目迁移了,这样就能省很多时间,甚至就不需要登录服务器操作了。

4b56a49898ba91dd081fb9166a8e42ee.png1、生成新容器 同时支持 SDK 和 Docker 的容器实例

还是昨天的镜像文件,只不过这次启动容器实例的命令不一样了,用这个:

docker run -u root --rm -d -p 3001:8080 --name jenkins2 \-v /usr/bin/docker:/usr/bin/docker \-v /var/run/docker.sock:/var/run/docker.sock \-v /home/dockerVolumes2/jenkins_home:/var/jenkins_home \laozhangisphi/dnt-docker-jenkins

第一行表示启动一个容器名为Jenkins2的对外开放3001端口实例。

第二行表示将宿主机上面的docker命令行工具挂载到容器中,使jenkins用户能够执行docker命令。

第三行表示将宿主机上的docker.sock挂载到容器中的相应位置,使得容器中的dockercli能跟宿主机的docker通信。

第四行表示挂载我们创建的配置文件存放目录到指定的文件夹。

启动好了以后,就可以浏览器里正常的访问{ip}:3001端口了,接下来就是和上篇文章里说的一样,无脑配置一波就行了。

配置的过程中,如果插件有安装失败的,不用担心,只要能继续我往下走,就没事,因为后台管理里,我们可以继续安装的:

08f47e211bbb796d8b378bac40031d6a.png

这个时候我们可以进入到容器里,执行命令,可以看到该有的命令都有了:

e5af053f0c4e8e8395f1f98851ffc69c.pngdbd2c68bd6dc30a0b42858ac2d64cb87.png

如果仅仅是查看Jenkins密码,不用进入也可以,直接一句话即可

docker exec jenkins2 cat /var/jenkins_home/secrets/initialAdminPassword
是不是很方便。 07019cb6086f78beb51db1553a20daab.png 4b56a49898ba91dd081fb9166a8e42ee.png2、构建项目 创建一个Jenkins工程,使用CLI构建netcore应用

01、首先还是需要一个实例项目

在上篇文章中,我们创建了一个空的webapi项目,现在要创建Docker项目了,肯定就需要一个Dockerfile文件了:

a678239755bbb4ca1efb384b0818dcd0.png

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS baseWORKDIR /appEXPOSE 80FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS buildWORKDIR /srcCOPY ["HelloWorldPrj/HelloWorldPrj.csproj", "HelloWorldPrj/"]RUN dotnet restore "HelloWorldPrj/HelloWorldPrj.csproj"COPY . .WORKDIR "/src/HelloWorldPrj"RUN dotnet build "HelloWorldPrj.csproj" -c Release -o /app/buildFROM build AS publishRUN dotnet publish "HelloWorldPrj.csproj" -c Release -o /app/publishFROM base AS finalWORKDIR /appCOPY --from=publish /app/publish .ENTRYPOINT ["dotnet", "HelloWorldPrj.dll"]

这个每个人肯定都能看懂,因为是vs官方给我们创建的,只不过要注意一点,注意路径问题,要放到项目根目录,也就是和vs同级目录。

64dfd845a8a7c2b2faf5760704a0df8a.png

02、配置Jenkins工作任务

基本的和上篇文章一样,还是一个自由风格的模式,配置Git地址,和构建命令。

489a83b9b2098603029350d61680a8c7.png

df6597b0ac8f8e9d137784dbe920e93a.png

98df244fe38bd0f4f82932cbd978b844.png

之所以注释了,是因为第一次构建,宿主机里不存在容器和镜像,以后每次修改代码,都是删掉容器和镜像,重新生成。

但是,上边用的Dockerfile是vs官方给我们默认创建的,如果是国内的服务器,构建的时候会特别慢,那我们就用第二种方案,先发布再构建镜像,而不是在构建镜像的过程中发布,这样的话构建镜像的时候,可以使用国内的一些源镜像。

首先配置镜像文件Dockersfile,注意这个是在最终的publish文件夹里,所以我就右键属性,始终复制了:

FROM swr.cn-south-1.myhuaweicloud.com/mcr/aspnet:3.1-alpineWORKDIR /appCOPY . . EXPOSE 80ENTRYPOINT ["dotnet", "HelloWorldPrj.dll"]

然后编辑我们的Jenkins的构建shell命令:

dotnet restoredotnet build cd HelloWorldPrj dotnet publish echo "Successfully!!!! ^ please see the file ."cd bin/Debug/netcoreapp3.1/publish/#docker stop helloworldcontainer#docker rm helloworldcontainer#docker rmi hello-world-docjekdocker build -t hello-world-docjek .docker run --name helloworldcontainer -p 5055:80 -d hello-world-docjek

03、点击构建,查看结果

7322ebf92db94d63d01c84846c1c7935.gif

可以看到我们在Jenkins中,构建了一个hello-world-docjek的项目镜像,然后生成了一个容器实例。

3e6484f73831ecec5f78c5c2d91f8d21.png

因为我们的Docker是宿主机的,可以在宿主机查看全部容器:

ed1bb36ef79e6b19968ddf600e612f41.png

而且用Jenkins是直接将端口映射到公网的,直接访问{ip}:5055,就可以看到效果了,比如我们刚刚测试的我的http://neters.club:5055/weatherforecast:

836b1274edcedfd0fa8332b9e2455cc6.png

04、Nginx做域名匹配和反向代理

剩下的就是很简单了,简单的在nginx里配置下就行了,将端口映射到域名下,然后配置下跨域的反向代理,整体的开发流程就是这么简单。

以后我们每次修改代码,就可以直接在Jenkins里构建一下,然后就能快速的部署了,是不是很方便。

当然,最后还有发邮件推送消息,编辑触发器,视图管理,docker-compose编排或者其他的知识点,等待视频的时候再说吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值