ワンステップでビルドを作成できますか?


14

ジョエルテストから:

ワンステップでビルドを作成できますか?

私にはできないと言わざるを得ない。現在、展開するために実行する必要があるアイテムのスプレッドシートリストがあるWebアプリで作業しています。だから私の質問はこれをどのように自動化できますか?組織全体である必要がありますか?ヒント/テクニック?


3
リスト内のアイテムが何であるかによりますか?理想的には、はい、それを自動化できるはずです。
誰も

4
ja.wikipedia.org/wiki/Build_automation BTW:いくつかのステップは1つにすぎます:)
Mchl

すべての並べ替え-ファイルの移動、ストアドプロシージャのスクリプト化など-14の手順があります!
billy.bob

2
異なる角度から見ると、自動化できないとリストにあると思いますか?
ティアナ

1
ビルドを自動化する方法の問題は主観的なものではなく、Stack Overflowで質問する必要があります。質問には、有用な回答を得るために必要なタスクに関する詳細情報も含まれている必要があります。
デビッドソーンリー

回答:


10

makeは、ビルドプロセスを1つのステップに自動化できます。Makeは、あなたが望むものをほとんど実行できます。MakeがC / C ++にのみ適用されるとsapporoが考える理由がわかりません。makeを使用して、任意のタイプのコマンドを実行できます。プログラミングに結び付けられることすらありませんが、それが通常使用されるものです。


2
makeは、「スイスアーミーナイフ」の一種のツールの1つです。それで働くことが大好きです。makeが役立つ場所を指摘する他のことは、ビルド/プロセス/などを自動化している場合、1つ以上のステップが別のステップが正常に完了することに依存している場合、そのステップが失敗するとmakeは停止し、他のステップを続行できないことです。問題を引き起こす可能性があります。
ウィル

1
多くの 'nixアプリ/システムは' ./configureでインストールされるため、作る; make install 'makeはインストールエンジンとしても機能すると思います。それができれば、OPの困惑を解決できると確信しています。
JBRウィルキンソン

Makeですが、構文はかなりあいまいです。これまでに、SCons(Make + makedependよりもはるかに簡単)とMakefileの作成を自動化するツール(独自仕様)の2つの選択肢がありました。
マチューM.

@JbRWilkinson ... makeがあなたが望むものはほとんど何でもできると言ったように;)
Pemdas

3

ご使用の環境によっては、Make(C / C ++)、Ant / Maven(Java)、Gradle(Groovy)をご覧ください。これは私がよく知っているものです。あなたの環境に人気のあるソリューションがある可能性は高いです。


ASP.NET / SQL環境
-billy.bob

@ m.edmondson -その後、cruisecontrol.sourceforge.netおそらくあなたの進むべき道である
bobah

ASP.NETのもう1つの優れた継続的統合環境は、TeamCityです。CruiseControlとTeamCityで使用しましたが、TeamCityの方が使いやすく、強力であることがわかりました。しかし、もはやそうではないかもしれません。
RationalGeek

NANTは.NET ANTバリアントであり、Cruise Controlを補完するものとして使用します。これは、いくつかの追加のものを含めたり、調整したり、パラメーターを設定したり変更したりする必要がある傾向があるデプロイメント用のコードをビルドするのには使用しません。それがANT / NANTが得意なことです。
ジョンホプキンス

2番目の@Jon Hopkindsの提案-nantは環境に最適です。
JBRウィルキンソン


0

確かにこれを自動化する方法があります。Chefなどのツールを使用すると、新しくインストールしたばかりのサーバーを簡単にセットアップできます。

knife bootstrap ip.address -N aNameForTheServer -r "role[some functionality]"

私の場合、その単一のコマンドによって実行されるいくつかのステップは次のとおりです。

  • 必要なライブラリ、プログラム、Pythonモジュールをインストールする
  • 指定されたアクセス権限を持つ新しいユーザーを作成します
  • 新しいデータベースの作成、必要なスキーマのロード、所有権とアクセス権の設定
  • プロジェクトコードをダウンロードしてステージングし、構成情報を書き出す
  • データベースサーバーの起動、cronジョブのセットアップなどにより、すべてを運用モードにします。

Windowsのサポートが「予備」としてリストされているため、Chefが環境でどのように機能するかはわかりませんが、UNIXベースのシステムの場合、それはミツバチです。

Puppetは、chefよりも少し古い同様のシステムであり、Windowsのサポートが向上する可能性があります。


0

Javaの世界でMavenを使用するのは簡単です

mvn clean deploy

構成では、これにより、必要なすべてのWARファイルの構築(必要に応じてJAR依存関係をプル)、dev Webサーバーへの展開、およびdevデータベースでの缶詰のテストデータの作成を行います。それが導入されると、MavenはSeleniumRCを通じて包括的な機能テストを処理し、アプリケーションが機能することを検証します。

この単一のコマンドにより、アプリケーションが開発サーバークラスターに完全にデプロイされるため、他の開発者がすぐに作業できるようになります(テストに合格した場合)。開発者がを使用してローカルで動作することを確認したため、開発者のデプロイメントが失敗することはまれですmvn clean install

スナップショットアーティファクト(WAR)は、他の開発者と共有するためにMavenリポジトリにコピーされます(標準のMavenのdeploy動作に従って)。

わかりましたが、開発者にはスナップショットのみを展開しましたが、テストと運用はどうですか?

テストサーバーと(後の)本番サーバーへの配布は、誰かが疑わしい出力を監視していることを確認するために手動で処理するMavenリリースプロセスを通じて処理されます。テスターは、スナップショットではなく、リリースされたアーティファクトでのみ動作します。

リリースされると、単純なビルドスクリプトを使用してWARファイルをテストサーバークラスターにSFTPで送信し、再びプロセスを監視して問題が発生しないことを確認します。

最後に、すべてのテスターが満足したら、変更されていないWARファイルがフェールオーバー実稼働サーバークラスターにSFTPされ、誰かが災害に備えて注視し、すぐにロールバックします。


0

ジョエルのテストでそれをチェックできると思ったので...

pythonでビルドサーバーを作成し、pychronを使用して自動化しました

コードはコマンドラインからVSSと同期され、borland makeでビルドされます(ほとんどのIDEは、それを呼び出すかどうかに関係なくmakeファイルを作成します。Delphiはmakeファイルをポンプアウトして.BPGファイルを呼び出すようになりました。 MSBuild XMLファイルを再作成すると、MSBuildを使用できます)、エラーは追加したばかりのXMLファイルに格納されました。

だから..バッチファイルを書いて、これらのことをしてください。

  1. ソース管理からコードを同期する
  2. ダムのもの(プロジェクトの個々の設定ファイル)を削除すると、すべてをビルドできなくなることがわかります。
  3. すべてをビルドします(すべてをビルドし、すべてを兄弟にします)。
  4. エラーや警告などを記録しますが、構築を停止しないでください。(あなたが本当に賢いなら、ビルドを壊し、彼にナスティグラムを送ったファイルをチェックインする最後の人の名前を抽出します)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.