web-dev-qa-db-ja.com

自動デプロイメントPHP CI環境で(Jenkins)

私は現在、小規模な開発者チームで共有されるプロジェクトのための強力なCIとデプロイメント環境のセットアップを検討しています。目的は、物事がテストされる方法、全体的なコード品質、および展開が行われる方法に一定の一貫性をもたらすことです。

Jenkins、Sonar、Maven、Capistrano、Ping、ANTなどについて読みました。正直に言うと、これらすべてのツール/テクノロジーの真ん中で迷子になっています。私の理解を検証して、これを達成するための最良の方法についての洞察。

私が今までに設定したこと:

  • Git:バージョン管理システムとしてgitを使用しており、CIツールで分析する必要のあるすべての新しい開発用にブランチ「開発」があります。
  • Jenkins:Jenkinsは(開発ブランチ上の)GITフックによってトリガーされ、[〜#〜] phing [〜#〜]以下のアクションを実行するスクリプトを実行します:

    • Lint:検証PHPコード実行、コードアナライザー
    • PHPLoc:PHPコード(複雑さ、依存性など)に関する統計を取得します。)
    • PDepend:コード分析(PHPLocとの違いについては不明)
    • phpmd:混乱検出器(未使用のパラメーター、複雑なコード...)
    • phpcpd:コピーペーストコードの検出
    • PHPcs:コーディング標準の検証
    • Phpdox:PHPドキュメントを生成
    • Php_Codebrowser:PHPコードのブラウズ可能な表現を生成し、違反のハイライトを表示...
    • PHPUnit:PHPテストを実行

    その後、Jenkinsはすべてのレポート/データをSonarに送信して、sonnar-runnerを歌っています。

  • ソナーは、これらすべてのデータを収集し、データベースに格納します。これにより、アプリケーションコードの経時変化を分析する方法が提供されます。また、Jenkinsよりも優れた方法で情報を表示します。

不足しているブロック

  • QAへの自動デプロイメント:(テストの成功に基づいて)ビルドスクリプトが成功したときに、QA envへのデプロイメントを自動化したいと思います。これにより、QAで適切なデータを取得するプロセス、DBに変更を加えるプロセス、および潜在的なファイル/フォルダーのクリーンアップと権限の設定がトリガーされます。
  • PRODへの展開の自動化:これは上記と同じことを行いますが、masterブランチに基づいています。また、展開後に、そのPROD envで別のラウンドのテストを追加する必要があります。

ツールのレビュー

  • Git:これを説明する必要はありません。バージョン管理がすべてです
  • Jenkins:ビルドを自動化するCIツール(コード検証+テスト)
  • ソナー:レポートツール(ビルドデータを経時的に視覚化)
  • Maven:これについては不明です。展開に欠けている部分ですか?または、他のレポートツールですか?
  • Capistrano:展開ツール

あなたの入力:-)

  • CIの私の全体的なセットアップに関するあなたのポイント(それは理にかなっています、私は適切なツールを使用していますか?)
  • あなたの経験から、導入に最適なツールは何ですか?
  • Jenkinsはこの全体的なCI /デプロイメントスキーマの「ディスパッチャー」の一種なので、デプロイメントをトリガーするものでもありますか?はいの場合、ビルドのステータス(成功/失敗)に基づいていくつかのアクションをトリガーできると思いますか?

あなたの時間と助けに感謝します!

20
LEM01

全体的に良さそうです。私は個人的にソナー(しかしそれを知っている)またはカピストラーノ(これを聞いたことさえない)を使用していないので、それらについてコメントすることはできません。

Mavenは、主にJavaプロジェクトの依存関係、ビルド、およびデプロイメントツールです。すでにJenkinsで「ビルド」を処理しているので、Mavenについて心配する必要はありません。

デプロイに関しては、Jenkinsビルドをデプロイする方法を非常に 詳細な説明はこちら で記述しました。 Jenkinsはデプロイメントを完全に行うことができるので、別のツールをミックスに追加しようとするのはなぜですか?必要なのは、PHPファイル(ビルドジョブの一部としてそれらを圧縮することをお勧めします)およびコピー/デプロイするためのbash(または環境に応じてバッチ)スクリプトです。それらはリモートサーバー上にあります。

より具体的な質問がある場合は、質問してください。

5
Slav

私が知る限り、自動展開用のサービスはいくつかあり、それらの設定ははるかに簡単です。そのため、たとえば、Dropboxに統合して、少数の開発者が作業している場合でも、コードをrepos/liveに自動的にデプロイできます。例: http://unbouncepages.com/the-magicbox/

0
AlexKri