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自动打包成镜像并且运行,下一篇继续。