Docker搭建自己的企业级CICD(一)Gitlab镜像仓库
因为公司的Gitlab没有给我那么高权限,所以我必须做一个我个人拥有最高权限的镜像代码仓库,不然drone在做ci的时候是获取不到代码仓库列表的,注意新建的代码仓库如果是用IP访问的话,Gitlab默认是无法推送镜像到目标仓库的,因为有一个安全设置需要更改,需要管理员权限去进行开启,我这里连蒙带骗糊弄我们运维帮我开了,大概是在Admin Area里设置,你可以先试试直接镜像,如果报错的话你可以用错…
因为公司的Gitlab没有给我那么高权限,所以我必须做一个我个人拥有最高权限的镜像代码仓库,不然drone在做ci的时候是获取不到代码仓库列表的,注意新建的代码仓库如果是用IP访问的话,Gitlab默认是无法推送镜像到目标仓库的,因为有一个安全设置需要更改,需要管理员权限去进行开启,我这里连蒙带骗糊弄我们运维帮我开了,大概是在Admin Area里设置,你可以先试试直接镜像,如果报错的话你可以用错…
众做周知的原因,国内访问Github越来越不稳定,虽然平时自己提交代码什么的还能将就,但是做cicd你肯定不想push完代码,结果cicd克隆代码失败导致流水线中断,这肯定是令人非常烦躁的,所以最简单的办法实际上是你干脆不用Github,用gitee之类的国内代码仓库,但我们这种已经在Github安了家的老程序员了,并不想轻易搬家,所以研究一个个比较简单且可行的方案,就是在自己的服务器建立一个镜像…
最近在自己的服务器上k8s环境和公司的测试服务器docker环境下各搭了一套cicd,遇到了很多坑,且国内查不到什么中文资料,所以特此记述一下遇到的问题,和解决的过程。 考虑到实际上很少有人有自建的k8s集群,更多的是单一的云服务器使用docker来部署自己的项目,而恰好我也在公司的测试环境下也搭建了一套docker的cicd,所以本系列文章将分为K8S版和Docker版,读者可以按需浏览。 Do…
准备阶段 开始CICD之前你需要提前准备这些东西: 需要CICD的项目写好Dockerfile将项目提交到代码仓库开通阿里云效工作流开通阿里容器镜像仓库个人版,可参照此文章准备一台服务器 添加流水线 本文以.NetCore项目部署至K8S为例 点击新建流水线可以看到如下图页面: 选择【其他-镜像构建,发布到k8s集群】的模板。 配置代码源 创建后选择添加代码源,根据你使用的代码仓库来选择代码来源,…
.NetCore应用部署至K8S,实际上就四个问题需要解决: 日志等文件的持久化 配置appsettings.json 服务的健康检查 编写项目的yaml和dockerfile 我们一步一步来。 日志等文件的持久化 你的项目可能内含一些程序运行期间生成的文件,比如日志或用户上传的文件等,你肯定不想让其随容器的销毁而丢失,那么就要解决应用在k8s内的文件持久化问题。 这个问题的解决方法非常简单,就是…
之前我的集群一直使用的Ingress-Nginx作为应用路由,但是没有证书导致https一直都是不受信,然后被群友安利了Traefik的Ingress实现,感觉不错,抄了一套到我自己的集群上,过程中还踩了点坑,特此记录一下。 本文使用Helm安装Traefik,K8S管理工具使用的Lens,详情见这篇文章。 创建Namespace 为方便管理,创建一个独立的namespace: kubectl c…
业务代码敲多了免不了CtrlCV,每次开新项目的时候脚手架搭起来费时费力,经常要翻看老项目复制来复制去,那么有没有可能自己造一个类似自带的WebApi模板那样的脚手架来快速生成项目呢?答案是有的,我们可以通过dotnet创建项目模板,甚至还可以发布到nuget上供身边同事使用。 准备自己的项目模板 既然我们要造个项目脚手架模板,那么这个模板肯定要有个原型,我们需要先准备一个能够编译通过的.NetC…
因为经常要将服务部署到公司内网测试环境进行测试,一旦出现bug除了查日志就只能让app端进行抓包,非常的麻烦,痛定思痛,研究了一下VS2019的远程调试功能,废话不多说,直接整。 首先你要确定你的代码发布为Debug模式,因为Release会优化IL中间码,导致你附加到进程调试时有时无法命中断点: 然后发布你的代码打包到服务器上构建镜像创建容器后,打开VS2019的附加到进程: 链接类型选择你部署…
使用github的朋友经常会遇到这么个问题,由于仓库是public的,所以存储在配置文件内的数据库字符串等用户机密密钥会随代码push到代码仓库后被公开,即使你立即发现后删除配置文件,其他用户仍能从你的提交记录中查询到该机密数据,这肯定是我们所不想看到的,因此,微软为.NetCore的Appsettings文件提供了一种开发环境下的机密数据管理方案。 机密管理器工具的工作原理 机密管理器工具隐藏实…
业务上有个时间要取的时间要和另外项目的CMS后台配置的时间属于同一个时区,而直接用c#取Datetime.Now实际上获取的是+0时区,业务逻辑会出现错误,查了一圈资料大多数都是要增加配置项,更有甚者要我exec到容器内去改时区。。最后终于查到个靠谱的,通过修改DockerFile,在Build的时候就确定容器的时区,命令如下: ENV TZ=Asia/Shanghai RUN ln -snf /…