CI/CD

它的意思是 持续集成/持续部署,这也不是新概念。那些八股文就不写了,说话的方式简单点:如果成功搭建CI/CD环境,当你需要迭代线上程序时,只需通过git提交代码就可以,其他什么都不用做。是不是很爽?这样你就拥有了快速迭代的能力,微服务大环境下,这也是必要的。

准备工作

1、准备一个.NET6项目:

2、准备一个gitee仓库

3、准备一台服务器(非必要)

安装Jenkins

首先在docker中运行这段代码(代码来自官网):

docker run \
-u root \
--rm \
-d \
-p 8080:8080 \
-p 50000:50000 \
-v jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkinsci/blueocean

没有提前下载镜像也没关系,因为它会自动下载。如下:

容器跑起来了,访问8080:

jenkins首次启动会进入安装向导,并且自动生成一个管理员账户,但是密码是输出到日志里的。因为我是通过docker启动的,所以要查看容器日志,语句:

docker logs [容器id/name]

密码在两行星号中间:

粘贴到刚才的页面点确认,进入下个页面:

页面给出了插件安装的两个选项:推荐安装、自定义安装,随意选一个即可。

安装结束后,进入账户设置页面:

可以跳过并继续使用admin账户,也可以自定义一个,建议自定义一个好记的。

最后设置一下地址就可以结束安装向导了:

添加并配置Gitee

Jenkins默认不支持gitee,需要下载一个gitee插件才可以,找到插件管理搜索gitee并下载即可:

然后进入系统设置,配置gitee:

需要注意这里的证书。点击添加,选择“Gitee API token”:

这里的APIV5 token,登录gitee账户,设置→私人令牌,生成一个新的就好。

添加好以后,选择证书并点击测试:

看到成功字样,保存退出。

新建工作流

接下来,新建一个“Freestyle”任务。

在“源码管理”这一页,选择Git,输入你仓库的地址:

这里会报错很正常,因为没有配置账户密码。点击新增一个证书,种类选账户密码,然后选择它。正常情况下就像这样:

然后在下面设置分支,这一项决定jenkins拉取哪个分支的代码(如果不写就是任意分支):

然后就是构建触发器,选推送代码到gitee时触发(这个url先拷贝出来):

打勾以后,会多出很多选项,其他的都不用管,只需要在这里生成一个token就可以:

然后回到gitee仓库,找到管理→webhooks→新建,填入准备好的地址和token:

添加成功后看下测试请求的结果,正常情况下是200:

接下来测试触发器是否可以正常工作。构建前工作区是空的:

手动构建后:

现在提交修改代码到gitee,看能否自动构建。我就直接用vs自带工具提交了:

然后转到jenkins后台,可以看到多出一个构建记录:

戳进去看控制台输出:

的确是我刚才提交的修改,自动构建成功。

下一步是拉到代码的同时,根据代码中的Dockerfile自动打包成镜像并且运行,下一篇继续。

