ホームページ >バックエンド開発 >PHPチュートリアル >複数のプロジェクトのコード管理に関する質問
私は会社の成長に伴い、日々増えていくプロジェクトですが、開発スピードは速くも遅くもありません。最近、ちょっと我慢できなくなってきたので、ドキュメント管理ツール、バグ追跡ツール、より完全なコード管理ソリューションなど、プロジェクト管理の問題を解決する方法を探しています。また、会社の先輩にも連絡しました。多くの企業は自社で開発したソリューションを持っているようです
ここでは主にコードについて説明しますが、状況を理解できない人もいると思います。説明するので、問題がどのように発生したか、そしてそれをどのように解決したかを最も詳細な用語を使用して説明します。一度解決したら、何か問題が発生するまでは決定されません
実際に、プロジェクト 1 があるとします。これは私が最初に行ったことです。SVN を外部サーバー上に作成し、それをローカルでチェックアウトします。ここでは、それをローカルでプロジェクト 1_online と呼びます。その後、プロジェクト 1 のイントラネット SVN が作成され、ローカルでチェックアウトされます。プロジェクト 1 のファイルが開発され、テストは OK になります。その後、この期間中の変更ファイルがプロジェクト 1_online にインポートされ、その後、プロジェクト 1_online のファイルが送信されます。オンラインにすると、変更がオンラインで表示されます。オンラインで問題が発生したら、すぐにプロジェクト 1_オンラインをロールバックします。すべてがうまくいったら、引き続き製品需要開発プロジェクト 1 を受け取ります。プロセス中にオンラインでバグが見つかった場合は、コードをオンラインでロールバックします。 、ローカルでオンライン vhost を作成し、オンラインで送信する前に OK をテストします。その後、この修正されたコードがプロジェクト 1 にマージされ、開発バックボーンも修復されます。これが単一プロジェクトの管理状況です
その後、プロジェクト 2 が追加されました。たとえば、当社の主要なビジネス プロジェクトは、基本的に一度開発すれば、将来的に変更したりアップグレードしたりする必要はほとんどなく、熟練した人が保守を担当します。開発が完了した後、彼は zip パッケージを作成してオンラインに公開しました。そのため、私の対処方法は、それを外部ネットワーク サーバーに直接アップロードし、ファイルを解凍し、データベース構成を変更し、vhost を作成することでした。 、DNS Shenma... 合格しました 数か月後、実際にいくつかの変更が加えられました。彼は解凍できる zip アップグレード パッケージをくれたので、手動で zip をアップロードして解凍しました...
プロジェクト 3 はここにあります。これには SVN を構築する必要があると思います。そのため、オンラインで SVN を構築し、ローカルでチェックアウトします。次に、プロジェクト 1 と同様に、ローカルでプロジェクト 3 も存在します。もちろん、オンラインのものはプロジェクト 3_オンラインとも呼ばれます。開発モードはプロジェクト1と同じです。 このように、プロジェクト4、5、6、7、8...と次々と出てきますが、SVN、authz、passwdを何度も設定するのはかなり面倒です。全員がすべてのプロジェクトに参加する必要はなく、専任の担当者がいる場合もあれば、複数の担当者がいる場合もあれば、すべてを担当する場合もあります。多くの SVN プロジェクトを維持するのは非常に面倒だと感じます。これらを管理するより良い方法はありますか? プロジェクトをプロジェクト リストに簡単に追加して、全員がチェックアウトできるようにコード管理アドレスを生成し、チェック ボックスをドラッグ アンド ドロップして選択することで視覚的に許可を割り当てることができますか? VIM で何度も変更するのは、毎回新しいプロジェクトに SVN を設定するのが面倒で、小さなプロジェクトによっては追加するのが面倒だからです。後からそれらのプロジェクトの更新方法が満足にいかなかったり、プロジェクトを取り消すのが面倒だったからです。バグが出たので仕方なく設定しました〜
考え方を変えますと、実は一つのSVNが一つのプロジェクトに対応しているという非常に原始的なやり方ですが、それを変えて複数のプロジェクトを配下にした方が良いです。ルートディレクトリの下の各サブディレクトリはプロジェクトであり、各プロジェクトにはトランク、タグ、ブランチなどが含まれており、新しいディレクトリを作成したい場合は、autz が権限を割り当て、誰がどのプロジェクトに参加するかを指定します。フォルダーを作成してリポジトリに追加する必要があります。権限の割り当てに関しては、やはり Linux でファイルを編集する必要があります。ただし、これの欠点の 1 つは、個々のプロジェクトが同じ外部ネットワーク サーバーにデプロイされないことです。リモート サーバー用に別の SVN を開く必要がありますか? 私たちの小規模な会社では、数十のプロジェクトに対して 2 つまたは 3 つの外部ネットワーク サーバーを保持できますが、数百または数千のプロジェクトがある大企業ではそうはいきません。
解決策を探していたところ、Jenkins をインストールして試してみました。これまでのところ、定期的な更新ができることだけがわかりました。その後、チュートリアルに従い、最初のプロジェクトがビルドされた後に実行されるフリースタイルのノードを追加しました。これらのコマンドは次のとおりです。少なくとも現時点では、独自のコマンドを作成できれば、これらのコマンドを使用して、このプロジェクトの公開などの操作をカスタマイズできることを意味します。私は主に Windows で作業していますが、bat については知りません。また、Jenkins に関する多くのチュートリアルでは Java プロジェクトが使用されています。例として PHP を使用していますが、完全な例としては使用されていません。さらに、Ant については詳しくないので、PHP プロジェクトを構築できるかどうかはわかりません。)この答えを念頭に置いて何人かの先輩に尋ねると、これはすべて SVN または他のソリューションで処理されているため、ほとんどの企業はそれを使用していないということでした。この種のことは、十分な規模でなくても使用するには複雑すぎますか? 私が間違いを犯しているのではないかと心配なので、ここで具体的に質問しました
しかし、これは私が想像したものです、継続的統合ソフトウェアが使用される場合。プロジェクトはこんな感じで開発・運用する方法になります:
Jenkins上にProject 1ノードを立ち上げ、毎日12時に統合を開始しました。 phpunitのテストスクリプトが実装されています(実はあまり詳しくないのですが、しかし、それをマスターするのは難しくないと思います) (いくつかの章を読んで練習しました)、テストが失敗した場合は電子メールが届き、これらのコードに特定の原因でバグがあることがわかります。これは SVN には代えられないメリットだと思いますが、当然、重要なテストケースを 1 つずつ作成し、誤ってバグに巻き込まれないようにテストする必要があります。構築が完了した後、イントラネットのテストサーバーに公開しました。作成したプロジェクトノードは svn://192.168.1.100/project1/trunk からのものであると想定しており、このtrunkをベースに開発を行っていますが、実際にはそうではありません。 Jenkins についてはまだよく知っていますが (何度も言いますが、実際、Jenkins は同義語として考えることができます。いずれにせよ、管理ソフトウェアを使用します。似たような機能はありますか?)、実際のところ、どうすればよいのかわかりません。それはイントラネット サーバーに公開されます。SVN と同じファイル構造を持つかどうかは、さらに数日かけて調べなければなりません
ファイル構造がまったく同じであると仮定すると、少なくとも可能です。 2 つのビルド ポイント A と B の差分ファイルを見つけて、パッチとしてオンラインでパッケージ化します。問題がある場合は、それをプロジェクト 1_online に投入して、実装用に指定されたバージョンに更新します。 (ただし、大規模なテーブル構造の変更を伴う場合は、コードを撤回するほど単純ではありません。コードを撤回したときにデータベース構造の復元が困難になることを避けるために、開発タスクを詳細に分割してください!? 私はそうします)この考え方に基づいていますが、必ずしも順風満帆に進むわけではないことも承知しています。いつか言及した関数でテーブル構造を大幅に変更する必要があり、後でテーブル構造を復元するのは非常に面倒です。これは現時点では非常にまれな状況なので、アドバイスを求めてください)。会社に複数のプロジェクトがある場合、これらの問題に対処できますか? 私のニーズを満たすために、何か優れた管理方法はありますか?
1. ログの追加、削除、変更、要約に便利です
2 . 更新・退会に便利
3. パーミッションの割り当てに便利 (パーミッションはGitの方が便利と聞きましたが、当分学ぶ気力がありません) まだ3章しか触っていません
4 55 番目の関数が開発され、テスト中は問題ないように見えることもありますが、オンラインになった後は目立たない関数 11 がバグに関係しているため、バグを早期に検出するのに便利です ~
5. 別の関数へのデプロイが簡単です。外部サーバー
私は、さまざまなソリューションを使用した後に状況が「どれほど良くなるか」を大胆に想像しようとしているだけです。私が間違っている場合は、経験に基づいて、Baidu のさまざまな記事で概念が説明されているので、皆さんの意見を共有していただければ幸いです。そして、実際の作業プロセスを使用して問題を解決する手順を説明する人はほとんどいません。おそらく私は理解できないほど愚かです
。
サーバー環境が同じ場合は、1 つを構成し、他を直接コピーする必要があります (jenkins 自動デプロイメント、サーバー監視)
大規模なチームは GIT バージョンのライブラリを推奨します
私が使用している Gitblitこの GIT リポジトリ、JAVA の WEB Web ページ管理は、あなたの要件を満たすことができます
以下は、私がコンパイルし、使用中のプロジェクト管理統合自動監視で使用したいくつかのツールです。
http://blog.csdn.net/fenglailea/article/details/40506245
LNMPS:
LINUX+Nginx+Mysql+PHP+Sphinx
著者: The Wind is Coming. Dumb Fox
1. 標準化
ツール
コード (
ドキュメント
人事
等は統一され一つのフォーマットを使用
2. ツール
jsフレームワーク:Jquery統合jquery版
JQueryアップロードプラグイン:uploadify
JQueryフォーム検証:Validform
ポップアップレイヤー: artDialog
日時プラグイン: My97 DatePicker
リッチテキストエディタ: Baidu Editor UEditor
フロントエンド統合フレームワーク: bootstrap (主にバックエンドに使用します)
PHP バージョン: php5.6. x (opencache 公式サーバー、公式サーバーのテスト環境がオープン)
データベース バージョン: MariaDB 10.0.x (mysql ブランチ)
キャッシュ: memcache
PHP 開発ツール: phpStorm
PHP デバッグ ツール: Xdebug および手動デバッグ
データベース管理ツール:Navicat Premium
ファイルコード比較ツール:BCompare
テキストエディタ:Notepad++
ブラウザ:chrome
データベースモデリング
フローチャート
ローカル開発環境 WIN:upupw suite (全て正式環境と同じものに置き換えます)
開発サーバー環境: lanmps suite プロジェクトの統合テスト環境は正式環境と同じで、エラーログ表示をオンにします
正式サーバーテスト環境: lanmps suite プロジェクトは正式環境にリリースされる前に最後にテストされ、エラーログ表示はオフになります
以下の 3 つはまだ手動の範囲内です
コードインスペクション
ストレステスト
自動テスト
3. 検索
mysql SQL のような検索ではプロジェクトのニーズを満たすことができないため、sphinx- for-chinese
ここでは sphinx が使用されています (中国語は通常 coreseek または sphinx-for-chinese を使用します)
4. バージョン ライブラリ
GIT オープン ソース、無料の分散バージョン管理システム、中国の大規模チーム開発 (私たちが使用しています)
SVN オープンソースバージョン管理システム
5. 自動デプロイメント
jenkins 自動デプロイメント、バックアップ、リカバリを構成するために SVN または GIT とともに使用されます
6. サーバー監視通知
監視ツール (Nagios、Monitoring Treasure など)
通知ツール (Baidu 通知)プラットフォーム)
監視および通知ツールの紹介: http://blog.csdn.net/sylcc_/article/details/40475097
7. プロジェクト管理 (テスト ケース、欠陥の手配、スケジュールの手配など)
jira: プロジェクトトランザクション追跡ツールは、欠陥追跡、顧客サービス、要件収集、プロセス承認、タスク追跡、プロジェクト追跡、アジャイル管理およびその他の作業分野で広く使用されています。
confluence: ブログドキュメントツールと同様に、jira で使用できます
ZenTao プロジェクト管理: 製品管理、プロジェクト管理、品質管理、文書管理、組織管理、トランザクション管理を完全にカバーする、完全に機能するプロジェクト管理ソフトウェアです。プロジェクト管理の中核プロセス
ZenTao を使用します
8. その他の要素
このカテゴリはファンタジーです、
合理的な範囲内での自由な労働時間
快適な作業環境 (独自の作業環境を設計および構成します)
遠くまで見渡すことができます
とても緑
とても美しい
たくさんのアクティビティ (時々アクティビティを企画します。年の初めから終わりまで開発するのは退屈すぎます)
ハハ、私は特に Google や Apple のような企業に期待します
ありがとう、でも私は私が欲しいのは Jenkins に関する具体的な情報です ~ 私は最初、Jenkins がコード管理に使用されるのではなく、反復的な作業を自動化するために使用されることを知りました
Git が SVN を置き換えるなら、そうではないと思いますここの私の小さなチームには適していますが、上司は SVN を変更するという考えに少し抵抗があります