.Net core 使用Jenkins + Docker + Azure Devops 傻瓜式部署
目前CI/CD挺火的,这里使用的Jenkins + Docker + Azure Devops 部署,或者可以用这套Jenkins + Docker + Github或GitLab部署,
进入正题: 第零点:当然要先安装.Net core 运行时,官网上就有下载。
首先 这里的jenkins并不是装在docker里面的jenkins,是直接安装到linux上的jenkins。其实安装在docker更加方便,因为这样系统不用安装JavaSdk,我参考的是晓晨的博客,原文链接:https://www.cnblogs.com/stulzq/p/9291237.html ,这里要强调的是:1、首先我们先要安装java环境,参考晓晨的博客,原文链接:https://www.cnblogs.com/stulzq/p/9286878.html 里面非常详细的介绍。
但是这里要注意的就是:
官网地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 在官网下载需要点击这个选项才能下载,下载框中的那个就可以了。
然后jenkins安装晓晨的博客已经说的非常明白了。
接下来就是 Azure Devops的说明,微软这个东西挺不错的,配合vs使用也挺好用的,但是还是比不上github,
如图:可以建立自己的分支上传(push)和拉取(pull),从某分支合并(merge),完成团队协作。基本上使用非常简单,通过vs就可以直接新建项目到 Azure Devops,也可以建立多个分支,达到团队协作的目的,这里就不详细说明啦。
接下来就是docker 的安装了,这里也是参考晓晨博客,原文地址:http://www.cnblogs.com/stulzq/p/7743073.html,这里要说明的就是我们需要安装docker-compose ,这样就可以运行dockerfile文件脚本,达到自动部署的目的。
好吧,基本上安装完之后,我们就可以开始了:
首先我们需要在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 ];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 : --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
# 设置环境变量
ENV ASPNETCORE_ENVIRONMENT=$env
# 启动web
RUN echo "执行环境: $env"
CMD ["dotnet","TR.dll"]
dockerfile指令详解说明:https://yeasy.gitbooks.io/docker_practice/content/image/dockerfile/,里面都有说明就不多说了,要注意的就是,大致的流程就是首先我们上传代码到Azure Devops上,然后jenkins根据凭证去Azure Devops拉取代码到服务器上,执行命令脚本构建,然后就交给脚本执行,找到dockfile执行,重构镜像再生成容器。网站就部署到docker里面了。
大致的就是这样,感谢晓晨的博客,给了我非常大的帮助,这就是晓晨的博客地址:https://www.cnblogs.com/stulzq/
.Net core 使用Jenkins + Docker + Azure Devops 傻瓜式部署的更多相关文章
- Azure Terraform(五)利用Azure DevOps 实现自动化部署基础资源
一,引言 上一篇我们结合学习 Azure Traffic Manger 的内容,做了一个负载均衡的基础设施架构.通过 Terraform 部署执行计划,将整个 Azure Traffic Manage ...
- Azure Terraform(七)利用Azure DevOps 实现自动化部署基础资源(补充)
一,引言 之前一篇文章有讲解到利用 利用Azure DevOps 实现自动化部署基础资源,当时 TF 代码没有针对 Azure 各个资源的封装,所有的资源代码全部写在一个 main.tf 文件中.然后 ...
- 5分钟搭建wordpress个人博客网站——宝塔傻瓜式部署,无坑系列,附赠主题和md插件[2021-12-31]
一.前言 自从买了服务器,小编已经马不停蹄的学了两天服务搭建的知识,问了很多大佬,快速搭建自己的博客网站.有四种方式,我在这里全部分享给大家.自己已经搭建好,欢迎大家过来看一下,给你提供个思路哈! 小 ...
- ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 27. CICD Azure DevOps
VSTS做持续集成 后来改名叫做Azure Deveps https://azure.microsoft.com/zh-cn/services/devops/ 这是中文的地址 创建一个项目 名称.描述 ...
- .net core +gogs + jenkins +docker自动化发布、部署
1.首先,安装docker,不多bb 2.我们采用docker的方式安装jenkins,同时将宿主机的docker挂载到docker安装的jenkins里面,可能有点拗口.说白了就是 就是要让jenk ...
- CentOS 傻瓜式部署uWSGI + nginx + flask
交代背景 这篇帖子是为了提供我自己的July Novel站点的小说数据支撑.解决分布式部署爬虫程序的繁琐过程,由于本人对shell编程并不熟悉,故而先逐步记录操作步骤,通过以下操作达到节省时间的方式. ...
- kubernetes+Azure DevOps实现.Net Core项目的自动化部署&均衡负载
1. 前言 2. Net Core项目本身的准备 2.1 dockerfile 2.2 创建kubernetes用于helm的chart包 2.2.1 说明 2.2.2 chart文件目录和文件组成 ...
- docker 执行 docker system prune 导致Azure Devops build镜像失败
运行docker的centos上, 只分配了16G的空间, 装了个mysql, 还有个rancher, 就只剩下2G的空间了, Azure Devops build镜像就出错了, 显示存储空间不足, ...
- Azure Terraform(八)利用Azure DevOps 实现Infra资源和.NET CORE Web 应用程序的持续集成、持续部署
一,引言 上一篇讲解到利用 Azure DevOps 将整个 Azure Web App,Azure Traffic Manager profile,Azure Storage Account,Azu ...
随机推荐
- jQuery阻止向上冒泡事件
//阻止起泡取消下面的注释 e.stopPropagation(); //或者使用这种方式 //return false; }); $('.three').click(function(e){ ale ...
- MySQL数据库备份与还原
备份数据库 1.使用mysqldump命令备份 备份一个数据库:mysqldump -u 用户名 -p密码 数据库名 [表名1,表名2...]>备份文件路径及名字.sql 如 ...
- Java任务调度框架Quartz入门
Quartz[kwɔːts]:石英,其框架和名字一样简单朴素又不失魅力,在Java程序界,Quartz大名鼎鼎,很多Java应用几乎都集成或构建了一个定时任务调度系统,Quartz是一个定时任务调度框 ...
- less @import and extend及mixin详解
在less中,通过 @import (keyword) "filename"的方式引入其他的文件,这个keyword可以是以下6种: referrence referrence这个 ...
- angularJS web应用SEO
javascript给网站带来丰富的用户体验,越来越多的网站开始应用angularjs/emberjs这类MVC来开发web应用,可以说能够使用native方式来看法的手机app基本都可以使用替代的j ...
- Process.start: how to get the output?
1: Synchronous example static void runCommand() { Process process = new Process(); process.StartInfo ...
- Python学习---重点模块之json
注意:JSON不能转换类,不能转换函数 重点方法示例 json.dumps():实现文件写入,字符串转换[写入文件当然是JSON字符串楼] 实际上,json.dumps()只是帮我们做了一个字符串的转 ...
- calculate fraction by oracle
QUESTION:When you meet calculate fraction in oracle SOLUTION: 1.Check out their values respectively. ...
- vue + element-ui 制作下拉菜单(可配置路由、可根据路由高亮list、可刷新自动展开定位路由)
本篇文章分享一篇关于 vue制作可路由切换组件.可刷新根据路由定位导航(自动展开).可根据路由高亮对应导航选项 一.实现的功能如下: 1.可折叠导航面板 2.点击导航路由不同组件 ...
- Windows 10 X64 ISO 专业版&家庭版下载与永久激活
好久没有更新博客,算算时间,已经有4年了,好吧,今天突发奇想,想把今天安装Windows 10的过程给记录下来. 2015年的时候,微软就发布了Windows 10,当时正版的Win7.Win8都可以 ...