LoginSignup
0

posted at

updated at

GoでGithub Actionを起動するときのoptional値の挙動

こういうのがあったとする

hoge-workflow.yaml
name: hoge-workflow

on:
  workflow_dispatch:
    inputs:
      required_string:
        description: 必須な値
        type: string
        required: true
      optional_boolean:
        description: オプショナルな値
        type: boolean
        default: false
        required: false

これをgoから呼び出すとき、こんな感じにしたとする

github.Actions.CreateWorkflowDispatchEventByFileName(ctx, "your-org", "your-repo", "hoge-workflow.yaml", github.CreateWorkflowDispatchEventRequest{
	Ref: branch,
	Inputs: map[string]interface{}{
		"required_value": "hoge",
	},
})

optional_booleanが必須ではないから渡さなくていいはずだという理屈はわかるが、これだと422エラーを受け取ることになる(え、optionalじゃないの?という気持ちはあるが...)

試しに明示的にoptional_booleannilを渡してみるも、今度はFor 'additionalProperties', nil is not a string.というエラーで422エラーになる。

仕方ないのでoptionalだが値を渡すしかないっぽい。

Inputs: map[string]interface{}{
	"required_value": "hoge",
    "optional_value": false,
},

これなら動きそうだが、実はこれもダメで正解はひとつしかない。

Inputs: map[string]interface{}{
	"required_value": "hoge",
    "optional_value": "false",
},

はい、これで動きます。booleanの値を文字列にして渡すのが正解でした〜... わかるかこんなもん。

optionalなのにoptionalな挙動じゃないのも解せないわ

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0