Closed suzuki-shunsuke closed 3 years ago
自作のツール buildflow を導入する上で以下のことを説明します。
build pipeline を実行するための CLI ツールです。 Workflow Engine と言ったほうが分かりやすいかもしれません(定義がよく分かりませんが)。 ここでいう build pipeline とは何かというと、 CircleCI や GitHub Actions のような CI サービスのワークフローのようなものと思ってもらえればよいかと思います。 buildflow は CI サービスではないので、ローカルで pipeline が実行されます。 一部の CI サービスでは pipeline のローカル実行をサポートしてたりしますが、そんなイメージで良いかもしれません。 buildflow では task と task の依存関係を設定ファイルに定義し、 buildflow run を実行すると設定ファイルに従って task が実行されます。
これまで自分は CI の DX を改善に取り組んできました。 buildflow を開発したのもその一環です。
buildflow の設定は YAML で記述しますが、一個のファイルで管理しているとメンテナンス性が悪くなります。 サービス A と B の task を同じ build で実行する場合、サービス A とサービス B の設定ファイルを分けることで
といったメリットがあります。
buildflow では幾つかの設定項目で外部ファイルの読み込みをサポートしています。
Tengo スクリプトを記述する設定項目も外部ファイルから読み込むことが出来ます(現状一部できないものもあります)。 そして Tengo スクリプトは拙作の tengo-tester を使うとテストが出来ます。
自作のツール buildflow を導入する上で以下のことを説明します。
このツールはなにか
build pipeline を実行するための CLI ツールです。 Workflow Engine と言ったほうが分かりやすいかもしれません(定義がよく分かりませんが)。 ここでいう build pipeline とは何かというと、 CircleCI や GitHub Actions のような CI サービスのワークフローのようなものと思ってもらえればよいかと思います。 buildflow は CI サービスではないので、ローカルで pipeline が実行されます。 一部の CI サービスでは pipeline のローカル実行をサポートしてたりしますが、そんなイメージで良いかもしれません。 buildflow では task と task の依存関係を設定ファイルに定義し、 buildflow run を実行すると設定ファイルに従って task が実行されます。
なぜ必要か
これまで自分は CI の DX を改善に取り組んできました。 buildflow を開発したのもその一環です。
その他 buildflow の特徴
設定ファイルを分割できる
buildflow の設定は YAML で記述しますが、一個のファイルで管理しているとメンテナンス性が悪くなります。 サービス A と B の task を同じ build で実行する場合、サービス A とサービス B の設定ファイルを分けることで
といったメリットがあります。
buildflow では幾つかの設定項目で外部ファイルの読み込みをサポートしています。
Tengo スクリプトの分割とテスト
Tengo スクリプトを記述する設定項目も外部ファイルから読み込むことが出来ます(現状一部できないものもあります)。 そして Tengo スクリプトは拙作の tengo-tester を使うとテストが出来ます。