92283


Rubyのようなスクリプト言語において、ビルドとは具体的にどのようなことをするのでしょうか？  
ここでいうビルドは、CI/CDパイプラインに組み込まれるようなものを想定しています。

なお、JavaやGolangのようなコンパイル言語におけるビルドは、ソースコードから実行ファイルを生成することだと理解しています。


CC BY-SA 4.0
2022-11-16T14:14:23.197
92264
2022-11-17T13:09:56.840
41605
question
build
スクリプト言語におけるビルドとは


少なくともオイラ個人は「スクリプトをビルドする」という表現は `configure.ac` から `configure` を作るとか
`CMakeLists.txt` から `Makefile`
を作るとかの状況で使います。自分で何かのスクリプトを手書きする場合には「ビルドする」とは呼ばないです。

> CI/CDパイプラインに組み込まれる

それはデプロイというのでは？あるいは Jenkins みたいなやつの話？詳細というか意図というかがつかみにくいです。


CC BY-SA 4.0
2022-11-17T00:36:38.517
92269
2022-11-17T00:36:38.517
8589
92264
answer


CI/CDの中に現れる【ビルド】と書かれている部分をどのように考えるかによるかと思います。

GitHubのドキュメントのCIの説明の後に各言語でのCIの書き方の例が載っていますので、それを参考にしながら見ていきます。  
<https://docs.github.com/ja/actions/automating-builds-and-tests/about-
continuous-integration>

各ステップの名前に"Build"とはっきりあるのはGo、Java、.NET、Swift、Xamarin
appで、これらは実際にコンパイルするところで"Build"となっています。逆に、Node.js、PowerShell、Python、Rubyの通常の例には名前に"Build"は見られません。ただ、いくつかの例でコメントや実行コマンドに"build"の文字が見られます。

  * Node.jsで"npm run build"が存在すれば実行している。これは、AltJSをトランスパイルする場合を想定しているようです。
  * PythonとRubyでパッケージを作成する例では、コメントやコマンドに"build"の文字が見られます。

つまり、通常の実行において、コンパイルの必要が無いスクリプト言語では「ビルド」という課程は存在しないと考えられます。しかし、AltJSのトランスパイルや、最終生成物であるパッケージの作成という所は「ビルド」と言ってもいいでしょう。

さて、これまでのものは一般的に「ビルド」と言われる処理の事です。○○と言う言語にとっての「ビルド」というよりも、「コンパイル」「トランスパイル」「パッケージ生成」「インストーラー生成」と言った処理を総称して「ビルド」と言っているだけにすぎません。それではCI/CDでのとっての"ビルド"はまた違う物だと思います。

私の勝手な解釈であれば"テスト"の前の全ての工程だと思います。Githubの例であれば、最後のテストのステップの前にある必要な全ての工程が"ビルド"だと考えられます。言語やアプリにより多くの違いはありますが、だいたい次のような物です。

  * ソースコードのチェックアウト
  * 言語環境(コンパイラーやインタプリンター)のセットアップ
  * DB等の必要なサービスのセットアップ
  * 依存しているライブラリやパッケージのインストール(OSのパッケージの場合もあれば、その言語のパッケージの場合もある)
  * コンパイルやトランスパイル
  * パッケージ化やインストーラー生成
  * アプリの初期化処理

とにかく"テスト"または"デプロイ"をする前に必要なものが全てを"ビルド"と言っていいのでは無いでしょうか？もしコンパイルなどだけを"ビルド"と言ってしまうと、それ以外の物は"ビルド"→"テスト"→"デプロイ"の枠組みのどこに入るのだろうとなってしまいます。

実際の所、ステップ自体がそんなにはっきり分かれているようにはないようです。GitHubのJavaの例をみるとantやgradleでコンパイルとテストをまとめてやっているようです。CI/CDは"ビルド"→"テスト"→"デプロイ"という流れであるというのいいとしても、それが厳密にわかれたステップになっていると言うより、そういう要素で構成された一連の流れであると柔軟に理解した方が良いかと思います。


CC BY-SA 4.0
2022-11-17T13:09:56.840
92283
2022-11-17T13:09:56.840
7347
92264
answer