build自動化とは?
build自動化とは、スクリプトとツールを使って、手動のステップなしに毎回同じ方法でソースコードを実行可能なartifactに変えることです。
自動化以前は、ソフトウェアのbuildとは、人がコマンドの列を実行し、それらすべてを覚えていることを願うことを意味していました。build自動化はそれらのステップをスクリプトに取り込み、buildを速く、再現可能で、どのマシンでも同一にします。
何をカバーするか
build自動化は、生のソースコードからdeploy可能な出力までのすべてを扱います。依存関係の取得、コードのコンパイルやトランスパイル、アセットのバンドル、そして結果のパッケージ化です。同じコマンドが、ノートPCで実行されてもCI runnerで実行されても同じartifactを生成します。
buildツールの仕組み
buildツールは、ターゲットとその依存関係を宣言した設定ファイルを読み、それらを実行する正しい順序を割り出します。多くのツールは中間結果をcacheするため、変更されていない部分は再buildされず、繰り返しのbuildが速く保たれます。いずれかのステップが失敗するとツールは非ゼロで終了し、これによってCIはbuildが壊れたことを知ります。
実例
A scripted build in three commands
npm ci # install exact dependency versions
npm run build # compile and bundle
npm test # verify the buildなぜCI/CDを支えるのか
継続的インテグレーションは自動buildなしには存在できません。CI serverはソフトウェアを生成し検証するための単一の信頼できるコマンドを必要とします。自動化はまた、"自分のマシンでは動く"という予期せぬ問題を取り除きます。CIを含む全員がまったく同じステップを実行するからです。再現可能なbuildは、他のすべてが立脚する基盤です。
良い実践
- 再現性のためにlockfileで依存関係のバージョンを固定します。
- buildを単一のコマンドで実行可能にします。
- いかなるエラーでも、大きく早く失敗させます。
- 安定したステップをcacheしてbuildを速く保ちます。
重要なポイント
- build自動化はソースからartifactまでの道筋をスクリプト化します。
- buildをマシン間で再現可能かつ同一にします。
- 信頼できる自動buildはCI/CDの基盤です。
関連ガイド
What Is a Build in Software?What is a build? A beginner explainer on turning source code into runnable software, what a build produces, a…
What Is CI/CD? A Beginner-Friendly ExplanationCI/CD explained for beginners: what continuous integration and continuous delivery mean, how the pipeline wor…
What Is a Build Artifact?What is a build artifact? Learn what artifacts are, how they are produced and reused, examples, and why "buil…
What Is a CI Server?What is a CI server? Learn what a continuous integration server does, how it coordinates builds and runners,…