.NET 微服务——CI/CD(1):Jenkins+Gitee自动构建

  • A+
所属分类:.NET技术
摘要

持续集成/持续部署,这概念有段时间了,网上有很多八股文,我就不写了。我只说它可以替你做到什么程度:当你需要更新一个版本,只需通过git把代码提交到指定的仓库,然后就可以自动打包、构建镜像、发布、运行。在这几个步骤前后,你还可以通过shell脚本或者其他类似的方法来更好的控制每一个环节。从我角度来看,只是简单应用的话,它其实并不复杂。.net同学们,希望你们考虑在项目中用到它,至少它可以解放手动部署那部分时间。


CI/CD

持续集成/持续部署,这概念有段时间了,网上有很多八股文,我就不写了。我只说它可以替你做到什么程度:当你需要更新一个版本,只需通过git把代码提交到指定的仓库,然后就可以自动打包、构建镜像、发布、运行。在这几个步骤前后,你还可以通过shell脚本或者其他类似的方法来更好的控制每一个环节。从我角度来看,只是简单应用的话,它其实并不复杂。.net同学们,希望你们考虑在项目中用到它,至少它可以解放手动部署那部分时间。

准备工作

1、准备一个.NET6项目(Core也行):

.NET 微服务——CI/CD(1):Jenkins+Gitee自动构建

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

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

.NET 微服务——CI/CD(1):Jenkins+Gitee自动构建

接下来访问(如果是云服务器要放通端口访问),短暂等待后会进入这个页面:

.NET 微服务——CI/CD(1):Jenkins+Gitee自动构建

Jenkins首次启动会初始化系统,并且生成一个管理员账户,但是密码是输出到日志里的。你可以转到这个目录查看,或者看容器日志:

docker logs [容器id/name]

密码在两行星号中间:

.NET 微服务——CI/CD(1):Jenkins+Gitee自动构建

粘贴到刚才的页面点确认,跳入插件下载页,这里有两个选项:推荐安装、自定义安装,任选一个:

.NET 微服务——CI/CD(1):Jenkins+Gitee自动构建

再然后进入账户设置页面,可以跳过但不推荐,我建议设置新的:

.NET 微服务——CI/CD(1):Jenkins+Gitee自动构建

最后,设置地址:

.NET 微服务——CI/CD(1):Jenkins+Gitee自动构建

配置Gitee

因为Jenkins默认不支持Gitee,所以要下载对应插件,按图找到插件管理,搜索Gitee并下载:

.NET 微服务——CI/CD(1):Jenkins+Gitee自动构建

下载成功以后,进入系统设置,会出现Gitee相关配置项,填充即可:

.NET 微服务——CI/CD(1):Jenkins+Gitee自动构建

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

.NET 微服务——CI/CD(1):Jenkins+Gitee自动构建

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

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

.NET 微服务——CI/CD(1):Jenkins+Gitee自动构建

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

新建工作流

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

然后,在当前工作流的“源码管理”这一页,选择Git,输入你仓库的地址:

.NET 微服务——CI/CD(1):Jenkins+Gitee自动构建

这里会报错很正常,因为没有配置账户密码。点击新增,选择“账户密码”种类,保存退出后选中它。正常情况下就像这样,不会出红色字体:

.NET 微服务——CI/CD(1):Jenkins+Gitee自动构建

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

.NET 微服务——CI/CD(1):Jenkins+Gitee自动构建

往下找到“构建触发器”,选择箭头所指项(webhook url先拷贝一下):

.NET 微服务——CI/CD(1):Jenkins+Gitee自动构建

选中后会多出很多选项,暂时不用理会,只需要找到下面这一项,并生成一个:

.NET 微服务——CI/CD(1):Jenkins+Gitee自动构建

这时候登录你的Gitee,找到准备好的仓库,找到管理→webhooks→新建,选择push和激活,填入复制好的webhook url和webhook token,确认添加:

.NET 微服务——CI/CD(1):Jenkins+Gitee自动构建

正常情况下,测试请求是200:

.NET 微服务——CI/CD(1):Jenkins+Gitee自动构建

回到Jenkins后台,测试触发器是否可以正常工作。构建前工作区是空的,点击“Build Now”手动触发构建:

.NET 微服务——CI/CD(1):Jenkins+Gitee自动构建

再看工作区,已经把仓库代码拖下来了。并且在“构建历史”可以看到刚才的记录:

.NET 微服务——CI/CD(1):Jenkins+Gitee自动构建

打开VS2022,提交代码到Gitee(你也可以用命令行):

.NET 微服务——CI/CD(1):Jenkins+Gitee自动构建

回到Jenkins后台,构建历史中多了一条记录:

.NET 微服务——CI/CD(1):Jenkins+Gitee自动构建

进去查看控制台输出:

.NET 微服务——CI/CD(1):Jenkins+Gitee自动构建

是刚才提交的修改没错了。自动构建Get~

下一步是根据代码中的Dockerfile自动打包镜像,我会继续发文的。