継続は力なり

タイトル通り定期的な更新を心掛けるブログです。

GitHub Actions を初めて自作したので学んだことをまとめる

タダです.

GitHub Actions を初めて自作したのでその過程で学んだことをこの記事にまとめていこうと思います.

自作した GitHub Actions の概要

自作した GitHub Actions は TypeScript で書いた GraphQL を叩いて dependabot の情報を抽出するもので,プライベートリポジトリ間で使えるようにする必要がありました.このあたりで学んだことは関連記事に書いています.この記事では関連記事に書けていないことをまとめます.

関連記事

sadayoshi-tada.hatenablog.com

sadayoshi-tada.hatenablog.com

学んだこと一覧

TypeScript で作るために取っ掛かりとしてよかったもの

TypeScript で Actions を作るぞってなってもどう作るの?なんかサンプルが欲しいなと思っていました.そんな時に良かったのが, typescript-action です.これは TypeScript の GitHub Actions サンプルで自分のリポジトリにテンプレートして持ってこれるため,一番はじめにどういうふうなコードを書けばいいのか,必要なパッケージ類は何かなどを GitHubドキュメントと合わせて読んで理解を進めることができました.

github.com

結局何が必要なのか

結局,今回自作するために最低限必要になるなと感じたのは下記のものです.

  • Actions のソースコード
    • Actions を動かすためのコード本体.TypeScript,package-json が最低限必要.
  • action.yml
    • Actions の定義ファイル.これがないと呼び出し先で GitHub Actions が動作しない.
  • @actions/core
    • Actions が呼び出し先からインプットの情報を得るために必要.
  • @vercel/ncc
    • 後述する Actions を配布する時に必要.

Actions を使ってもらう時にパッケージ類をどうするか

TypeScript のコードを書いてローカルで意図通りに動作したから次はどう配布するかのときに悩みました.プライベートリポジトリ間の呼び出しは上述した記事に書いたように解決したものの,Actions を呼び出し先では package.json にあるパッケージは既にインストールされた状態で実行できなければ機能しないけど,どうやって配布するのかがわかりませんでした.結論として @vercel/ncc を使って TypeScript のコードをビルドしたものを呼び出し元のリポジトリに配置しておけば,呼び出し先で Actions が動作しました.

ビルド例

ncc build src/index.ts

github.com

まとめ

GitHub Actions を初めて自作したのでその過程で学んだことをまとめました.これまで使うばかりだったのですが,自作できる経験がなかったので今後も作っていきたいです.