2021/11/26追記
いつの間にかcompositeでもusesが使える(他のアクションを呼べる)ようになっていました。

以降は、過去の不幸話のため、どうかお引き取りください。。
結果(2020/8/27時点)
GitHub Actionsをはじめて2日目の超初心者です。4日目の初心者です。
プライベートリポジトリでワークフローと悪戦苦闘しているときに、似たようなステップの列挙にでくわして、持病のめんどくさい病が発症したので、改善を試みました。
今後の改善は下記あたりをウォッチしておくのが良さそう。
やりたいこと
GitHub Actionsで複数のステップをまとめて、再利用して楽したい。。
DcokerとかJavaScriptとか、それはそれでめんどくさいし、そんな大した内容ではないので、ライトに複数ステップをまとめて使いまわしたい。CircleCIでいうcommands的なイメージです。
ひとまず、下記Yamlを見てください。試行錯誤中のGitHub Actionsのワークフローを定義したYamlファイルです。リリースが公開された時に走るワークフローのつもりです。
Gradle Wapperのバリデーションして(セキュリティ的理由)、ビルド(コンパイルとかユニットテスト)して、GitHub Packagesにパブリッシュするだけのショボいワークフローです。
のりお氏のセンスがないだけな気もしますが、これ見るとしんどいですよね。チェックアウトして、Javaのセットアップして、Gradleのキャッシュ取得してみたいなごちゃごちゃが複数回出てきて、読むのもメンテするのもしんどいです。。
でも、これくらいの内容にDockerとかJavaScriptで独自アクションをわざわざ用意するのもなんかしんどくないですか?
できたこと
というわけで、たどり着いた解決策がComposite run stepsを使う方法です。
runs配下のstepsを見ての通り、ワークフローで慣れ親しんだステップを書くだけで簡単そうですね。ただし、シェルコマンドの実行しか定義できませんでした。。
他リポジトリから使い回すほどの内容でもないので、今回はいったんローカルのアクションとして下記pathに上記yamlファイルを配置しました。
.github/actions/build-with-gradle/action.yml
上のアクションを使用することで、冒頭でお見せしたリリース用のワークフローは下記のように!!!
あんまり変わっていないですね。。間違い探しレベル。。
独自アクションを用意することに変わりはないのですが、この方法ならaction.ymlを用意するだけなので、DockerやJavaScriptを使用したアクションよりはだいぶ楽で、のりお氏みたいにDockerやJavaScriptが書けなくても安心!!!
と、期待したのですが、だめでした。。
できなかったこと
Composite run stepsの中からもusesで他のアクションを使用したかったのですが、現状は未対応でした。下記のようなアクションを書きたかったけどだめだった。。
Unexpected value ‘uses’と怒られます。
まあ、run stepsという名の通り、runしか使えないということですね。。usesも含めたイケイケなComposite Actionは下記に期待です。
参考
ちゃんとした説明は下記英語版のオフィシャルのドキュメントに記載されています。

ひとつだけよく分からなかったのは、上記ドキュメントの中で、アクションのバージョンを@v1と指定するためにラベルを作成するみたいな説明があるのですが、タグの間違いですかね。。
ちなみに、このComposite run stepsですが、下記英語版にはアクションのタイプとして記載されているのですが、

8月にリリースされたばかりだからか、下記日本語版には載っていませんでした。。(2020/8/25時点)

コメント