自主搭建CI/CD,为vNext微服务开发保驾护航

简介

微服务开发中自动化、持续化工程十分重要,在成熟的CI/CD环境中项目团队可以灵活分配,大大提供团队效率。如果还不了解什么是CI/CD,可以先查看相关文章,这里主要介绍环境的搭建,相关原理就不过多搬书了。

开始之前

目前主流的ci/cd环境都是基于容器化管理的,所以想要搭建这一环境必须熟练docker操作。版本控制选择git,构建工具选择Jenkins,所以开始前需要先掌握这些技术。

安装docker

Ubuntu 18.04 docker安装

docker安装方式有多种,存储库安装方式如下:

更新存储库:

sudo apt-get update

卸载旧版本docker:

sudo apt-get remove docker docker-engine docker.io

安装docker:

sudo apt install docker.io

启动docker、开机自启:

sudo systemctl start docker
sudo systemctl enable docker

检查版本:

docker --version

版本控制

git管理管理工具公司应该都有搭建,如果没有也可以选择GitHub、gitLab等git工具。

Jenkins安装

存储库方式安装Jenkins

更新存储库、安装Java:

sudo apt updatesudo
apt install openjdk-8-jdk

导入Jenkins存储库的GPG密钥:

wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -

将Jenkins存储库添加到系统中:

sudo sh -c ‘echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list‘

更新存储库、安装Jenkins:

sudo apt updatesudo
apt install jenkins

检查Jenkins状态:

systemctl status jenkins

安装成功则输出如下:

● jenkins.service - LSB: Start Jenkins at boot time
Loaded: loaded (/etc/init.d/jenkins; generated)
Active: active (exited) since Wed 2018-08-22 13:03:08 PDT; 2min 16s ago
    Docs: man:systemd-sysv-generator(8)
    Tasks: 0 (limit: 2319)
CGroup: /system.slice/jenkins.service

记得开放8080端口

进入Jenkins:http://服务器IP:8080

获取初始密码:

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

登录成功:

选择左边推荐插件安装:

设置管理员密码:

配置完成:

以上步骤都成功的话就可以开始创建自动化工程了。

创建Jenkins任务

进入Jenkins主页,选择新建任务:

输入任务名,选择自由风格:

确定后进入任务配置,源码管理选择git,tfs也可以但是不建议

触发器根据需要选择,我是通过手动发布所以并未选择触发器

构建环境选择删除工作空间

最后是关键一步,也是最容易出错的一步,执行命令:

#!/bin/sh
cd /var/lib/jenkins/workspace/auth-server/applications/AuthServer.Host/publish
docker container prune << EOF
y
EOF
docker container ls -a | grep "auth-server"
if [ $? -eq 0 ];then
    docker container stop auth-server
    docker container rm auth-server
fi
docker image prune << EOF
y
EOF
docker build -t auth-server .
docker run -d -p 64999:80 --name=auth-server auth-server

完成后应用并保存。

shell命令分析:

熟悉Linux命令的话应该可以大致看懂上面的shell命令,命令执行步骤如下:

1. 进入工程的工作空间

2. 判断十分存在“auth-server”容器,存在则删除容器及镜像

3. 构建docker镜像

4. 启动docker容器

这里的构建步骤与标准CI/CD有差异,标准CI/CD是拉取代码后在服务器上构建(build)代码并打包docker镜像。上述过程是在本地构建并发布至publish目录中,然后提交publish文件,Jenkins拉取编译文件进行docker发布。

为什么要本地构建:

在本地构建代码并提交要比提交代码后服务器构建多出一步,这一步并不是多此一举,下面分析下本地构建的原因:

1. 环境:由于国内网络原因,服务器构建代码时会出现很多拉取nuget、npm包超时现象,而Jenkins发布会有时间限制,发布超时会默认失败。如果调整Jenkins发布超时时间则没有意义,发布时间超过一小时还不如手动打包docker呢。

2. 消耗资源: 构建代码十分消耗系统资源,在服务较多时一次代码提交需要同时发布数个有关联的服务,这时服务器很可能会死机导致开发环境大量服务超时,十分影响前后端开发人员工作进度。

3. 快速:在高频率的产品迭代中,微服务的发布也会十分频繁,采用本地构建Jenkins发布的方式会大大缩短发布时间,甚至一个服务的发布只需1分钟。

4. 排错:标准的CI/CD发布模式中,开发人员提交的代码很有可能有异常,这时服务就会发布失败,如果其他服务依赖于此服务则会导致其他服务出现接口异常现象,耦合较大的话会直接崩溃。发现异常后,开发人员需要重新拉取代码查看异常,而异常往往是由其他开发人员提交代码不完整导致。等到代码异常解决,重新发布可能一个小时就过去了。。。通过本地构建再发布就会完美避开这些周折。

Jenkins发布演示:

选择一个微服务:

选择立即构建:

左下会输入发布日志,上面输出代表发布成功。

总结

如果以上安装配置都成功的话,那么恭喜你,微服务开发必备的CI/CD环境已经搭建完成,没有成功的话也没关系,多次尝试一定会成功的,我也是几天的折腾才搭好的(服务器都重装了好几次)。后续会介绍更多在abp vNext微服务中进行实际业务开发,同时也会介绍vue的相关开发技巧,感兴趣的话可以持续关注。

