上篇已介绍了.netcore项目构建的相关步骤,本篇继续完善
1、什么是CI/CD
CI/CD 中的“CI”始终指持续集成,它属于开发人员的自动化流程。成功的 CI 意味着应用代码的新更改会定期构建、测试并合并到共享存储库中。该解决方案可以解决在一次开发中有太多应用分支,从而导致相互冲突的问题。
CI/CD 中的“CD”指的是持续交付和/或持续部署,这些相关概念有时会交叉使用。两者都事关管道后续阶段的自动化,但它们有时也会单独使用,用于说明自动化程度。
2、Azure Devops创建镜像注册连接
-
通过项目设置,创建新的服务连接
-
选择Docker Registry,点下一步
-
填写docker hub用户验证信息及服务器连接名称,点验证,看到成功
3、编辑Azure Devops管道信息,添加推送镜像操作
-
添加设置对应的镜像仓库信息
4、保存管道信息,退出编辑,重新运行管道
-
运行管道,报错信息如下,denied: requested access to the resource is denied
解决方法:参考https://sample.blog.csdn.net/article/details/70156144
添加镜像前缀tag
-
再次运行管道,管道执行成功,备注:docker hub国内访问较慢
-
登入docker hub,发现多了一个镜像,说明构建推送镜像成功
5、新建发布管道,部署应用
-
创建发布管道
-
新建一个空作业
-
添加项目信息
-
添加阶段,命名部署应用,随意
-
想代理作业中添加任务,选择ssh连接应用主机,执行命令
-
参考脚本:
#!/bin/bash name="netcoreapp01" cid=`docker inspect --format ‘{{.Id}}‘ ${name} 2>/dev/null` if [[ ${#cid} -gt 0 ]]; then docker stop $name docker rm $name echo "successed deleted container ${name}" fi imageid=`docker images --format {{.ID}} $name` echo "准备删除旧镜像${imageid}" if [[ ${#imageid} -gt 0 ]]; then docker rmi -f $imageid echo "successed deleted old image ${name}" fi logfile="/var/log/servicelog/$name" if [[ ! -x "$logfile" ]]; then mkdir -p "$logfile" echo "已成功创建日志文件夹" else echo "文件存夹已存在" fi docker pull hub.docker.com/repository/docker/xjk27400861/coreapp3:$(Build.BuildId) docker tag hub.docker.com/repository/docker/xjk27400861/coreapp3:$(Build.BuildId) coreapp3:$(Build.BuildId) docker run -it -d -p 8002:80 --name netcoreapp01 --privileged=true coreapp3:$(Build.BuildId) docker logs netcoreapp01
-
创建发布,部署应用
-
部署应用
-
发现部署成功
-
访问应用,部署成功