.NET6 微服务——CI/CD(1):搭建Jenkins并实现自动构建的更多相关文章

  1. .NET 微服务——CI/CD(3):镜像自动分发

    如何通过Jenkins完成镜像分发?基本做法是:打包镜像→上传镜像到仓库→脚本分发.镜像仓库也有很多,比如docker hub.Harbor等,今天这一篇讲一下基于阿里云镜像仓库的操作. 首先,准备一 ...

  2. 分布式架构和微服务CI/CD的范本技术解读

    随笔分类 - 分布式架构--http://www.cnblogs.com/hujihon/category/858846.html (ZooKeeper.activemq.redis.kafka)的分 ...

  3. 唱吧DevOps的落地,微服务CI/CD的范本技术解读----最大的难点并不是实际业务代码的编写,而是服务的监控和调试以及容器的编排

    1.业务架构:从单体式到微服务 K歌亭是唱吧的一条新业务线,旨在提供线下便捷的快餐式K歌方式,用户可以在一个电话亭大小的空间里完成K歌体验.K歌亭在客户端有VOD.微信和Web共三个交互入口,业务复杂 ...

  4. 唱吧DevOps的落地,微服务CI/CD的范本技术解读

    1.业务架构:从单体式到微服务 K歌亭是唱吧的一条新业务线,旨在提供线下便捷的快餐式K歌方式,用户可以在一个电话亭大小的空间里完成K歌体验.K歌亭在客户端有VOD.微信和Web共三个交互入口,业务复杂 ...

  5. .NET 微服务——CI/CD(2):自动打包镜像

    准备工作 一.开启docker的tcp 我的服务器是linux,以端口2376为例,找到docker.service,在ExecStart下新增这段代码即可: -H tcp://0.0.0.0:237 ...

  6. .NET 微服务——CI/CD(4):避坑和一点经验

    如果你看过之前几篇文章,应该已经Jenkins成功搭建了CICD环境,但是进入正式环境会有一些坑,不注意中招的话很难受,这里总结一下,避免重复消耗精力. 后门漏洞 Jenkins有后门,这是个老问题了 ...

  7. 手把手0基础项目实战(一)——教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)...

    原文:手把手0基础项目实战(一)--教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)... 本文你将学到什么? 本文将以原理+实战的方式,首先对& ...

  8. 小D课堂 - 新版本微服务springcloud+Docker教程_6-06 zuul微服务网关集群搭建

    笔记 6.Zuul微服务网关集群搭建     简介:微服务网关Zull集群搭建 1.nginx+lvs+keepalive      https://www.cnblogs.com/liuyisai/ ...

  9. 庐山真面目之十二微服务架构基于Docker搭建Consul集群、Ocelot网关集群和IdentityServer版本实现

    庐山真面目之十二微服务架构基于Docker搭建Consul集群.Ocelot网关集群和IdentityServer版本实现 一.简介      在第七篇文章<庐山真面目之七微服务架构Consul ...

随机推荐

  1. linux 挂载本地iso

    mount -t iso9660 -o loop /mnt/temp/rhel-server-6.5-i386-dvd.iso /mnt/cdrom -t :设备类型 iso9660是指CD-ROM光 ...

  2. jquery的each和js原生for循环性能对比

    <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> &l ...

  3. implicit declaration of function 'NSFileTypeForHFSTypeCode' is invalid in c99

    问题:implicit declaration of function 'NSFileTypeForHFSTypeCode' is invalid in c99 解决办法: 在出现该问题的函数前后加上 ...

  4. my37_MGR流控对数据库性能的影响以及MGR与主从的性能对比

    mysql> show variables like 'group_replication_flow_control_applier_threshold'; +----------------- ...

  5. Linux:expr、let、for、while、until、shift、if、case、break、continue、函数、select

    1.expr计算整数变量值 格式 :expr arg 例子:计算(2+3)×4的值 1.分步计算,即先计算2+3,再对其和乘4 s=`expr 2 + 3` expr $s \* 4 2.一步完成计算 ...

  6. 【Services】【Web】【apr】安装apr

    1. 基础: 1.1 描述:apr全称Apache Portable Runtime,常用于与ssl相关的环境支持,比如openssl,httpd,nginx,tomcat 1.2 链接: 官方网站: ...

  7. vscode高效管理不同项目文件

    vscode作为一个轻量级编辑器,深受大家喜爱,这其中当然也囊括了本人.我同时使用vscode写c++.java.python以及markdown文档,每次打开vscode都要切换到对应的文件夹,非常 ...

  8. Linux Ubuntu18.04 安装配置 clash

    我最近一段时间在搭建用于构建 Docker 镜像的开发测试环境,这个环境是一台运行于 Windows 笔记本上的虚拟机,其操作系统为 Ubuntu 18.04 .构建场景中经常要去 Github 获取 ...

  9. 模糊C均值算法

    Fuzzy C-Means读书笔记 一.算法简介 很显然,图中的数据集可分为两个簇.借鉴K-Means算法的思想,利用单个特殊的点(质心)表示一个簇.因此,我们用\(C_1\)和\(C_2\)分别表示 ...

  10. CF1514A Perfectly Imperfect Array 题解

    Content 给定一个长度为 \(n\) 的序列,问是否存在一个非空子序列,使得这个子序列所有元素的积不是完全平方数. 数据范围:\(t\) 组数据,\(1\leqslant t\leqslant ...