type
status
date
slug
summary
category
tags
create_time
Jul 14, 2025 03:57 PM
icon
password
my_create_time

📝 前言

这是 DevOps 专题的第五篇,回顾一下前几篇的内容:
这一篇我们就正式开始介绍如何使用 Gitea Actions 来完成 CI/CD 工作流。

🧭 背景介绍

随着 DevOps 自动化的普及,CI/CD 成为现代软件开发的标配。
对于使用自托管 Git 服务的团队来说,如何像在 GitHub 中使用 Actions 一样,在 Gitea 中实现类似的工作流自动化,是一个值得关注的问题。
幸运的是,Gitea 从 1.19 开始引入了原生 CI 功能 —— Gitea Actions,功能与 GitHub Actions 高度兼容,支持 YAML 工作流文件和 Docker 容器运行环境,是 GitHub Actions 的极佳替代方案。

🔍 使用场景

  • 企业或团队出于安全或合规考虑使用自建 Git 服务。
  • 替代 GitHub Actions,实现私有化部署的 CI/CD。
  • 在内网环境中自动构建、测试、部署应用程序。

📋 前提条件

在开始之前,请确保你具备以下环境准备:
  • Gitea 实例启用了 Actions 功能(app.ini 中配置,最新版默认已启用)
  • 构建服务器已安装 Docker 环境(用于构建镜像产物)
  • 本地已安装 git 工具

🧩 Gitea Actions 工作流结构解析

Gitea Actions 的工作流文件存放在仓库路径:.gitea/workflows/ 中,以 .yaml或.yml 结尾。
PS:区别于 Github Action,需要放到 .gitea 目录。
以下为一个简单的工作流示例,我们将通过该示例来讲解工作流的结构:
结构说明:
  • name:工作流名称,工作流是自动化任务的顶层单元,由一个或多个 Jobs 组成,通常由代码仓库中的事件(如 pushpull_request)触发。
  • on.push.branches:监听push到指定分支的事件,当触发该事件时,则会自动执行工作流,如示例中是监听main分支的push事件。
  • jobs:任务集合,Jobs 是 Workflow 中的执行单元,支持并行或串行执行(Gitea 并行好像还不完善),每个 Job 代表一个独立的任务(如构建、测试),也即是说每个不同的 Job 工作空间是隔离的。
  • jobs.build:Job 名称,Job 是 Jobs 集合中的具体任务,由多个 Steps 组成,在同一个运行环境中顺序执行。
  • jobs.build.runs-on:指定运行环境,对应着runner上的标签,该标签也可以配置为容器运行。
  • jobs.build.steps:一组 step 组合,可执行多个步骤。
  • jobs.build.steps.name:step 名称,Step 是 Job 中的最小执行单元,代表一个具体的操作(如运行命令、调用 Action)。
  • jobs.build.steps.run:执行具体的 shell 命令。
层级结构:Workflow → Jobs → Job → Steps → step
  • 一个 Workflow 包含多个 Jobs。
  • 一个 Job 包含多个 Steps。
  • 一个 Steps 包含多个 Step。
总体介绍一下,这个工作流的意思就是当监听到代码pushmain分支事件时,自动开始在host宿主机进行构建,并在控制台输出Hello World
下面我们再来一个实际的场景案例,该案例为 Python 后端接口项目。

🚀 详细步骤

1️⃣ 创建 Gitea 仓库

登录 Gitea 实例,点击右侧创建项目,如下图所示:
notion image
填写仓库名称,其他保持默认,再点击最下面的创建仓库即可。
notion image

2️⃣ 下载项目

创建完项目根据提示的地址,下载项目到本地:
notion image

3️⃣ 创建 python 代码

进入下载的空仓库目录,创建python代码文件:
代码文件内容如下:

4️⃣ 创建 Dockerfile

如果我们需要将代码部署到服务器,使用Docker镜像部署无疑是较好的选择,可以屏蔽环境依赖,达到一次构建处处运行的目的。
构建Docker镜像就需要依赖Dockerfile文件,关于Dockerfile的语法等后面有时间再介绍,我们先直接使用以下模板即可。
继续在项目根目录创建并编辑 Dockerfile 文件:
vim Dockerfile

5️⃣ 创建工作流文件

上面已经介绍过 Gitea 是会自动解析项目根目录的.gitea/workflows/*.yaml文件,并生成工作流。
因此我们也需要创建出该目录及文件,操作如下:
文件内容如下:
详细介绍都已经有在注释中说明,若有疑问可在评论区交流~
PS:另外由于国内环境原因,可能 github 的 actions 并不能正常下载,可离线下载并上传到自己的Gitea仓库,然后uses直接填自己仓库的完整地址即可,如:

6️⃣ 提交代码自动构建部署

回到项目根目录,提交代码到远程仓库:
登录 Gitea,进入项目的Actions中,可以看到已经开始自动执行工作流了。
notion image
当部署完成后,通过浏览器访问部署服务器IP:8000端口,能看到 Hello,World 即为部署成功。

✅ 总结

最后总结一下,通过 .gitea/workflows/*.yml,你可以在 Gitea 项目中快速定义并运行自动化任务。
Gitea Actions 基本都兼容 GitHub Actions 的语法,学习成本低,同时也适合私有部署场景。
后面会再介绍更多关于 Gitea Actions 的用法,欢迎持续关注~
💡
有关文章的任何疑问,欢迎您在底部评论区留言,一起交流~
若文章对您有帮助,欢迎 请我喝杯咖啡~
 
上一篇
网站朋友动态开源说明
下一篇
离线部署 Harbor 企业级镜像仓库指南

评论
Loading...