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 仓库构建出强大、高效且易于维护的自动化工作流。

相关推荐
嘎嘎NULL7 天前
Gitea配置邮箱
运维·服务器·gitea
嘎嘎NULL7 天前
Gitea禁止注册和Gitea禁止未登录用户探索仓库
gitea
嘎嘎NULL7 天前
Gitea上传文件限制 Dropzone upload error: You can not upload any more files.
gitea
Hvitur11 天前
Gitea 版本控制服务端
gitea
猫头虎18 天前
Gitea 服务器搭建:如何在公司服务器搭建 Gitea 环境实现代码仓库私有化托管
运维·服务器·git·github·ai编程·gitea·gitcode
路由侠内网穿透.22 天前
本地部署代码托管解决方案 Gitea 并实现外部访问( Windows 版本)
运维·服务器·网络协议·gitea
吹牛不交税23 天前
gitea安装windows并实现CICD持续集成部署
ci/cd·gitea
不像程序员的程序媛1 个月前
gitea基本操作
gitea
阿里巴巴P8资深技术专家1 个月前
Docker一站式部署:RustFS、GoFastDFS、Gitea与PostgreSQL实战指南
docker·postgresql·gitea
木二_2 个月前
附058.Kubernetes Gitea部署
ci/cd·kubernetes·gitea