如何为自定义GitHub Actions配置并使用数组输入?
自定义GitHub Action使用数组输入的实现方法
问题描述
我正在开发一个GitHub Action工作流,需要用到数组输入。目前通过空格分隔的方式模拟数组:
- uses: actions/my-custom-ci with: subdirectories: src/main/java src/test/java
但希望采用标准YAML数组格式:
- uses: actions/my-custom-ci with: subdirectories: - src/main/java - src/test/java
请问是否可以为自定义GitHub Actions使用数组输入?如果可以,具体该如何实现?
实现方案
完全可以为自定义GitHub Action配置数组输入,以下是具体步骤:
1. 在Action的配置文件中定义数组类型输入
在你的Action的action.yml文件里,将对应输入项的type设置为array,同时可补充描述和默认值:
inputs: subdirectories: description: "指定要处理的子目录列表" type: array required: true default: ["src/main/java"]
2. 在工作流中使用YAML数组传递参数
直接用你期望的YAML数组格式传递参数即可:
- uses: actions/my-custom-ci with: subdirectories: - src/main/java - src/test/java
3. 在Action的执行逻辑中读取数组输入
根据Action的开发语言,有不同的读取方式:
- Node.js 实现:使用
@actions/core包的getInput方法,设置parseArray: true直接获取数组:const core = require('@actions/core'); const subdirectories = core.getInput('subdirectories', { parseArray: true }); // 遍历处理数组 subdirectories.forEach(dir => { console.log(`处理目录: ${dir}`); }); - Bash 脚本实现:GitHub会将数组输入转换为换行分隔的字符串,可通过循环读取:
# 读取输入并按换行分割为数组 IFS=$'\n' read -r -d '' -a subdirectories <<< "$INPUT_SUBDIRECTORIES" # 遍历数组 for dir in "${subdirectories[@]}" do echo "处理目录: $dir" done
内容的提问来源于stack exchange,提问作者ThrowsError
相关产品推荐
相关产品推荐

