这几天一直在搞 Jenkins + Docker + Azure Devops 部署,由于这种方式部署真的很是的省心,并且速度快,方便快捷,等等无数优势,感谢个人单身领导的支持,固然也感谢 晓晨大神,没有他的博客,真的不知道怎么搞。html
好滴,进入正题: 第零点:固然要先安装.Net core 运行时啦!官网上就有下载喔~java
首先 这里的jenkins并非装在docker里面的jenkins,是直接安装到linux上的jenkins。我参考的是晓晨的博客,晓晨大佬就是厉害 原文连接:http://www.javashuo.com/article/p-vjyyfiqf-z.html ,这里要强调的是:一、首先咱们linux
先要安装java环境,这里又是参考晓晨大神的博客,原文连接:http://www.javashuo.com/article/p-tizppdfi-ee.html 里面很是详细的介绍咯 git
可是这里要注意的就是:web
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 在官网下载须要点击这个选项才能下载,下载框中的那个就能够了。docker
而后jenkins安装晓晨大佬里的博客已经说的很是明白了。服务器
接下来就是 Azure Devops的说明,微软这个东西很是的牛逼啊,配合vs使用简直是神器啊,oracle
如图:能够创建本身的分支上传(push)和拉取(pull),从某分支合并(merge),完成团队协做。基本上使用很是简单,经过vs就能够直接新建项目到 Azure Devops,也能够创建多个分支,达到团队协做的目的,这里就不详细说明啦。网站
接下来就是docker 的安装了,好吧,我又参考了晓晨Master大神的博客,原文地址:http://www.cnblogs.com/stulzq/p/7743073.html,这里要说明的就是咱们须要安装docker-compose ,这样就能够运行dockerfile文件脚本,达到自动部署的目的。ui
好吧,基本上安装完以后,咱们就能够开始了:
首先咱们须要在jenkins上面新建一个任务,注意是自由风格的软件项目: (这里有一部分参考晓晨的博客,原文连接:http://www.cnblogs.com/stulzq/p/8627824.html)
而后点击ok进入下一个页面,这里的是丢弃旧的构建,由于太多就占磁盘了,第一个是保留几天的build记录,第二个是最多保留多少个构建,设小一点就不会占不少硬盘空间了。
而后就是git的地址了:
上图的git地址, 就是这里的git clone地址 (固然git地址都行):
还须要注意的就是凭证(再点击右上角你的帐户下的security):
在这里面填入名称密码就能够了,而后在上面的凭证Credentials填入就好了:
接下来就是jenkins拉取代码的时间(这里 H/2 * * * * 是两分钟拉取一次):
:
而后是拉取后,构建执行的命令:
jenkins拉取代码后会判断代码与以前的是否不一致,若是不一致,则会执行构建。
接下来是docker的说明:能够看到上图的命令,倒数两行,会执行这个脚本文件,这个脚本文件其实是docker的一些命令,因此咱们须要在项目目录中添加这个脚本文件,我就是直接添加TXT文件改后缀.sh。(有点low。。。。)
来看看这个脚本里面放什么:
#!/bin/sh docker container ls -a | grep "tr" if [ $? -eq 0 ];then docker container stop tr docker container rm tr docker rmi tr docker network ls |grep tr docker network rm tr fi docker build -t tr --build-arg env="Development" . docker run -d --restart=always -p 8051:80 --name tr tr docker cp /etc/localtime tr:/etc/
能够看到就是若是存在tr 先中止 删除 而后再构建。固然咱们也得有dockerfile这个文件,构建的时候docker会去找到dockerfile 而后执行里面的命令(dockerfile在新建.net core项目的时候勾选支持docker就能够咯,还有直接添加txt 去掉后缀也行哈哈哈)
而后看看dockerfile有什么:
# 基于dotnet基础环境构建镜像 FROM docker.io/microsoft/dotnet RUN mkdir /TR #定义参数 ARG env # 把发布的内容拷贝到docker容器的TR目录下 COPY /publish /TR # 设置工做目录 WORKDIR /TR # 暴露80端口 EXPOSE 80 # 设置环境变量 ENV ASPNETCORE_ENVIRONMENT=$env # 启动web RUN echo "执行环境: $env" CMD ["dotnet","TR.dll"]
dockerfile指令详解说明:https://yeasy.gitbooks.io/docker_practice/content/image/dockerfile/,里面都有说明就很少说了哈,要注意的就是:这里 jenkins docker Azure Devops 三者都是独立的,由于jenkins不是安装docker里面,首先咱们上传代码到Azure Devops上,而后jenkins根据凭证去Azure Devops拉取代码到服务器上,执行命令脚本构建,而后就交给脚本执行,找到dockfile执行,重构镜像再生成容器。网站就部署到docker里面了。
大体的就是这样咯,感谢晓晨大佬的博客,给了我很是大的帮助,这就是大佬的博客地址:https://www.cnblogs.com/stulzq/