原文地址:https://www.cnblogs.com/william-xu/p/11497108.html

时间: 2024-11-05 21:47:19

自主搭建CI/CD,为vNext微服务开发保驾护航的相关文章

spring boot 快速搭建 基于 Restful 风格的微服务

使用 spring boot 快速搭建 基于  Restful 风格的微服务, 无spring 配置文件,纯java 工程,可以快速发布,调试项目 1.创建一个maven 工程 2. 导入如下配置 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="htt

迪士尼源码搭建与如何玩转微服务

微服务,软件应用开发的新纪元2014年 Martin Fowler 在<MicroServices>论文中首次提出了微服务的概念.近些年,伴随着互联网的日益发展,微服务在国内.甚至国际上的发展已达到一个新高潮.迪士尼源码搭建QQ:2152876294 网址diguaym.com 在微服务流行之前,SOA(Service Oriented Architecture)被广泛熟知与采用.微服务基于 SOA 发展而来,但与之相比,微服务更易于理解,也更利于设计者.开发者的实践落地,它把"面向

Hi Developer,微服务开发攻略请查收

微服务开发攻略微服务正成为最热门的系统架构之一.作为一名开发者,是否已经了解微服务?微服务系统?微服务应用模式?如何提升微服务开发能力......本文带你一起学习微服务.1 什么是微服务微服务是架构层的一个概念,通过分解(业务单元),将项目拆解出n个单元,互相没有强依赖关系(解耦),自我准备需要的依赖条件,进而达到可以独立运行,不再受环境与地点上的限制.2 微服务的由来微服务最早由Martin Fowler与James Lewis于2014年共同提出,微服务架构风格是一种使用一套小服务来开发单个

python 微服务开发书中几个方便的python框架

python 微服务开发是一本讲python 如果进行微服务开发的实战类书籍,里面包含了几个很不错的python 模块,记录下,方便后期回顾学习 处理并发的模块 greenlet &&gevent twisted && tornado asyncio web api 模块 当然有好多可以使用的,只记录作者使用的 flask aiohttp 测试 负载测试boom pytest && tox webtest 文档管理 api openapi sphinx(集成

mPass 微服务开发平台

mPass (Microservice Pass) 基于SpringBoot2.x.SpringCloud并采用前后端分离的企业级微服务,多租户系统架构微服务开发平台 mPaaS(Microservice PaaS)为租户业务开发.测试.运营及运维开源框架,能有效降低技术门槛.减少研发成本.提升开发效率,协助企业快速搭建稳定高质量的微服务应用;同时还集合各种微服务治理功能和监控功能.模块包括:企业级的认证系统.开发平台.应用监控.慢sql监控.统一日志.单点登录.Redis分布式高速缓存.配置中

多租户系统微服务开发平台

目录 项目总体架构图 基础业务模块 项目开发更新进度 运维架构图 服务简述 基于SpringBoot2.x.SpringCloud并采用前后端分离的企业级微服务,多租户系统架构微服务开发平台 mPaaS(Microservice PaaS)为租户业务开发.测试.运营及运维开源框架,能有效降低技术门槛.减少研发成本.提升开发效率,协助企业快速搭建稳定高质量的微服务应用;同时还集合各种微服务治理功能和监控功能.模块包括:企业级的认证系统.开发平台.应用监控.慢sql监控.统一日志.单点登录.Redi

微服务开发中的数据架构设计

本文来自作者 陈伟荣 在 GitChat 分享的文章[微服务开发中的数据架构设计] 前言 微服务是当前非常流行的技术框架,通过服务的小型化.原子化以及分布式架构的弹性伸缩和高可用性,可以实现业务之间的松耦合.业务的灵活调整组合以及系统的高可用性.为业务创新和业务持续提供了一个良好的基础平台.本文分享在这种技术架构下的数据架构的设计思想以及设计要点,本文包括下面若干内容. 微服务技术框架中的多层数据架构设计 数据架构设计中的要点 要点1:数据易用性 要点2:主.副数据及数据解耦 要点3:分库分表

黑少微服务商店之Iron Cloud微服务开发云

近日,由黑少微服务研发团队推出的Iron Cloud微服务开发云已经正式对外提供服务,这是国内第一家基于云端操作的微服务专业开发工具. Iron Cloud 微服务开发云(www.ironz.com)是以微服务为核心,DevOps为理念,基于Spring Cloud.Spring Boot.React.React Native.容器技术.人工智能等,面向微服务应用的开发平台:Iron Cloud 拥抱 Spring Cloud 微服务框架,帮助企业客户解决传统集中式架构转型的困难,打造大规模高可

微服务开发实战(spring-cloud/spring-cloud-alibaba/dubbo),一个案例,手把手带你入门

平日里,都是看别人的文章,虽开公众号写了不少,但像样的不多.年末了,年终总结也没来得及写,为了输出点像样的东西,立刻就着手这个系列.一个键一个字母的敲,边敲边写,文章还在持续更新中,直至完整.相信通过这个系列的系统练习,能有一个大跨步的提升. 专栏简介(是什么?) 结合SpringCloud.SpringCloudAlibaba.Dubbo等开源套件,基于某商场停车业务需求,进行微服务开发实战,力争通过一个案例的实操,掌握微服务架构中常用的技能点,轻松入门. 为什么要写这个专栏(为什么?) 微服