项目:Gitlab HSD CI/CD总结

核心成分:

  • gitlab-ci.yaml 定义部署的 jobs(操控 runner)
  • gitlab runner 负责运行 jobs(注册 / 启动容器)
  • pipeline:执行 gitlab-ci,将 jobs 分配给 runner(不用管)
  • vault 存储环境变量(lets 拉取)

gitlab-runner:

不算特别了解

存在多种形式,可以是 docker 容器、k8s pod 或者整个 node。

runner 本身也可以定义 executor,如 docker 或 shell。如果是 docker,可以在 gitlab-ci 定义用哪个镜像。

HSD 在部署阶段在 20E 用 docker + shell executor 注册 runner,大致流程如下:

1). 从 gitlab 设置页面注册新的 runner,指定 tag 并记录 token

2). 用 token 设置 config 文件

3). docker run 运行 runner 镜像,并用 config 文件配置

gitlab-ci:

  • 可以定义 stages 和 jobs。通常而言,按照 stages 的顺序执行,每个 stages 的所有 jobs 完成后再执行下一个。

  • jobs 需要设置的地方有 script、tag 和 image:

    script 描述每个 job 执行的脚本

    tag 指定分配给哪个 runner 执行

    image 在 executor 是 docker / k8s 容器的情况下指定镜像

  • build job:

    用了 gcr.io/kaniko-project/executor 的镜像。kaniko 专门用来编译镜像。编译完成后推送到 gitlab(在 --destination 定义推送的库)

    在推送时,设置 CI_COMMIT_SHORT_SHA 为镜像版本

  • deploy job:

    用 lets 拉取 vault 的变量,生成一长串代码 cmd,然后通过 ssh 在 20E 执行代码。

    cmd 内容:用 export 赋值环境变量后执行 docker pull。

  • 环境变量:
    CI_REGISTRY:gitlab 拉取镜像的 url。虽然 registry 和 repo 中文都算库,但 registry 包含多个 repo
    CI_REGISTRY_IMAGE:默认的镜像注册 url,等于 $CI_REGISTRY/$CI_PROJECT_PATH
    CI_PROJECT_PATH:repo 的路径
    CI_PROJECT_DIR:项目根目录在放 runner 的地址,用来获取文件
    CI_COMMIT_TAG,CI_COMMIT_SHA,CI_COMMIT_SHORT_SHA:git commit 的编号。CI_COMMIT_SHORT_SHA 是常用的8字符编码。
    CI_REGISTRY_USER,CI_REGISTRY_PASSWORD:每个 job 自动生成的账户,用于推送 / 拉取 gitlab 仓库的镜像。

相关推荐
无言听风雨丶12 小时前
Linux 容器本质探秘:Cgroup 与 Namespace 深度解析与实战
linux·运维·服务器·kubernetes
colinu15 小时前
Create gitlab-runner
gitlab
无言听风雨丶15 小时前
Kubernetes GitOps 持续交付实战:用 Argo CD 让 Git 成为集群事实源
git·elasticsearch·kubernetes
十二同学啊16 小时前
Go 工程化详解:项目结构、代码规范、测试体系与 CI/CD 实践
ci/cd·golang·代码规范
无言听风雨丶1 天前
Kubernetes 控制平面深度剖析:从 kubectl apply 到 etcd 写入的全链路
平面·kubernetes·etcd
openFuyao1 天前
openFuyao x 复旦大学软件工程实验室 Panel 回顾:Agentic时代,集群调度技术体系将如何演进?
kubernetes·openfuyao
螺蛳粉 螺蛳粉1 天前
第 05 篇:etcd 深入:Raft 共识、watch 机制与快照备份恢复实战(底座认知 05)
docker·云原生·容器·kubernetes·etcd·分布式存储·kube-apiserver
相思难忘成疾1 天前
从零搭建 Kubernetes 1.30 集群:kubeadm 部署一主多从实战(RHEL 9.3 + Docker + flannel)
linux·运维·kubernetes
weirong1 天前
给 K8s 加一个自动值班员:分级故障自愈引擎
kubernetes
云和数据.ChenGuang1 天前
Python 闭包详解:从原理到实战
linux·开发语言·人工智能·python·kubernetes