DinD环境下的Docker层缓存
前言 现在越来越多的CICD平台都开始使用DockerInDocker环境进行自动构建,随之而来的问题就是因为构建是在容器内构建,而容器环境在任务结束时会就地销毁,导致下一次构建时无法使用上次构建的缓存,基础镜像和项目依赖全部都要重新构建,对于企业大型项目来说,动辄十来分钟的构建时间不提,国内下载项目依赖包的时候还有可能会导致超时失败,如此不稳定的工作流对于CICD肯定是无法接受的。 为了解决这个…
前言 现在越来越多的CICD平台都开始使用DockerInDocker环境进行自动构建,随之而来的问题就是因为构建是在容器内构建,而容器环境在任务结束时会就地销毁,导致下一次构建时无法使用上次构建的缓存,基础镜像和项目依赖全部都要重新构建,对于企业大型项目来说,动辄十来分钟的构建时间不提,国内下载项目依赖包的时候还有可能会导致超时失败,如此不稳定的工作流对于CICD肯定是无法接受的。 为了解决这个…
终于到了最激动人心的时刻了,自动化部署! Docker环境下的自动部署不同于k8s,没有容器编排工具的情况下,实际上就是使用ssh的方式敲命令docker run而已。 编写.drone.yml 接着我们前文中CI的后面写,把CD的步骤也加上去,这里提供完整的yml,仍然是vue3项目: kind: pipeline type: docker name: hulu-project steps: -…
终于到了最激动人心的时刻了,自动化部署! K8S的自动化部署在任何CICD平台实际上都非常的简单,基本没什么要说的,这里简单介绍一下,主要是说一下drone部署k8s会遇到的坑。 编写deploy.yaml 既然要部署到k8s,那么k8s的资源文件是必不可少的,该文件我放在了源码的根目录下,和.drone.yml一起,这里不详细讲怎么编写了,如果想要学习,可以参考我的k8s系列文章,注意image…
CI/CD整体来说就是自动构建和自动部署,以容器化项目来说,CI包含了拉取代码,然后使用dockerfile进行项目依赖的重建和对源码的编译,最后打包成docker镜像,push到镜像仓库,本期我们将了解如何使用Drone进行CI,而Drone的CD步骤则放到下期再讲。 本文假设您已按照前几期的文章部署好了drone和runner。 前言 docker使用drone进行CI分为几个步骤: 注册镜像…
CI/CD整体来说就是自动构建和自动部署,以容器化项目来说,CI包含了拉取代码,然后使用dockerfile进行项目依赖的重建和对源码的编译,最后打包成docker镜像,push到镜像仓库,本期我们将了解如何使用Drone进行CI,而Drone的CD步骤则放到下期再讲。 本文假设您已按照前几期的文章部署好了drone和runner。 前言 k8s使用drone进行CI分为几个步骤: 注册镜像仓库账…
在我们成功搭建了Github的镜像仓库之后,终于轮到CICD的正片了,我们的CICD平台选择使用Drone,一个原生支持Docker,拥抱云原生的CICD平台。 Drone支持多种type的工作流管道,除了最常用的K8S和Docker以外,还支持直接在服务器环境运行的Exec类型,在远程服务器执行的SSH类型,除了这些还有AWS、DIGITAL OCEAN等,具体的可以参考Drone的官方文档。 …
在我们成功搭建了Github的镜像仓库之后,终于轮到CICD的正片了,我们的CICD平台选择使用Drone,一个原生支持Docker,拥抱云原生的CICD平台。 Drone支持多种type的工作流管道,除了最常用的K8S和Docker以外,还支持直接在服务器环境运行的Exec类型,在远程服务器执行的SSH类型,除了这些还有AWS、DIGITAL OCEAN等,具体的可以参考Drone的官方文档。 …
因为公司的Gitlab没有给我那么高权限,所以我必须做一个我个人拥有最高权限的镜像代码仓库,不然drone在做ci的时候是获取不到代码仓库列表的,注意新建的代码仓库如果是用IP访问的话,Gitlab默认是无法推送镜像到目标仓库的,因为有一个安全设置需要更改,需要管理员权限去进行开启,我这里连蒙带骗糊弄我们运维帮我开了,大概是在Admin Area里设置,你可以先试试直接镜像,如果报错的话你可以用错…
众做周知的原因,国内访问Github越来越不稳定,虽然平时自己提交代码什么的还能将就,但是做cicd你肯定不想push完代码,结果cicd克隆代码失败导致流水线中断,这肯定是令人非常烦躁的,所以最简单的办法实际上是你干脆不用Github,用gitee之类的国内代码仓库,但我们这种已经在Github安了家的老程序员了,并不想轻易搬家,所以研究一个个比较简单且可行的方案,就是在自己的服务器建立一个镜像…
最近在自己的服务器上k8s环境和公司的测试服务器docker环境下各搭了一套cicd,遇到了很多坑,且国内查不到什么中文资料,所以特此记述一下遇到的问题,和解决的过程。 考虑到实际上很少有人有自建的k8s集群,更多的是单一的云服务器使用docker来部署自己的项目,而恰好我也在公司的测试环境下也搭建了一套docker的cicd,所以本系列文章将分为K8S版和Docker版,读者可以按需浏览。 Do…