.NET 微服务——CI/CD(1):Jenkins+Gitee自动构建
<h1><span style="font-family: "Microsoft YaHei"">CI/CD</span></h1><p><span style="font-family: "Microsoft YaHei"">持续集成/持续部署,这概念有段时间了,网上有很多八股文,我就不写了。我只说它可以替你做到什么程度:当你需要更新一个版本,只需通过git把代码提交到指定的仓库,然后就可以自动打包、构建镜像、发布、运行。在这几个步骤前后,你还可以通过shell脚本或者其他类似的方法来更好的控制每一个环节。从我角度来看,只是简单应用的话,它其实并不复杂。.net同学们,希望你们考虑在项目中用到它,至少它可以解放手动部署那部分时间。</span></p>
<h1><span style="font-family: "Microsoft YaHei"">准备工作</span></h1>
<p><span style="font-family: "Microsoft YaHei"">1、准备一个.NET6项目(Core也行):</span></p>
<p><span style="font-family: "Microsoft YaHei""><img src="https://img2020.cnblogs.com/blog/775522/202201/775522-20220104100548628-464626305.png"></span></p>
<p><span style="font-family: "Microsoft YaHei"">2、准备一个gitee仓库</span></p>
<p><span style="font-family: "Microsoft YaHei"">3、准备一台服务器(非必要,但建议)</span></p>
<h1><span style="font-family: "Microsoft YaHei"">安装Jenkins</span></h1>
<p><span style="font-family: "Microsoft YaHei"">首先在docker中运行这段代码(代码来自官网,端口可以自由定义):</span></p>
<div class="cnblogs_code">
<pre><span style="font-family: "Microsoft YaHei""><span style="color: rgba(0, 0, 0, 1)">docker run \
</span>-<span style="color: rgba(0, 0, 0, 1)">u root \
</span>--<span style="color: rgba(0, 0, 0, 1)">rm \ <span style="color: rgba(255, 0, 0, 1)">这项意思是:只要停止运行就删掉这个容器,如果你不需要可以删除
</span></span>-<span style="color: rgba(0, 0, 0, 1)">d \
</span>-p <span style="color: rgba(128, 0, 128, 1)">8080</span>:<span style="color: rgba(128, 0, 128, 1)">8080</span><span style="color: rgba(0, 0, 0, 1)"> \
</span>-p <span style="color: rgba(128, 0, 128, 1)">50000</span>:<span style="color: rgba(128, 0, 128, 1)">50000</span><span style="color: rgba(0, 0, 0, 1)"> \
</span>-v jenkins-data:/<span style="color: rgba(0, 0, 255, 1)">var</span>/<span style="color: rgba(0, 0, 0, 1)">jenkins_home \
</span>-v /<span style="color: rgba(0, 0, 255, 1)">var</span>/run/docker.sock:/<span style="color: rgba(0, 0, 255, 1)">var</span>/run/<span style="color: rgba(0, 0, 0, 1)">docker.sock \
jenkinsci</span>/blueocean</span></pre>
</div>
<p><span style="font-family: "Microsoft YaHei"">没有提前下载镜像也没关系,因为它会自动下载。如下:</span></p>
<p><span style="font-family: "Microsoft YaHei""><img src="https://img2020.cnblogs.com/blog/775522/202201/775522-20220102235853584-980653453.png"></span></p>
<p><span style="font-family: "Microsoft YaHei"">接下来访问(如果是云服务器要放通端口访问),短暂等待后会进入这个页面:</span></p>
<p><span style="font-family: "Microsoft YaHei""><img src="https://img2020.cnblogs.com/blog/775522/202201/775522-20220103000207365-1002350232.png"></span></p>
<p><span style="font-family: "Microsoft YaHei"">Jenkins首次启动会初始化系统,并且生成一个管理员账户,但是密码是输出到日志里的。你可以转到这个目录查看,或者看容器日志:</span></p>
<div class="cnblogs_code">
<pre><span style="font-family: "Microsoft YaHei"">docker logs [容器id/name]</span></pre>
</div>
<p><span style="font-family: "Microsoft YaHei"">密码在两行星号中间:</span></p>
<p><span style="font-family: "Microsoft YaHei""><img src="https://img2020.cnblogs.com/blog/775522/202201/775522-20220103000610709-1586788232.png"></span></p>
<p><span style="font-family: "Microsoft YaHei"">粘贴到刚才的页面点确认,跳入插件下载页,这里有两个选项:推荐安装、自定义安装,任选一个:</span></p>
<p><span style="font-family: "Microsoft YaHei""><img src="https://img2020.cnblogs.com/blog/775522/202201/775522-20220103000803222-533254584.png"></span></p>
<p><span style="font-family: "Microsoft YaHei"">再然后进入账户设置页面,可以跳过但不推荐,我建议设置新的:</span></p>
<p><span style="font-family: "Microsoft YaHei""><img src="https://img2020.cnblogs.com/blog/775522/202201/775522-20220103001127423-668840995.png"></span></p>
<p><span style="font-family: "Microsoft YaHei"">最后,设置地址:</span></p>
<p><span style="font-family: "Microsoft YaHei""><img src="https://img2020.cnblogs.com/blog/775522/202201/775522-20220103001425097-807559725.png"></span></p>
<h1><span style="font-family: "Microsoft YaHei"">配置Gitee</span></h1>
<p><span style="font-family: "Microsoft YaHei"">因为Jenkins默认不支持Gitee,所以要下载对应插件,按图找到插件管理,搜索Gitee并下载:</span></p>
<p><span style="font-family: "Microsoft YaHei""><img src="https://img2020.cnblogs.com/blog/775522/202201/775522-20220103005609346-396810895.png"></span></p>
<p><span style="font-family: "Microsoft YaHei"">下载成功以后,进入系统设置,会出现Gitee相关配置项,填充即可:</span></p>
<p><span style="font-family: "Microsoft YaHei""><img src="https://img2020.cnblogs.com/blog/775522/202201/775522-20220103005413763-1239552091.png"></span></p>
<p><span style="font-family: "Microsoft YaHei"">需要注意这里的证书。点击添加,选择“Gitee API token”:</span></p>
<p><span style="font-family: "Microsoft YaHei""><img src="https://img2020.cnblogs.com/blog/775522/202201/775522-20220103004252313-843688963.png"></span></p>
<p><span style="font-family: "Microsoft YaHei"">这里的APIV5 token,登录gitee账户,设置→私人令牌,生成一个新的就好。</span></p>
<p><span style="font-family: "Microsoft YaHei"">添加好以后,选择证书并点击测试:</span></p>
<p><span style="font-family: "Microsoft YaHei""><img src="https://img2020.cnblogs.com/blog/775522/202201/775522-20220103005948303-1848793057.png"></span></p>
<p><span style="font-family: "Microsoft YaHei"">看到成功字样,保存退出。</span></p>
<h1><span style="font-family: "Microsoft YaHei"">新建工作流</span></h1>
<p><span style="font-family: "Microsoft YaHei"">接下来,新建一个“Freestyle”任务。</span></p>
<p><span style="font-family: "Microsoft YaHei"">然后,在当前工作流的“源码管理”这一页,选择Git,输入你仓库的地址:</span></p>
<p><span style="font-family: "Microsoft YaHei""><img src="https://img2020.cnblogs.com/blog/775522/202201/775522-20220103011636487-525920221.png"></span></p>
<p><span style="font-family: "Microsoft YaHei"">这里会报错很正常,因为没有配置账户密码。点击新增,选择“账户密码”种类,保存退出后选中它。正常情况下就像这样,不会出红色字体:</span></p>
<p><span style="font-family: "Microsoft YaHei""><img src="https://img2020.cnblogs.com/blog/775522/202201/775522-20220103011515406-1971001525.png"></span></p>
<p><span style="font-family: "Microsoft YaHei"">然后在下面设置分支,这一项决定Jenkins拉取哪个分支的代码(如果不写就是任意分支):</span></p>
<p><span style="font-family: "Microsoft YaHei""><img src="https://img2020.cnblogs.com/blog/775522/202201/775522-20220103012432115-485457041.png"></span></p>
<p><span style="font-family: "Microsoft YaHei"">往下找到“构建触发器”,选择箭头所指项(webhook url先拷贝一下):</span></p>
<p><span style="font-family: "Microsoft YaHei""><img src="https://img2020.cnblogs.com/blog/775522/202201/775522-20220103012839659-277222916.png"></span></p>
<p><span style="font-family: "Microsoft YaHei"">选中后会多出很多选项,暂时不用理会,只需要找到下面这一项,并生成一个:</span></p>
<p><span style="font-family: "Microsoft YaHei""><img src="https://img2020.cnblogs.com/blog/775522/202201/775522-20220103013219881-1324253745.png"></span></p>
<p><span style="font-family: "Microsoft YaHei"">这时候登录你的Gitee,找到准备好的仓库,找到管理→webhooks→新建,选择push和激活,填入复制好的webhook url和webhook token,确认添加:</span></p>
<p><span style="font-family: "Microsoft YaHei""><img src="https://img2020.cnblogs.com/blog/775522/202201/775522-20220103013444622-677722135.png"></span></p>
<p><span style="font-family: "Microsoft YaHei"">正常情况下,测试请求是200:</span></p>
<p><span style="font-family: "Microsoft YaHei""><img src="https://img2020.cnblogs.com/blog/775522/202201/775522-20220103013921339-586662277.png"></span></p>
<p><span style="font-family: "Microsoft YaHei"">回到Jenkins后台,测试触发器是否可以正常工作。构建前工作区是空的,点击“Build Now”手动触发构建:</span></p>
<p><span style="font-family: "Microsoft YaHei""><img src="https://img2020.cnblogs.com/blog/775522/202201/775522-20220103014532909-1397574395.png"></span></p>
<p><span style="font-family: "Microsoft YaHei"">再看工作区,已经把仓库代码拖下来了。并且在“构建历史”可以看到刚才的记录:</span></p>
<p><span style="font-family: "Microsoft YaHei""><img src="https://img2020.cnblogs.com/blog/775522/202201/775522-20220103015117289-1222710108.png"></span></p>
<p><span style="font-family: "Microsoft YaHei"">打开VS2022,提交代码到Gitee(你也可以用命令行):</span></p>
<p><span style="font-family: "Microsoft YaHei""><img src="https://img2020.cnblogs.com/blog/775522/202201/775522-20220104091917074-1533367635.png"></span></p>
<p><span style="font-family: "Microsoft YaHei"">回到Jenkins后台,构建历史中多了一条记录:</span></p>
<p><span style="font-family: "Microsoft YaHei""><img src="https://img2020.cnblogs.com/blog/775522/202201/775522-20220104092023604-553642971.png"></span></p>
<p><span style="font-family: "Microsoft YaHei"">进去查看控制台输出:</span></p>
<p><span style="font-family: "Microsoft YaHei""><img src="https://img2020.cnblogs.com/blog/775522/202201/775522-20220104092123802-1571422641.png"></span></p>
<p><span style="font-family: "Microsoft YaHei"">是刚才提交的修改没错了。自动构建Get~</span></p>
<p><span style="font-family: "Microsoft YaHei"">下一步是根据代码中的Dockerfile自动打包镜像,我会继续发文的。</span></p>
</div>
<div id="MySignature" role="contentinfo">
<p>
声明:未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。<br>
本文原创发表于博客园,作者为暮城倾心。欢迎转载。Donation(扫码支持作者)↓
</p>
<div class="codeBox">
<dl class="payCode">
<dt>
<img src="https://images.cnblogs.com/cnblogs_com/muchengqingxin/906963/o_wx.png" width="140px">
</dt>
<dd>微信</dd>
</dl>
<dl class="payCode">
<dt>
<img src="https://images.cnblogs.com/cnblogs_com/muchengqingxin/906963/o_ali.png" width="140px">
</dt>
<dd>支付宝</dd>
</dl>
</div><br><br>
来源:https://www.cnblogs.com/muchengqingxin/p/15758874.html
頁:
[1]