タダです.
GitHub Actions を初めて自作したのでその過程で学んだことをこの記事にまとめていこうと思います.
自作した GitHub Actions の概要
自作した GitHub Actions は TypeScript で書いた GraphQL を叩いて dependabot の情報を抽出するもので,プライベートリポジトリ間で使えるようにする必要がありました.このあたりで学んだことは関連記事に書いています.この記事では関連記事に書けていないことをまとめます.
関連記事
学んだこと一覧
TypeScript で作るために取っ掛かりとしてよかったもの
TypeScript で Actions を作るぞってなってもどう作るの?なんかサンプルが欲しいなと思っていました.そんな時に良かったのが, typescript-action
です.これは TypeScript の GitHub Actions サンプルで自分のリポジトリにテンプレートして持ってこれるため,一番はじめにどういうふうなコードを書けばいいのか,必要なパッケージ類は何かなどを GitHub のドキュメントと合わせて読んで理解を進めることができました.
結局何が必要なのか
結局,今回自作するために最低限必要になるなと感じたのは下記のものです.
- 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 Actions を初めて自作したのでその過程で学んだことをまとめました.これまで使うばかりだったのですが,自作できる経験がなかったので今後も作っていきたいです.