22 创建自定义行动

在上一篇中,我们探讨了如何使用 GitHub Actions 市场上的第三方行动来提升我们的工作流程。今天,我们将深入学习如何创建自己的自定义行动,以便于满足特定的需求或实现个性化的功能。

自定义行动为开发者提供了更高的灵活性和控制力。你可以根据项目的需要,编写专属于你的行动,甚至可以封装复杂的逻辑以便重用。

自定义行动的基本概念

自定义行动可以是一个简单的 JavaScript 文件、一个 Docker 容器,或者一个组合了多个步骤的 YAML 文件。我们将在这篇文章中聚焦于如何利用 JavaScript 来创建自定义行动,并为后续使用 Docker 容器的文章做铺垫。

创建自定义行动的步骤

1. 设置项目结构

首先,创建一个新的 GitHub 仓库,假设我们把这个仓库命名为 my-custom-action。然后在项目根目录下创建以下结构:

1
2
3
4
5
my-custom-action/

├── action.yaml
├── index.js
└── package.json
  • action.yaml 是自定义行动的元数据文件。
  • index.js 是执行逻辑的 JavaScript 文件。
  • package.json 用于管理项目依赖。

2. 编写 action.yaml

action.yaml 文件中定义自定义行动的元数据:

1
2
3
4
5
6
7
8
9
10
name: 'My Custom Action'
description: 'A simple custom action that greets by name'
inputs:
name:
description: 'Name to greet'
required: true
default: 'World'
runs:
using: 'node12'
main: 'index.js'

上面的代码定义了一个名为 “My Custom Action” 的自定义行动,它接受一个名为 name 的输入参数,并在 JavaScript 文件中执行操作。

3. 编写 index.js

index.js 中编写实际执行的逻辑:

1
2
3
4
5
6
7
8
9
10
11
12
13
const core = require('@actions/core');

async function run() {
try {
const name = core.getInput('name');
console.log(`Hello ${name}!`);
core.setOutput('greeting', `Hello ${name}!`);
} catch (error) {
core.setFailed(error.message);
}
}

run();

在这里,我们使用 @actions/core 包来获取输入参数,并输出一条问候消息。如果发生错误,将会调用 core.setFailed 来标记行动为失败。

4. 配置 package.json

package.json 中定义项目的基本信息和依赖项:

1
2
3
4
5
6
7
8
{
"name": "my-custom-action",
"version": "1.0.0",
"main": "index.js",
"dependencies": {
"@actions/core": "^1.5.0"
}
}

确保你的自定义行动使用到的依赖(如 @actions/core)已经在 package.json 中进行配置。

5. 使用自定义行动

现在,你可以在 .github/workflows 目录下创建一个工作流文件(例如 run-custom-action.yml),并使用我们刚才创建的自定义行动:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
name: Custom Action Workflow

on: [push]

jobs:
greet:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2

- name: Run My Custom Action
uses: ./ # 使用当前目录的自定义行动
with:
name: 'GitHub User'

当代码被推送到仓库时,上述工作流将会触发,并调用你的自定义行动,以便输出问候消息。

总结

在这一节中,我们详细探讨了如何创建一个简单的自定义行动。我们通过代码逐步构建了从元数据文件到执行逻辑的完整流程。自定义行动的灵活性使得它们能够被重复使用和扩展,为不同的项目带来便利。

在下一篇中,我们将更进一步,探讨如何使用 Docker 容器创建自定义行动,为复杂的工作流程提供更加稳健的支持。

作者

AI免费学习网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论