Files
Knowledge/1 使用/软件使用/gitee action 的使用.md
T

63 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 1 基本概念
类似于 GitHub Actions,Gitea Actions 同样包含了工作流(Workflow)、事件(Event)、任务(Job)、步骤(Step)、运行器(Runner)等几项重要的基本概念。
### 1.1 工作流
**工作流**是一个可配置的自动化过程。我们将本地写好的 Markdown 文件推送(`push`)到远程云服务器的 Gitea 仓库,触发后续 Markdown 向 HTML 页面的自动渲染及博客站点的自动发布更新,这个过程就是一个典型的工作流。
工作流由定义在仓库指定目录下的 YAML 脚本描述,对于 GitHub Actions 而言,这个目录是 `.github/workflows`,对于 Gitea Actions 而言,这个目录是 `.gitea/workflows`。
### 1.2 事件
**事件**是触发工作流开始运行的源头,仍以 Hexo 博客的 CI/CD 工作流为例,我们将 Markdown 文件 `push` 到远程云服务器 Gitea 仓库的动作就是一个事件。
### 1.3 任务和步骤
**任务**是工作流中一组**步骤**的集合,一个工作流可以包含多个任务,一个任务可以包含多个步骤,每个步骤都包含了若干条具体的操作命令。步骤按顺序执行,并且相互依赖。
我们可以配置工作流中任务间的依赖关系(默认无依赖关系,并行运行),当一个任务依赖于另一个任务时,它将等待所依赖任务完成后才能开始运行。
### 1.4 运行器
**运行器**是执行工作流任务的软件程序,工作流中的每个任务都需要指定运行器,不同的任务可以指定不同的运行器。
一个典型的 Gitea Actions 工作流如下图所示:
![](https://pic3.zhimg.com/80/v2-f20765564372b73b9e11def9388025b2_720w.webp)
典型的 Gitea Actions 工作流
## 2 环境配置
### 2.1.1 全局配置
Gitea 配置文件 `/etc/gitea/app.ini`,确保配置文件 `actions` 配置项并开启 Gitea Actions 功能:
```ini
[actions]
ENABLED = true
```
### 2.1.2 为指定仓库开启 Actions 功能
即使 Gitea Actions 已经在配置文件中开启,对于某个指定的仓库而言其 Actions 功能仍是默认关闭的,需要针对仓库进行单独配置:
![](https://pic3.zhimg.com/80/v2-8b981d756bc907c644d03396969943b2_720w.webp)
为指定仓库开启 Actions
### 2.2 部署 act runner
Gitea 使用 [act runner](https://link.zhihu.com/?target=https%3A//gitea.com/gitea/act_runner) 来执行具体的工作流任务。使用 docker 安装 act runner 的过程如下:
- Step 1
```bash
docker run -e GITEA_INSTANCE_URL=https://your_gitea.com -e GITEA_RUNNER_REGISTRATION_TOKEN=<your_token> -v /var/run/docker.sock:/var/run/docker.sock --name cicd gitea/act_runner:nightly
```
```bash
GITEA_INSTANCE_URL 是 gitea 地址
GITEA_RUNNER_REGISTRATION_TOKEN 是创建 runner 时自动生成的 token
```
![[Pasted image 20240820093153.png]]gitee 在用户-设置下创建的 action 和在项目的设置下创建的 action 什么区别?