GitHub がCI/CDを始めると聞いて

いやー、衝撃たるや。

とうことで、興奮気味に調べたことや感想のメモ。

先日のツイートBe one of the first to hear the latest on GitHub Actions. といっていたので「え!まだ、GitHub Actionsが進化する!?」とワクワクどきどきはしていたものの、そう来るとは〜〜〜

「これが何なのか」といえば、例えばクランチの記事など。

techcrunch.com

公式のエントリーが出てくるのが迅速なのも嬉しい

github.blog

&& public repoに対しても「Actions / CIが来るぞ」というのも、本当に待ち望んでいた事態でありまして、震える。

関連: GItHub Actionsを理解しよう! - 大好き!にちようび

実際どうなるのか?

残念ながら、まだ自分の環境では使えていないのですが。
例えばbootstrapは初期ローンチ組っぽい。(だってさ、こちらもまたpublic repoだぜ・・!)

なので、「実際に動いている様子」はここから見られる。

bootstrap/test.yml at master · twbs/bootstrap · GitHubで内容を定義しており、実際の結果は例えばこのコミットなど。

これらを比較してみて、「ジョブ(ステップ)が確かにそれぞれ実行・出力されているな」というイメージが掴めるのではないでしょうか。 f:id:o0h:20190809091716p:plain

移行はどうやるの?

諸々の制約はつくものの、マイグレーションプログラムが用意されています。
go製で、バイナリポンで動くのが嬉しい。数年前だったらシェルスクリプトだよねきっと。

help.github.com

これについては実際に手元で動かしてみたけど、たしかに「動いた」。
もともと自分で定義していた.workflowファイルが、なるほどこうなるのか〜と。

f:id:o0h:20190809094740p:plain

詳細な定義ファイルの書き方については、以下に仕様があります。

help.github.com

ざっくりいうと何なのか?

「GitHub CIについて」の公式資料がこちら。

help.github.com

ということで、 公式な説明は Core concepts for continuous integration with GitHub Actions を読んで見るのが近道だと思う。

大まかに言えば「Linux(Ubuntu) / Windows / Mac」のイメージや、あるいはコンテナベース(=GItHub Actions)で多様な処理を実行できる。そして、その処理の発火条件や前提条件(依存)の定義などを、柔軟に行える・・・!といったところか。 jobs.<job_id>.runs-onjobs.<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