Devops step by step
接着上次分享的devops历程[Followme Devops实践之路], 大家希望能够出一个step by step手册, 那今天我就来和手把手来一起搭建这么一套环境, 演示整个过程!
实验环境需要准备docker /docker compose
建议大家使用国外的vps学习, 不需要考虑网络/gwf的问题/方便
(本demo搭建在linode上面, 注册可以免费使用2个月)https://www.linode.com/?r=548a820eda1d06ec584ea4b0c72ce02db6f5910c
先clone下代码
Git clone https://github.com/FollowmeTech/jenkins-cicd.git
相关的文件和解释如下:
架构图如下
我们需要依赖 docker register 和 portainer
为此,我们写了一个简单的
register-portainer-docker-compose.yaml文件, 方便快熟演示一件启动
(生产环境中请使用harbor替代docker-register)
docker-compose -f register-portainer-docker-compose.yaml -d 启动
成功启动之后, 我们需要设置portainer的用户名密码
需要登陆下http://ip:9000设置portainer的用户名密码(12345678)
到此, docker register 和portainer就以及搭建完成了!!!
接下来准备启动Jenkins docker镜像
我们需要先修改配置文件docker-compose.ci.env,把相关的信息注入到jenkins-ci中
编辑dev环境下的portainer, docker register相关信息
(Ps: 由于是演示demo, 所以,我们就只配置了dev的相关配置
在真实场景中, 配置好, beta /prod 就可以支持发布到beta和prod相关的环境了)
Docker-compose up -d 启动Jenkins
待Jenkins安装完成之后
登陆http://ip:8080设置Jenkins用户名密码
这个时候不要选择安装任何plugins
我们通过工具来导入plugins, tools文件下面有一个butler用来导入plugins
先设置tools下面的运行权限, 然后执行命令
等待导入完成相关的Jenkins需要使用的插件
Jenkins相关的配置就全部完成了之后
登陆到Jenkins.
---------配置git auth--------
(由于我这里用的是github上的一个demo,所以可以不用配置, 具体大家搜索下配置私有仓库的方式)
---------创建项目------------
选择[]this project is parameterized !
我们需要配合使用git-flow ,和之前配置的docker-compose-ci.env
发布系统可以简化为
”完成了一个功能, 发布到指定的环境”
那么这里就有2个变量
1. 完成的功能, 我们使用分支来解决, 某个分支来承载某个功能
2. 发布到指定的环境, 我们采用环境变量来解决
所以这里要使用两个Jenkins插件, 分别来解决上面的问题
编写execute-shell;
Execute-shell 分成四个部分
1. Build source code
a. 例如donet publish ,npm buid:env… 得到二进制包
2. Build docker image
a. 依赖CHANGELOG ,来生成docker image的版本号
docker build -t $local_docker_image_name .
3. Push docker image to register
a. docker tag $local_docker_image_name $full_docker_image_name
b. docker push $full_docker_image_name
4. Deploy docker by portainer-api
a. python /root/pubtool/main.py
--deploy_env=$env //把相关的部署环境传递进去
--docker_env="ASPNETCORE_ENVIRONMENT=Development" //docker env传递
--node=1 //要部署在portainer的那个节点上!
--container_name="$dockerImgName" //container_name
--docker_image="$local_docker_image_name" //要部署的dockerimage
--net="bridge" //网络模式
--port="6666:80" //网络映射
一切配置完成, 就可以进行build-deploy了
项目发布完成!!!
:
本环境demo:
为了方便大家快熟感受, 我搭建了一个play环境
大家可以向 https://github.com/FollowmeTech/jenkins-cicd-practise 提交代码
再登陆 https://ci.rileme.club ,选择相应的分支进行build发布 (play/123456)
项目发布完成, 快熟预览效果 http://demo.rileme.club
如有感兴趣的同志
也可以加入微信群进行讨论
Ps:招聘中
有兴趣的小伙伴read more(https://github.com/FollowmeTech/hire/blob/master/dotnet.md)
Devops step by step的更多相关文章
- Step by step Dynamics CRM 2011升级到Dynamics CRM 2013
原创地址:http://www.cnblogs.com/jfzhu/p/4018153.html 转载请注明出处 (一)检查Customizations 从2011升级到2013有一些legacy f ...
- Step by Step 创建一个新的Dynamics CRM Organization
原创地址:http://www.cnblogs.com/jfzhu/p/4012833.html 转载请注明出处 前面演示过如何安装Dynamics CRM 2013,参见<Step by st ...
- Step by step Install a Local Report Server and Remote Report Server Database
原创地址:http://www.cnblogs.com/jfzhu/p/4012097.html 转载请注明出处 前面的文章<Step by step SQL Server 2012的安装 &g ...
- Step by step Dynamics CRM 2013安装
原创地址:http://www.cnblogs.com/jfzhu/p/4008391.html 转载请注明出处 SQL Server可以与CRM装在同一台计算机上,也可安装在不同的计算机上.演示 ...
- Step by step 活动目录中添加一个子域
原创地址:http://www.cnblogs.com/jfzhu/p/4006545.html 转载请注明出处 前面介绍过如何创建一个域,下面再介绍一下如何在该父域中添加一个子域. 活动目录中的森林 ...
- SQL Server 维护计划实现数据库备份(Step by Step)(转)
SQL Server 维护计划实现数据库备份(Step by Step) 一.前言 SQL Server 备份和还原全攻略,里面包括了通过SSMS操作还原各种备份文件的图形指导,SQL Server ...
- 转:eclipse以及step into step over step return的区别
首先来讲一下step into step over step return的区别: step into就是单步执行,遇到子函数就进入并且继续单步执行:(F5) step over是在单步执行时,在函数 ...
- [转]Bootstrap 3.0.0 with ASP.NET Web Forms – Step by Step – Without NuGet Package
本文转自:http://www.mytecbits.com/microsoft/dot-net/bootstrap-3-0-0-with-asp-net-web-forms In my earlier ...
- EF框架step by step(7)—Code First DataAnnotations(2)
上一篇EF框架step by step(7)—Code First DataAnnotations(1)描述了实体内部的采用数据特性描述与表的关系.这一篇将用DataAnnotations描述一下实体 ...
随机推荐
- 一个bug分析 ----------换个角度,有另外一个天地
有个接口是按修改时间(updated_time)排序的 优化后,有人反馈接口的返回值有问题 查了一下,反馈的数据是推荐过的(推荐操作是会更新updated_time的). 然后就认为是有人进行了推荐操 ...
- setInterval setTimeout 详解
JavaScript的setTimeout与setInterval是两个很容易欺骗别人感情的方法,因为我们开始常常以为调用了就会按既定的方式执行, 我想不少人都深有同感, 例如 setTimeout( ...
- 你不知道的JavaScript--Item10 闭包(closure)
JavaScript 闭包究竟是什么? 用JavaScript一年多了,闭包总是让人二丈和尚摸不着头脑.陆陆续续接触了一些闭包的知识,也犯过几次因为不理解闭包导致的错误,一年多了资料也看了一些,但还是 ...
- 关于extern的用法
extern表示该变量或者函数时在另一个地方定义了. 在C++编程中,如果将程序分为多个文件,则需要有在文件间共享代码的方法,这时如果一个变量或者函数需要在多个文件中使用,则可以使用extern来声明 ...
- BZOJ_1009_[HNOI2008]GT考试_KMP+矩阵乘法
BZOJ_1009_[HNOI2008]GT考试_KMP+矩阵乘法 Description 阿申准备报名参加GT考试,准考证号为N位数X1X2....Xn(0<=Xi<=9),他不希望准考 ...
- BZOJ_1003_[ZJOI2006]物流运输_最短路+dp
BZOJ_1003_[ZJOI2006]物流运输_最短路+dp 题意:http://www.lydsy.com/JudgeOnline/problem.php?id=1003 分析: 这种一段一段的显 ...
- 使用FileUpload实现Servlet的文件上传
简介 FileUpload 是 Apache commons下面的一个子项目,用来实现Java环境下的文件上传功能. FileUpload链接 FileUpload 是基于Apache的Commons ...
- monkey-----停止正在测试的monkey
第一步:adb shell ps | grep monkey:查找到正在测试的monkey包名 第二步:kill pid:删除查找出的monkey进程 以上完美的停止monkey测试
- 不使用SpringBoot如何将原生Feign集成到Spring中来简化http调用
在微服务架构中,如果使用得是SpringCloud,那么只需要集成SpringFeign就可以了,SpringFeign可以很友好的帮我们进行服务请求,对象解析等工作. 然而SpingCloud是依赖 ...
- Docker最全教程——Redis容器化以及排行榜实战(十三)
前言 容器教程的路还很长,笔者尽量根据实践来不断地完善.由于在编写的过程中还会有完善和补充,后续可能会以番外来补充. 接下来会分享TeamCity.树莓派等内容,节奏可能会有点跳脱. 另外,长沙.NE ...