⌨️

【GitHub Actions】AutoHotKeyスクリプトをAhk2ExeでコンパイルするアクションをMarketplaceに公開した話

2021/07/16に公開

最近GitHub Actionsを触っていて、このActionをMarketplaceに公開することが出来たので公開までの流れを書いていく。
https://github.com/marketplace/actions/ahk2exe

実現したいこと

US配列のWindowsユーザが使用すると便利な alt-ime-ahk というAutoHotKeyスクリプトをもとに、細かなバグ修正や私が欲しい機能を追加したリポジトリがある。
https://github.com/nekocodeX/alt-ime-ahk-mod
新しいバージョンをリリースする際にAutoHotKeyが入っていない環境でも動作させたいため、Ahk2Exeというコンパイラを使用して実行可能ファイルにコンパイルする作業を行っていた。

最近、GitHub Actionsでこの作業を自動化したので、ついでにほかの人が使えるよう、GitHub Marketplaceに公開してみたいというわけ。

GitHub Actionsとは

GitHubが提供するCI/CDサービス。
主要なOSに対応しており、定期実行やイベントをトリガーにWorkflowを実行することが可能。
パブリックリポジトリにおける利用は無料で提供されている。

WorkflowとActionの違い

Workflow

定期実行やイベントをトリガーに実行される処理の手順が書かれたもの。

Action

Workflowのステップ内で呼ばれる関数のようなもの。
独自に開発したり、Marketplaceに公開されたものを使用することが可能。

公開までの道のり

まずは公式ドキュメントを読む

GitHub Docs > アクションの作成

Actionの種類を選択

以下の3種類がある。

種類 OS
Dockerコンテナ Linux
JavaScript Linux、MacOS、Windows
複合実行ステップ Linux、MacOS、Windows

GitHub Docs > アクションについて > アクションの種類 より引用

今回は、実現したいことに最適であろう 複合実行ステップ を選択した。

action.yaml の作成

今回は、複合実行ステップ の場合の必須項目のみ紹介する。

  • name
    Action名 (公開にあたって 条件 がいくつかあり)
  • description
    Actionの短い説明
  • runs
    • using
      composite を指定
    • steps
      実行ステップ
      • run
        実行コマンド
      • shell
        コマンドを実行するシェル

その他一部項目は、以下が参考になるかも。
GitHub > nekocodeX/GitHub-Action-Ahk2Exe > action.yaml
GitHub Docs > GitHub Actionsのメタデータ構文

README.md の作成

以下の項目を意識しながら README.md を書く。

  • Actionが実行する内容の説明
  • 必須の入力引数と出力引数
  • オプションの入力引数と出力引数
  • Actionが使用するシークレット
  • Actionが使用する環境変数
  • WorkflowにおけるActionの使用例

GitHub Docs > アクションについて > アクションのREADMEファイルを作成する より引用

Marketplaceに公開

action.yaml がリポジトリに存在すると以下のようなメッセージが表示される。

Draft a release を押すことで見慣れたRelease作成画面に移動する。

早速、Publish this release to the GitHub Marketplace を押したいところだが、その前に GitHub Marketplace Developer Agreement に同意しなければいけない様子。

よく読んでから同意すると Publish this release to the GitHub Marketplace チェックが入り、Marketplaceに公開するまでのチェック項目が表示される。

幸い全て満たしていたので、Marketplaceにおけるカテゴリといつも通りReleaseの内容を入力して Publish release する。

これで公開されました!お疲れ様でした🎉

あとがき

Marketplaceに公開するということで、今回初めて README.md を英語で書いたが、DeepLさんに頼っていることもあって少し不安な部分も…。GitHub Actionsはかなり自由度が高く可能性のあるサービスだと思うので積極的に活用していきたい💪

Discussion