24 自定义行动之编写JavaScript行动

在前一篇文章中,我们讨论了如何使用 Docker 容器创建自定义 GitHub Actions。这一次,我们将深入探讨如何编写基于 JavaScript 的自定义行动。在实际开发中,JavaScript 行动因其简单性和灵活性而广受欢迎。

为什么选择 JavaScript 行动?

JavaScript 行动的优点包括:

  • 易于调试:因为可以在 Node.js 环境中运行。
  • 跨平台兼容性:JavaScript 脚本可以在不同操作系统上运行,无需考虑容器化的复杂性。
  • 使用丰富的库:可以利用 npm 生态系统中众多的库来拓展功能。

编写基础的 JavaScript 行动

步骤 1:创建行动目录

首先,创建一个新的目录用于存放你的行动代码:

1
2
mkdir my-javascript-action
cd my-javascript-action

步骤 2:初始化项目

使用 npm 初始化项目:

1
npm init -y

这将生成一个 package.json 文件,方便管理依赖和配置。

步骤 3:安装 GitHub Actions 工具

接下来,安装 @actions/core@actions/github 这两个库,它们提供了与 GitHub Actions API 交互的工具:

1
npm install @actions/core @actions/github

步骤 4:编写 JavaScript 行动脚本

在项目根目录下,创建一个 index.js 文件,并加入以下代码:

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

try {
// 获取输入参数
const name = core.getInput('name') || 'World';

// 输出到日志
const time = new Date().toTimeString();
core.info(`Hello ${name}! The current time is ${time}.`);

// 获取当前提交信息
const context = github.context;
core.info(`Current ref: ${context.ref}`);
} catch (error) {
core.setFailed(error.message);
}

步骤 5:创建 action.yml 文件

在项目目录下,创建一个名为 action.yml 的文件,该文件配置了你的 GitHub Action:

1
2
3
4
5
6
7
8
9
10
name: 'My JavaScript Action'
description: 'A simple JavaScript action that greets you'
inputs:
name:
description: 'Who to greet'
required: false
default: 'World'
runs:
using: 'node12'
main: 'index.js'

这个文件定义了自定义行动的基本信息,包括输入参数和执行的主程序。

步骤 6:创建工作流

现在,我们需要创建一个工作流来使用这个自定义行动。在你的 GitHub 仓库中,创建一个 .github/workflows 目录,并在其中创建一个名为 main.yml 的文件,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
name: My CI

on:
push:
branches:
- main

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

- name: Greet user
uses: ./ # 使用当前目录中的自定义行动
with:
name: 'GitHub User'

在这个工作流中,我们定义了一个名为 greet 的作业,它会在每次推送到 main 分支时运行,调用我们刚刚创建的 JavaScript 行动。

步骤 7:测试行动

将更改推送到你的 GitHub 仓库,观察 Actions 标签页,确认你的工作流是否成功触发并运行。当动作执行时,你应该能够看到类似如下的输出:

1
2
Hello GitHub User! The current time is 14:00:00 GMT+0000 (Coordinated Universal Time).
Current ref: refs/heads/main

结语

通过上述步骤,我们成功编写了一个简单的 JavaScript 行动,并将其集成到 GitHub Actions 工作流中。这样,你便可以根据需要灵活地扩展这个行动,加入更多功能或复杂的逻辑。

在下一篇文章中,我们将讨论如何阅读和调试工作流日志,帮助你更好地理解和排除行动中的问题。感谢你的阅读,我们下次见!

24 自定义行动之编写JavaScript行动

https://zglg.work/github-actions-zero/24/

作者

IT教程网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论