現在、私たちのオフィスでビルド サーバーをセットアップしています。状況ごとに異なるアプローチが必要であり、同じ目標を達成する方法は無数にあることはわかっていますが、私は Jenkins の新参者であり、サーバー構築の一般的な概念であるため、これを正しく行っているかどうか疑問に思っていました。 '。
当社は、WordPress や Magento などのさまざまなプラットフォームを使用して、さまざまなクライアント向けの Web サイトを構築することに重点を置いています。私は今、次のセットアップを持っています:
変更を Git のマスターまたはステージング ブランチにプッシュします。Jenkins はこれらのブランチをポーリングし、変更が検出されると次のことを行います。
- Git からリポジトリをプルします (
master
この例では) - というブランチをチェックアウトします
build-master
- このブランチをリセットします
origin/master
- aが見つかった
npm install
場合に aを実行します。package.json
- aが見つかった
grunt build
場合に aを実行します。Gruntfile.js
- (ここには phpunit や casperJS テストなどの他のものを入れる余地があります)
- 変更をコミットして にプッシュバックし
origin/build-master
ます。 - a を実行し
cap build-master deploy
て、Capistrano がリモート サーバーでの展開を処理できるようにします。
これがビルドサーバーを使用する「正しい」方法であるかどうか疑問に思っていました。いくつかの論理的な問題に遭遇しました。お気に入り:
たとえば、ベンダー ソフトウェア。たとえば、Bower を使用したさまざまな JS ライブラリ (git-ignored js/vendor
-folder にある) がある場合、それらを連結して縮小された JS ファイルに醜くし、build-master
リポジトリ (Capistrano 用) に git commit することができます。しかし、PHP ライブラリ (Composer など) を使用している場合、これに対処する方法がわかりません。これらは git-ignored -folder にありますが、ライブサーバーにデプロイさphp/vendor
れるように -branch に含める必要があります。build-master
現在、 -folder.gitignore.build
を含むリポジトリに を追加することでこれを行っており、コミットして にプッシュする前に、既存のものをこれで上書きします。php/vendor
.gitignore
origin/build-master
および/または:
コンパイル済みファイル。一部のファイル (たとえば、SASS から生成された CSS ファイルなど) を含めたくない場合は、これらを.gitignore
. しかし、繰り返しになりますが、Capistrano がデプロイするときは、コンパイルされ、連結され、縮小された CSS ファイルをリポジトリに入れたいと思います。そうしないと、プロダクション サーバーに置かれません。
「あるべき」方法で構築および展開しているかどうか、誰か教えてもらえますか? それとも、私はここでそれを完全に複雑にしすぎていますか? これについてより多くの経験を持つ人々が、ビルドプロセスで Jenkins、Grunt、Bower、Composer、Capistrano などをどのように利用しているかに非常に興味があります。