Gitea Action实战:5分钟搞定Docker镜像构建与K8s部署(含飞书通知)
你是否还在为每次代码更新后,手动构建镜像、推送仓库、再到服务器上执行kubectl命令而烦恼?对于中小团队或个人开发者来说,一套轻量、自托管且功能完整的CI/CD流水线,往往是提升开发效率、保证部署一致性的关键。Gitea,这个广受欢迎的自托管Git服务,其内置的Actions功能,为我们提供了一个绝佳的解决方案。它并非GitHub Actions的简单复制,而是在私有化部署场景下,一个可控、灵活且资源消耗友好的自动化引擎。
今天,我们就来深入实战,手把手带你搭建一套基于Gitea Action的自动化流水线。这套流程将覆盖从代码提交触发,到Docker镜像构建、推送至私有仓库,再到Kubernetes集群滚动更新,最终通过飞书机器人将部署结果精准通知到团队的全过程。整个过程力求清晰、可复现,即便你是初次接触Gitea Action,也能在短时间内搭建起属于你自己的“发布高速公路”。
1. 环境准备与核心概念梳理
在开始编写第一行YAML之前,我们需要确保战场已经清扫干净,并且理解手中的武器。Gitea Action的运行依赖于Runner,你可以将其理解为一个待命的“工人”,它监听仓库的事件(比如push),一旦事件触发,就按照你编写的“工作说明书”(即Workflow文件)执行任务。
首先,你需要在你的Gitea实例中启用并配置Runner。进入Gitea的管理后台,在“动作Runner”页面,你可以添加新的Runner。Gitea支持多种Runner类型,对于大多数场景,选择Docker容器类型的Runner就足够了,它轻量且易于管理。添加成功后,你会获得一个Token,用于在服务器上注册Runner。
在你的服务器(可以是虚拟机、物理机,甚至是一台开发机)上,运行以下命令来注册并启动Runner:
# 下载并运行Gitea Actions Runner
docker run -d \
--name gitea_runner \
--restart always \
-e GITEA_INSTANCE_URL=https://your-gitea.com \
-e GITEA_RUNNER_REGISTRATION_TOKEN=YOUR_TOKEN_HERE \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /path/to/runner/data:/data \
gitea/act_runner:latest
注意:将
https://your-gitea.com和YOUR_TOKEN_HERE替换为你实际的Gitea地址和Token。挂载Docker套接字 (/var/run/docker.sock) 是为了让Runner能够在容器内执行Docker命令(例如构建镜像),这是关键一步。
接下来,我们需要在目标仓库中设置几个关键的密钥(Secrets)。这些敏感信息(如私有仓库的密码、K8s配置)绝不能硬编码在Workflow文件中。在仓库的“设置” -> “动作” -> “密钥”页面,添加以下密钥:
REGISTRY_USERNAME: 你的私有容器仓库用户名(如Docker Hub、Harbor、阿里云ACR等)。REGISTRY_PASSWORD: 对应的仓库密码或访问令牌。REGISTRY_URL: 仓库地址(例如docker.io或registry.your-company.com)。KUBECONFIG_DATA: 经过Base64编码的整个Kubernetes配置文件(~/.kube/config的内容)。FEISHU_WEBHOOK_URL: 飞书群聊机器人的Webhook地址。
准备好这些,我们的舞台和演员就位了。
2. 构建与推送:打造可交付的Docker镜像
CI/CD流水线的第一步,是将我们的源代码转化为一个可随处运行的、标准化的容器镜像。Gitea Action提供了丰富的市场(Marketplace),我们可以直接使用社区维护的成熟Action来完成这些步骤,无需重复造轮子。
在你的代码仓库根目录下,创建 .gitea/workflows/deploy.yml 文件。这是所有工
9709



被折叠的 条评论
为什么被折叠?



