GitHub Actionsでinputsに配列を渡すワークアラウンド

公開:2020/09/17
更新:2021/01/04
1 min読了の目安(約1100字TECH技術記事

GitHub Actionsのinputsに配列を渡したくなることはよくあるが、
2020年9月17日現在inputsにはstringしかサポートされていない。

この問題を何とかするワークアラウンドを紹介する。

1. bashで配列として解釈可能な文字列を受け取る

bashではデフォルトの配列区切りが空白なので、空白で各アイテムが区切られる文字列を入力してもらえばよい。

あるいはカンマ区切りでアイテムを入力してもらって、その文字列を分割すれば良い。

カンマ区切りの配列を受け付ける例

inputs:
	images:
    description: 'Comma separated list of images. The format of item is `name:tag`. e.g. "golang:1.14,quay.io/prometheus/prometheus:v2.20.1"'
    required: true

runs:
	using: composite
	steps:
    - run: |
	IMAGES=${{ inputs.images }}
        for image in ${IMAGES//,/ }; do
          NAME=$(echo $image | cut -d: -f1)
          TAG=$(echo $image | cut -d: -f2)
          kustomize edit set image ${NAME}=${NAME}:${TAG}
        done
      shell: bash

2. JSON文字列を入力として受け取る

JSON文字列を受けつけることにすると配列が処理しやすい。
jqなど使えばbashでも処理できる。ただしJSONは配列以上のものを表現できてしまうので、配列しか許したくない場合はJSONではないほうが親切と言えるかも。