跳转到内容

Gitea Actions 介绍 ​

什么是 Gitea Actions ​

Gitea Actions 是 Gitea 内置的持续集成/持续部署(CI/CD)系统,类似于 GitHub Actions。它允许开发者通过定义工作流来自动化软件开发流程,包括代码构建、测试、打包和部署等任务。

核心概念 ​

工作流 (Workflows) ​

工作流是自动化过程的可配置单元。它们被定义为 YAML 文件,存储在代码仓库的 .gitea/workflows/ 目录中。每个工作流包含一个或多个作业(Job)。

事件 (Events) ​

事件是触发工作流执行的条件。常见的事件包括:

  • push:代码推送到仓库
  • pull_request:创建或更新拉取请求
  • issue:创建或更新议题
  • 手动触发

作业 (Jobs) ​

作业是工作流中的独立任务单元,包含一系列步骤。作业可以在不同的运行器上并行或顺序执行。

步骤 (Steps) ​

步骤是作业中的单个任务,可以运行命令或使用预定义的操作。

操作 (Actions) ​

操作是可重复使用的单元,封装了复杂的任务。Gitea 和社区提供了许多预构建的操作。

工作流语法 ​

基本结构 ​

yaml
name: 工作流名称
on: 触发事件
jobs:
  job_id:
    name: 作业名称
    runs-on: 运行环境
    steps:
      - step1
      - step2

常用字段 ​

  • [name](file://d:\mine\doc\src\element-ui\encapsulation\InputSuggestions.vue#L1-L1): 工作流或作业的显示名称
  • [on](file://d:\mine\doc\src\ts\event-emitter.ts#L17-L34): 定义触发工作流的事件
  • jobs: 定义工作流中的作业
  • runs-on: 指定运行作业的环境标签
  • steps: 定义作业中的步骤列表

常见用例 ​

自动化测试 ​

yaml
name: 运行测试
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: 设置 Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '16'
      - run: npm install
      - run: npm test

构建和部署 ​

yaml
name: 构建和部署
on:
  push:
    branches: [main]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: 构建项目
        run: |
          npm install
          npm run build
      - name: 部署到服务器
        run: |
          # 部署命令

多环境测试 ​

yaml
name: 多环境测试
on: [push]
jobs:
  test-linux:
    runs-on: ubuntu-latest
    steps:
      # Linux 测试步骤
  test-windows:
    runs-on: windows-latest
    steps:
      # Windows 测试步骤
  test-macos:
    runs-on: macos-latest
    steps:
      # macOS 测试步骤

环境变量和密钥 ​

默认环境变量 ​

Gitea Actions 提供了许多默认环境变量:

  • GITHUB_ACTOR: 触发工作流的用户
  • GITHUB_REPOSITORY: 仓库名称
  • GITHUB_REF: 触发工作流的分支或标签

自定义环境变量 ​

可以在工作流中定义自定义环境变量:

yaml
env:
  NODE_ENV: production
  DATABASE_URL: ${{ secrets.DATABASE_URL }}

密钥管理 ​

敏感信息如密码、API 密钥应存储在仓库密钥中,而不是直接写在工作流文件中。

最佳实践 ​

工作流设计 ​

  1. 将复杂的流程分解为多个作业
  2. 合理使用并行和依赖关系
  3. 使用缓存提高构建速度
  4. 添加适当的错误处理

安全性 ​

  1. 不要在代码中硬编码敏感信息
  2. 使用密钥存储敏感数据
  3. 定期审查和更新权限
  4. 限制第三方操作的使用

性能优化 ​

  1. 使用缓存避免重复下载
  2. 合理设置超时时间
  3. 选择合适的运行器标签
  4. 清理不必要的文件和依赖

与 GitHub Actions 的区别 ​

虽然 Gitea Actions 受到 GitHub Actions 的启发,但两者之间仍有一些区别:

  • 配置文件存储在 .gitea/workflows/ 而不是 .github/workflows/
  • 某些操作可能不完全兼容
  • 运行器实现有所不同
  • 部分功能可能存在差异

相关链接 ​