IssueのトリガーでGithub Actionsを動かしてみる
具体的にはIssueに特定のラベルが付いていたらそれを元にGithub Pagesに記事を追加したい。 試しに このブランチ でテストを行ったがうまく行かなかった。 ブランチ に含まれるworkflowはpushでは起動するがissuesで動かない。
masterじゃないと動かないという制限があるかも? ということで 新規レポジトリ作ってmasterにactionsを登録したら動いた。 https://github.com/ques0942/github-actions-sample/commit/ee6bf81ebec027eda315d135aacd744def3e8ca8/checks?check_suite_id=393358382
こちらのレポジトリでもPRの段階ではissuesからのイベントでは起動されなかった。 やはり何かしら制限がありそう。 トリガーされるイベントが多すぎるので制限されるのもわからないではないが、masterでしかテストできないのはなかなか不便。
結論
この資料に記載があったが、masterかデフォルトブランチに設定がないと起動しない模様。
memo
runnerにインストールされているソフト
特定のラベルが含まれているか調べるには
https://github.community/t5/GitHub-Actions/Do-something-if-a-particular-label-is-set/td-p/40712#
コンテキストの中身を確認する
以下のようにechoを使うことで中身をダンプできる。
name: pullrequest from issue
on: issues
jobs:
display:
runs-on: ubuntu-18.04
steps:
- name: display
run: echo '${{ toJson(github.event) }}'
if節関連
if節の中ではenvは使えない。${VAR}でもenv.VARでも駄目だった。 if節の中では文字列はシングルクォーテーションのみ。ダブルクォーテーションでは駄目。 バックスラッシュで改行することはできない。
env関連
envの中で定義済みの変数を展開することはできないっぽい
envで変数を定義するときに以下のように定義しても展開されない模様。
VAR: 1
VAR2: ${VAR}-2
envを複数定義することもできないのでこれに関しては諦めるしかなさそう。
actionのwithで環境変数を使う
stepsでactionを使用する場合withで引数を渡すが、ここにenvで定義した環境変数を渡したい場合は $VAR
とするのではなく、 env.VAR
とする必要がある。
git関連
git pushをrun内で実行するとうまく行かなかったのでaction使ったほうが良さそう。
github関連
前述のpush actionも良いが、このaction を使用すると、gitへのcommit及びpull requestの作成をやってくれるのでかなり楽に実現できる。 steps内でファイルの追加、削除、更新してこのactionを実行するとそれらをまとめてcommitしてpull requestを作成してくれる。 ただし変更差分は全てcommitされるので不要なファイルを無視するか削除する必要がある。