お友達、こんにちは。
正直なところ、サーバー上のアプリケーションのバージョンをサポートし、データベースに手を加えて変更するのはもううんざりです。 私はインストールスクリプトを使用します。これは、新しいサーバーの追加やテスター向けの新しい仮想マシンの準備など、さまざまな状況で自分自身に従って編集する必要がある同じプログラムです。 そのようなタスクに対する文明化されたソリューションが何であるかを知りたかった。 ソフトウェア展開プロセスの自動化環境であるSerena Deployment Automation(SDA)での初めての経験を共有したいと思います。5台以下のサーバーで使用する限り、製品は無料です。

SDAを使用すると、次のような操作を自動化および結合できます。
1.さまざまなソースからのソースコードの取得-ファイルシステム、バージョン管理環境(Git、Subversionなど)
2. Jenkins、Apache Mavenなどとの統合によるコード構築
3.アプリケーション全体または個々のコンポーネントの配信およびインストールシナリオのモデリング。 これには、ファイル転送などの単純なタスク、またはデータベース内のデータを更新するスクリプトの実行、IIS、Aphacheおよびその他のWebサーバーへのWebアプリケーションのインストール、さまざまなスクリプトの実行、仮想マシンのスナップショットの削除、テストの実行などのより複雑なタスクが含まれますインストール後など
4.手動および遅延展開の展開、インストールの進行状況の監視、ログの表示。
5.複数の環境でのシリアルまたはパラレルインストール(たとえば、テストと戦闘、または複数の戦闘)。
などなど。 可能性は非常に広範囲です。 絶対にすべての構成がシステムの一般的なWebインターフェースを介して行われることが重要です。
まず、小規模なASPXレポートの展開プロセスを作成します。 このレポートは、MS SQLのデータベースからの情報を提供し、IIS Webサーバーでホストされます。 また、最新バージョンをインストールした後に実行する必要があるデータを更新するためのSQL Updateスクリプトもあります。
Gitリポジトリからコードをセットアップすることから始めましょう。 これを行うには、新しいコンポーネントを作成し、名前を付け、ブランチとGitクライアントへのパスを指定します。

SQLスクリプトは別のリポジトリに保存されます。 同様に、それらのコンポーネントを作成します。
次に、各コンポーネントのインストールプロセスについて説明します。 aspxレポートのインストールプロセスを以下に示します。

最初のステップではすべてのアーティファクト(ファイル)を必要なサーバー上のディレクトリにロードし、2番目のステップではコマンドラインからWebサーバーを再起動します。
さまざまなシステムと対話するために使用可能な操作のリストは、使用するプラグインによって決まります。 SDAの構造には約80個が含まれます。 興味があれば、完全なリストは
こちらにあります 。
別のプロセスで、SQLスクリプトの実行について説明します。 スキームは似ています-スクリプトがサーバーにダウンロードされ、実行されます(sqlcmd経由):

SDAは、これらすべてのアクションをリモートサーバーでどのように実行しますか? さまざまなプラットフォームで利用可能な個別のエージェントプログラムを通じて。 つまり サーバーにSDAエージェントをインストールする必要があります。 これが不可能な場合もあります。 この場合、エージェントの参加なしで展開が行われるとき、いわゆる「エージェントレス」構成が使用されます。 典型的なシナリオ-SSH経由でサーバーに接続し、コマンドラインからコマンドを起動して同じGitからソースファイルを更新し、必要に応じてファイルを必要なフォルダーにコピーし、プロセスを再起動します。 これはイベントの直接的なコースです。 そして、ディスクスペースがあること、すべてのファイルが受信されていること、必要に応じてすべてが適切にコピーされていることなどを確認する必要があるすべての場所。 など また、アクションの後にサーバーをロールバックしてクリーンアップするアクションを提供します。
統合要素は、システムで「アプリケーション」と呼ばれる構成オブジェクトになります。 コンポーネントを作成して、コンポーネントを追加して構成を始めましょう。

次に、環境を構成します(多くのサーバーが存在する可能性があるため、ここでは「環境」という言葉の方が適しています)。

そして最後の1つ。 両方のコンポーネントのインストール手順を組み合わせたプロセス(アプリケーションプロセス)を作成します。

以上で、プロセスを開始しましょう。 展開ステータスをリアルタイムで監視できます。

または、完了後に結果を確認します。

各ステップ内には、実行ログが保存されます。 何か問題が発生した場合、すぐに表示されます。 たとえば、SQL更新スクリプトの実行ログは次のとおりです。

おわりに
これまでのところ、私の例は、アプローチの妥当性を推奨または評価するには単純すぎます。
他に試すこと:
- エージェントなしでオプションを設定するのがどれほど簡単で便利なのか ほとんどの場合、ホストは各アクションの後に必要なすべてのチェックを含めて、SDAエージェントをインストールすることを許可しません
- エラー処理、ロールバック、および以前のバージョンの復元をスクリプトに追加する方法を確認する必要があります
- 展開後にテストを実行してみてください
あなたは美しい写真を見て、メーカーの説明を読んで、これらすべてを
ここからダウンロードでき
ます 。
実際、それだけです。 展開プロセスの自動化のトピックに誰かが興味を持っていることを願っています。 コメントで質問してください。 あなたがそれについてどう思うかはとても興味深いです。