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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏difcareer的技术笔记

一种更优的方式获取私有API

在编译私有的Android SDK中讲述了如何通过编译一个完整的SDK来获取一些稀有的API,但是这个方法有几点不足:

1073
来自专栏云计算教程系列

如何在Ubuntu 14.04上备份OrientDB数据库

OrientDB是一个多模型NoSQL数据库,支持图形和文档数据库。它是一个Java应用程序,可以在任何操作系统上运行; 它也完全是ACID投诉,支持多主复制。

790
来自专栏前端开发

Jenkins配合github实现前端项目自动化构建部署

大家以前写前端项目部署,可能都是手动运行命令,打包完,然后压缩,再利用FTP、Xshell等这类的工具上传到服务器解压。也或者你不会操作,你认为这些事情是运维做...

2503
来自专栏个人分享

kafka_2.11-0.8.2.2的搭建

host.name=10.10.224.12  (修改为主机ip,不然服务器返回给客户端的是主机的hostname,客户端并不一定能够识别)

2851
来自专栏我的博客

Windowsserver2003下搭建IIS+PHP+MySQL+PHPmyadmin

安装IIS在这里不在赘述,重点配置iis解析php和phpmyadmin的配置 去这里http://www.php.net/下载php,我下载的是php-5.2...

3656
来自专栏你不就像风一样

[原创]一款适用于Java应用的性能监控系统(WY)

WY(Java应用监控系统)是一款基于JDK8制作,适用于Java应用,具有堆内存监控、方法区监控、GC监控、类加载监控、类编译监控与线程监控功能的在线监控系统...

2694
来自专栏北京马哥教育

开机启动流程

grub and boot Centos5,6的开机启动流程 grub Centos7的开机启动流程 Centos5,6的开机启动流程 ? ? initrd /...

3967
来自专栏ytkah

laravel用crud修改产品items-新建resource controller和routing

  前面我们创建了laravel简单的items产品api,但是需要在数据库添加,如何在网页上直接添加呢?我们可以用view来操作crud(增加Create、读...

1043
来自专栏企鹅号快讯

使用Jenkins自动部署博客

这篇文章比较简单,适合初学的读者,本文可以帮助你对基于Jenkins的持续集成有一个比较全局的概念。 提出问题 为了使用HTTPS,我将博客从GitHub Pa...

3585
来自专栏FreeBuf

一款针对WordPress网站的渗透测试框架

今天给大家介绍的是一款名叫Wordpress Exploit Framework的Ruby框架,研究人员可利用该框架来研发或使用其自带某开来对由WordPres...

1220

扫码关注云+社区

领取腾讯云代金券