Jupyter AI

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

📅 发表日期: 2024年8月15日

分类: ⚙️GitHub Actions 入门

👁️阅读: --

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

为什么选择 JavaScript 行动?

JavaScript 行动的优点包括:

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

编写基础的 JavaScript 行动

步骤 1:创建行动目录

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

mkdir my-javascript-action
cd my-javascript-action

步骤 2:初始化项目

使用 npm 初始化项目:

npm init -y

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

步骤 3:安装 GitHub Actions 工具

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

npm install @actions/core @actions/github

步骤 4:编写 JavaScript 行动脚本

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

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:

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 的文件,内容如下:

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 标签页,确认你的工作流是否成功触发并运行。当动作执行时,你应该能够看到类似如下的输出:

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

结语

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

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

⚙️GitHub Actions 入门 (滚动鼠标查看)