7

コードを開発サーバーから本番サーバーに最適に移動する方法についてのアイデアを聞きたいです。

落とし穴のリスト、このリストをしないでください。

の手順を自動化するのに役立つツール。

  1. これらのファイルのリストを前提として、既存のコードのバックアップを作成します

  2. これらのファイルの開発から本番への展開を記録します

  3. デプロイまたはアプリが何らかの方法で失敗した場合に、より簡単なロールバックを許可します...

私は、開発から本番への非常に手動のftpファイルを除いて、展開プロセスを持っている会社で働いたことがありません。

あなたはあなたの会社や部門などで何をしましたか?

ありがとうございました...

はい、私はColdFusionプログラマーですが、ファイルはファイルであり、これは言語に依存しない質問である必要があります。

4

4 に答える 4

7

OK、噛みます。この問題には技術的な側面がありますが、他の回答ではすでに取り上げています。しかし、本当の問題はプロセスの問題です。真の焦点は、意味のあるソフトウェア開発ライフサイクル(SDLC)(計画、開発、検証、および展開)を確保することです。それぞれを順番に説明します。必要なのは、各フェーズで繰り返し可能なアクティビティです。

計画

何が配信されるかを明確にし、記録します。多くの場合、チケットやユーザーストーリーで十分です。書面による要件文書のように、顧客が承認するより多くのことを行う場合があります。これは、書面によるユースケースなどのさまざまなアーティファクトに変換されます。最終的には、コードへの変更を関連付けることができる電子システムに記録されたものが必要です。 。それは私を導きます...

発達

その電子システムを覚えていますか?良い。これで、コードに変更を加えると(ソース管理を正しく行うのですか?)、それらの変更をこの電子システムの何か(通常はチケット)に関連付けます。私はTracが好きですが、 Atlassianのスイートについても良いことを聞いたことがあります。これにより、トレーサビリティが得られます。したがって、何がどのように行われたかを主張できます。次に、このシステムとソース管理を使用して、ビルド(変更されたものに必要なすべてのビット)を作成し、ソース管理でビルドするタグを作成します。これが変更内容のリストです。さらに良いことに、ビルドにすべてを含めると、それ自体で簡単にデプロイできるスタンドアロンエンティティになります。

検証

おそらく、多くの店が無視する最も重要なステップ-彼ら自身の危険で。本番環境で見つかった欠陥は、プロセスの早い段階で発見された場合よりも修正に費用がかかります。そして、検証は多くの場合、これが多くのショップで発生する唯一のステップです-したがって、あなたがそれを行うことを確認してください。

これはプログラマーが行うべきではありません!それは、狐が鶏舎を見ているようなものです。そして、誰がしているのかは、ある種の計画に従うべきです。TestLinkを使用します。これは、各ビルドが同じ方法で検証されることを意味するため、リグレッションのバグを特定できます。また、このビルドは、本番環境にデプロイするのと同じ方法でデプロイする必要があります。

すべてがうまくいけば(通常、最低3つのビルドが必要です)、ビルドが検証されます。そしてこれは...

展開

テストで行ったのと同じ手順に従って検証済みのビルドを実行しているため、これはイベントではないはずです。最初に、自動コピープロセスがあるステージングサーバーにヒットする可能性がありますが、同じプロセスで検証したため、現時点では問題にならないはずです。

結論

何がどこにあるかを知るという点で、本当に必要なのは、変更をグループ化する論理的な方法です。ここでビルドのアイデアが出てきます。これは、SDLCのステップ間で決定する必要のあるユニットです。すでにそれを持っている場合、特定のシステムの状態を理解する能力は取るに足らないものになります。

于 2011-02-15T18:31:09.957 に答える
1

AntまたはMavenをチェックしてください-これらはJavaの世界で使用されているビルドおよびデプロイメントツールであり、ファイルのコピー/ ftp、バックアップ、さらにはSVNからのコードのチェックアウトに役立ちます。

これらのツールを使用してデプロイメント手順を自動化できます。たとえば、Antを使用すると、デプロイメントの一部として一連のタスクを宣言できます。したがって、たとえば、次のようになります。

  1. SVNAntまたは同様のディレクトリを使用してリビジョンをチェックアウトします
  2. これらのファイルをバックアップディレクトリにコピーします(おそらく最初にzipします)。
  3. すべてのファイルをWebサーバーにFTPで転送します
  4. 展開を説明するレポートを作成してチームに電子メールで送信する

実際、Antの使用に時間をかけたいと思うほとんどすべてのことができます。Mavenはもう少し構造化されており(そしてより新しい)、ここで違いの説明を見ることができます。

お役に立てば幸いです。

于 2011-02-15T15:20:27.733 に答える
1

一言で言えば...

ソース管理ソリューション(おそらくSubversionまたはGit)から始める必要があります。それが整ったら、ソースコードのクリーンビルドを生成して本番サーバーにデプロイするスクリプトを作成できます。

これは、単純なバッチスクリプトを使用して行うことも、Antなどを使用してより詳細に制御することもできます。Subversionを使用したバッチファイルの簡単な例を次に示します。

svn copy svn://path/to/your/project/trunk -r HEAD svn://path/to/your/project/tags/%version%
svn checkout svn://path/to/your/project/trunk -r HEAD //path/to/target/directory

Antを使用すると、単体テストの自動実行やディレクトリの同期などを簡単に実行できます。例えば:

<sync todir="//path/to/target/directory" includeEmptyDirs="true" overwrite="true">
  <fileset dir="${basedir}">
    <exclude name="**/*.svn"/>
    <exclude name="**/test/"/>
  </fileset>
</sync>

これは実際には出発点にすぎません。次のステップは、 Hudsonのような継続的インテグレーションソリューションかもしれません。また、「実用的なプロジェクトの自動化:Javaアプリケーションを構築、デプロイ、および監視する方法」を読むことをお勧めします。

ColdFusion固有の落とし穴の1つは、必要に応じてアプリケーションスコープをクリアすることです(シングルトンコンポーネントを更新するため)。ここでの一般的なアプローチは、onRequestStart()がonApplicationStart()を呼び出すようにするURLパラメーターを使用することです。信頼できるキャッシュをクリアする必要がある場合もあります。

于 2011-02-15T15:34:08.577 に答える
0

AnthillProと呼ばれるシステムを使用しています:http ://www.anthillpro.com

商用ソフトウェアですが、複数のサーバーとオペレーティングシステム間での展開プロセスを完全に自動化できます(現在、ColdFusionとJavaの両方で使用していますが、ほとんどの言語で使用できます。サードパーティとの統合が多数あります。

http://www.anthillpro.com/html/products/anthillpro/tool-integrations.html

于 2011-02-15T16:38:19.543 に答える