いやー、衝撃たるや。
GitHub Actions now includes our most-requested feature: built-in CI/CD.
— GitHub (@github) August 8, 2019
Oh, and it’s free for open source. ❤️https://t.co/A5qFSWipCi pic.twitter.com/jignhKPEAp
とうことで、興奮気味に調べたことや感想のメモ。
先日のツイートで Be one of the first to hear the latest on GitHub Actions. といっていたので「え!まだ、GitHub Actionsが進化する!?」とワクワクどきどきはしていたものの、そう来るとは〜〜〜
「これが何なのか」といえば、例えばクランチの記事など。
公式のエントリーが出てくるのが迅速なのも嬉しい
&& public repoに対しても「Actions / CIが来るぞ」というのも、本当に待ち望んでいた事態でありまして、震える。
関連: GItHub Actionsを理解しよう! - 大好き!にちようび
実際どうなるのか?
残念ながら、まだ自分の環境では使えていないのですが。
例えばbootstrapは初期ローンチ組っぽい。(だってさ、こちらもまたpublic repoだぜ・・!)
Thanks, @github, for including us in the Actions CI/CD beta launch! We’re up and running with it in our Bootstrap v4 and v5 branches! ✅
— Bootstrap (@getbootstrap) August 8, 2019
Check out our CI setup: https://t.co/lAxv5mdQ7vhttps://t.co/FOi54NrG9L pic.twitter.com/3InkRJ8HLs
なので、「実際に動いている様子」はここから見られる。
bootstrap/test.yml at master · twbs/bootstrap · GitHubで内容を定義しており、実際の結果は例えばこのコミットなど。
これらを比較してみて、「ジョブ(ステップ)が確かにそれぞれ実行・出力されているな」というイメージが掴めるのではないでしょうか。
移行はどうやるの?
諸々の制約はつくものの、マイグレーションプログラムが用意されています。
go製で、バイナリポンで動くのが嬉しい。数年前だったらシェルスクリプトだよねきっと。
これについては実際に手元で動かしてみたけど、たしかに「動いた」。
もともと自分で定義していた.workflowファイルが、なるほどこうなるのか〜と。
詳細な定義ファイルの書き方については、以下に仕様があります。
ざっくりいうと何なのか?
「GitHub CIについて」の公式資料がこちら。
ということで、 公式な説明は Core concepts for continuous integration with GitHub Actions を読んで見るのが近道だと思う。
大まかに言えば「Linux(Ubuntu) / Windows / Mac」のイメージや、あるいはコンテナベース(=GItHub Actions)で多様な処理を実行できる。そして、その処理の発火条件や前提条件(依存)の定義などを、柔軟に行える・・・!といったところか。 jobs.<job_id>.runs-onやjobs.<job_id>.steps.usesを参照。
「GitHubのCI」だからこそできるような、例えば発火条件に「変更されたファイル(パス)の指定」があったり、「PRのアサイン状態」があったり。jobs.<job_id>.ifを参照。利用するサービス(DBとか)についても、Dockerのイメージを指定すれば組み込める。jobs.<job_id>.servicesを参照。
といった感じで、「どういった世界観なのか?」であれば「ジョブ > ステップの定義と、その発動条件やマトリックスのルールセットを定義する」という「ザ・CI」なのだけど*1。なのだけど、個人的には、「何をどこまでできるか?」という点で言えば「Workflow syntax for GitHub Actions」を読むだけでもかなりワクワクした!
いろいろな・・・本当に色々なことができちゃうな〜〜、と思う。 もちろん、プロダクションへの投入については、可用性もあることながらジョブの起動や並列実行の制約など「試してみないとなんとも言えない」部分は多い。それにしたって、現時点では最高に使ってみたいオモチャの1つなのは間違いない。。。!
はやく使ってみてぇ〜〜
*1:ActionsはVisualized Editorを目玉にしていた雰囲気もあったけど、どうするんだろうw