Gitea Actions步骤全解析:从入门到精通

Gitea Actions 是 Gitea 提供的持续集成/持续部署(CI/CD)解决方案。它使用 YAML 文件定义工作流,而工作流的核心在于其步骤(Steps)。理解如何正确编写这些步骤,是高效构建自动化流程的关键。

本文将为您详细解析 Gitea Actions 中步骤的两种核心写法:使用封装好的操作(Actions)和执行Shell 命令

一、核心步骤写法:uses vs. run

一个工作流(Workflow)中的每个步骤,都必须指定一个 name,并选择使用 usesrun 关键字来定义其功能。

1. 运行 Shell 命令 (run)

这是最直接、最灵活的方式,允许您在运行器(Runner)上执行任何命令行脚本。

  • 用途: 执行简单的编译指令、运行测试脚本、输出调试信息等。

  • 示例:

    yaml 复制代码
    - name: 编译 Go 程序
      run: | # 使用多行脚本块
        go mod tidy
        go build -o myapp .
        echo "编译完成"
      shell: bash # 可指定使用的 shell

2. 使用 Actions (uses)

这是 Gitea Actions 强大之处的体现。它允许您引用外部或内部封装好的代码块(Action 模块),实现复杂逻辑的复用。

  • 用途: 检出代码、设置语言环境、登录 Docker 仓库、发布构件等。

  • 示例:

    yaml 复制代码
    - name: 检出仓库代码
      uses: actions/checkout@v4 # 引用远程 Action
    
    - name: 设置 Node.js 环境
      uses: actions/setup-node@v4
      with:
        node-version: '20' # 传入参数

二、深入探索:uses 关键字下的 Action 模块

uses 关键字可以引用的 Action 模块主要有三种类型,它们对应了不同的引用路径和使用场景:

A. 远程 Action (外部仓库)

最常见的形式,引用在公共 Actions 市场或外部 Gitea/GitHub 仓库中已发布的 Action。

  • 引用格式: owner/repo@tagowner/repo@commit
  • 示例: uses: actions/checkout@v4

B. 本地 Action (compositedocker 模式)

当你想在当前仓库 内复用一些特定逻辑时,可以将 Action 模块放在 .gitea/actions/ 目录下,并在工作流中通过相对路径引用。

  • 引用格式: uses: ./.gitea/actions/your-action-name
  • 优势: 逻辑封装在本地,无需发布到外部,便于维护。
1. Composite 模式(推荐)

这是最简单的本地 Action 模式,它允许您在 Action 内组合多个 runuses 步骤。

yaml 复制代码
# action.yaml (在本地 Action 目录中)
runs:
  using: 'composite' # 使用复合模式
  steps:
    - shell: bash
      run: echo "Hello, ${{ inputs.who-to-greet }}!"

C. 远程 Docker 镜像 Action

Action 不仅可以运行脚本,还可以直接在一个预构建的 Docker 镜像 中执行命令,实现精确的环境控制。这通过在 action.yaml 中配置 runs.using: 'docker' 来实现。

您可以使用远程 Docker 注册表(如 Docker Hub)上的镜像,无需编写 Dockerfile

配置项 示例值 作用
runs.using docker 声明使用 Docker 容器环境
image docker://golang:1.21-alpine 指定要拉取的远程镜像及其标签
entrypoint go 容器启动时执行的主命令
args version 传递给 entrypoint 的参数

示例 action.yaml 片段:

yaml 复制代码
runs:
  using: 'docker'
  image: 'docker://myregistry/my-custom-builder:latest' # 引用远程私有或公共镜像
  entrypoint: '/bin/run.sh'

💡 总结与建议

写法 关键字 优点 最佳实践
执行命令 run 灵活、自定义性高 用于简单的构建、测试命令和快速调试
引用操作 uses 模块化、可复用、代码简洁 用于复杂的环境配置、第三方服务交互和发布流程

通过灵活组合 usesrun,您可以为 Gitea 仓库构建出强大、高效且易于维护的自动化工作流。

相关推荐
自己的九又四分之三站台7 天前
GitLab vs Gitea 全面对比:企业级 DevOps 还是轻量级私有仓库?
ci/cd·gitlab·devops·gitea
沟通QQ:48773927810 天前
ACC巡航控制分层控制:上层PID与下层PID的奇妙组合
gitea
CodeZ-Hao19 天前
gitea启用状态检查结合jenkins工作流实现pr门禁
servlet·jenkins·gitea
玩电脑的辣条哥1 个月前
绿联NAS怎么部署Gitlab或Gitea?
gitlab·gitea
逍遥浪子~3 个月前
搭建本地gitea服务器
运维·服务器·gitea
rivercoder3 个月前
Gitea:轻量级的自托管Git服务
git·gitlab·gitea
Clownseven4 个月前
Gitea Webhook教程:实现git push后自动部署更新网站 (CI/CD入门)
git·ci/cd·gitea
Clownseven4 个月前
如何搭建私有Git服务器?Gitea安装与配置超详细教程 (替代GitHub/Gitee)
服务器·git·gitea
马特说4 个月前
macOS 搭建 Gitea 私有 Git 服务器教程
git·macos·gitea