GitHub Actionsを開発からMarketplaceに公開するまでの流れ

GitHub Actionsを作ってGitHub Marketplaceに公開してみたので、その流れをまとめてみました。

やってみた感想としては、開発から公開まで比較的簡単にできるので、アイデアがあればぜひ皆さんも作ってみてください。

どんなGitHub Actionsを作ったか

Update Project v2 Item Fieldというアクションを作りました。

このアクションは、GitHub Project V2のフィールドを更新するアクションです。 すでにビルトインのワークフローがあるのですが、それでは足りないということで作りました。

ユースケースとしては、次のようなことを想定しています。

  • タスク状況の見える化を進めるため、レビューリクエストしたらステータスを「レビュー中」に更新する。
  • イシューのリードタイムを把握するために、イシューをオープンしたら「開始日」をいれる。イシューをクローズしたら「終了日」と「クローズまでかかった時間」をいれる。

1. GitHub Actionsの種類を決める

アクションの種類として主に3つあります。それぞれメリット・デメリットがあるので、どれを選ぶかはアクションの目的によって変わってきます。とりあえず作ってみるとかであれば、JavaScriptがシンプルで良いかなと思います。

  • JavaScript:ランナーマシン上でJavaScriptを実行する。コードがシンプルで、Dockerコンテナよりも速く実行できる。
  • Dockerコンテナ:ランナーマシン上でDockerコンテナを実行する。環境をパッケージ化でき、言語やツールなどの自由度が高い。
  • 複合アクション:複数のワークフローのステップを組み合わせて1つのステップとして実行できる。

ちなみに、紛らわしいのですが、GitHub Appsという選択肢もあります。どちらも、ワークフローの自動化を実現するものですが、それぞれにより適した使い方があります。詳細は、GitHub ActionsとGitHub Appsの強みを参照ください。

2. GitHub Actionsの開発に慣れる

3種類のアクションのそれぞれで、Hello Worldの記事があるので、それを参考にしながら実際に作ってみることでGitHub Actionsの開発に慣れることができます。

基本的には普通の開発とあまり変わりません。GitHub Actionsの特徴的なところとしては、アクションのメタデータであるaction.ymlが必要、GitHubのコンテキスト情報をもとに処理をする、READMEの書き方はある程度の慣例があるとこです。

また、らGitHub公式でアクションの作成 にドキュメントが一通りあるので、何かわからないことがでてきたら軽く一読しておくことをオススメします。

3. GitHub Actionsの環境環境を構築する

GitHub Actionsの開発に慣れたら、実際に開発をしていきます。

基本的な環境はテンプレートリポジトリが公開されているので、こちらをテンプレートに設定してリポジトリ作成をするとよいでしょう。また、テンプレートの使い方は各リポジトリのREADMEに記載されていますので、それを見ながら設定していくことで基本的なGitHub Actionsの環境を構築することができます。

4. GitHub Actionsの開発を完成させる

実装を進めていく中では、次のようなツールやドキュメントを使いながら進めるとスムーズに開発を進めていくことがでるでしょう。

  • GitHub Actions Toolkit
    • GitHub Actionsの作成より簡単にするためのツールキット
    • coreexec, glob, http-client, io, github, artifactなどの便利なツールがありほぼお世話になる
  • GitHub Marketplace
    • 公開されているGitHub ActionsとGitHub Appsを検索できる
    • カテゴリでGitHub Actionsを探すことができるので、自分が作ろうとしているカテゴリで似たようなアクションを探すことをオススメ。
    • Input, Outputの設計、READMEの書き方、実装の詳細など参考になることが多数ある
  • GitHub REST APIドキュメントGitHub GraphQL APIドキュメント
    • GitHubはRESTとGraphQLの両方のAPIを公開している
    • RESTだけにしかない機能、GraphQLにしかない機能もあるので、両方のAPIを調べたほうがよい

5. GitHub ActionsのMarketplaceへ公開する

GitHub Actionsが完成したら、いよいよGitHub Marketplaceへ公開します。

GitHub Marketplaceでのアクションの公開に詳しく要件や手順が書かれているので、読みながら進めると公開できるでしょう。

GitHub Actionsの公開は、GitHubのReleasesという機能と紐づいています。
リポジトリaction.ymlのページを開くと、アクションを GitHub Marketplace に公開するバナーが表示されます。 そこからReleasesを作成して、「Publish this Action to the GitHub Marketplace 」にチェックをいれることでMarketplaceで表示・検索できるようになります。