ビルド後にサイトを安全に公開する最善の方法は何ですか?
-
09-06-2019 - |
質問
それで、あなたの経験から考えると、最善の方法は何ですか?ビルド自動化ツールでもスクリプト化/トリガーできる安全な方法はありますか?
編集:これは Windows/.net であり、iis6 にデプロイする予定であることに注意してください。
解決
私が使用するいくつかのプロジェクトでは カピストラーノ 生きるために押し出すこと。Ruby 上に構築されており、デプロイ スクリプトの記述が非常に簡単になり、ssh を使用します。
他のプロジェクトでは、bash を使用して svn エクスポートを一時ディレクトリに実行し、それをライブサーバーに rsync する小さなデプロイアプリがあります。rsync に ssh を使用させることができます。
プロジェクトが Ruby/Rails でなくても、私は Capistrano メソッドを非常に好みます。
他のヒント
@ニール、追加します set -e
2 行目は、ライブ サイトが置き換えられることを望まないためです。 rsync
何らかの理由で失敗します。 set -e
いずれかのコマンドが失敗した場合、スクリプトは終了します。
編集:の set -e
スクリプトの直後の最初に置く必要があります #!/bin/bash
.
ライブ サイト ディレクトリのコピーを作成し、次を使用します。 rsync そのコピーを最新バージョンで更新するには、ライブ ディレクトリと更新されたディレクトリの名前を変更して、更新されたバージョンがライブになるようにします。
bash の場合:
#!/bin/bash
set -e
cp -R /var/livesite /var/newversion
rsync user@devserver:/var/readytogolive /var/newversion
mv /var/livesite /var/oldlivesite
mv /var/newversion /var/livesite
ビオラ!
編集:@Ted Percival - それは良いアイデアですね。「set -e」についても知りませんでした。スクリプトを更新しました。編集:Ted の提案で再び更新されました (ただし、何らかの理由で cp コマンドが失敗した場合でも機能すると思いますが、cp が失敗した場合は、おそらくより深刻な問題が発生します)。
ソースで暗号化してファイルをプッシュし、宛先で復号化する小さなクライアント/サーバー アプリをいつでも作成できます。それは少しの作業ですが、おそらくわずかな量です。そして、自動化ツールがファイル システム内での実行をサポートしている限り (すべてのツールでサポートされていると思います)、スクリプト化可能です。
唯一の欠点は、統合環境での失敗時に、もう少し作業を行わないと、意味のあるエラー メッセージを取得できない可能性があることです (ただし、設定によっては、エラー メッセージを標準出力に送信するだけで済む場合もあります)。
うーん、ここではライブ環境でのテスト目的でステージング「サーバー」を使用しています (実際には、本番サーバー上の Apache 仮想ホストです)。 araxis マージ (非常にスマートな行ごとのファイル比較ツール) を使用して、開発とステージングを同期します。
一度テストしたら、ただ;実稼働ウェブルート上のファイルを置き換えます:)
/mp
私がフリーランスで働いていたとき、私たちは 3 つの異なる環境をセットアップしました。
- 実行された開発サーバーは、CruiseControl を使用してビルドを続行します。チェックインするとビルドがトリガーされます。QAテストはここで行われました。
- ユーザー受け入れテストが行われたテスト サーバー。
- 生産。
ワークフローは次のとおりでした。
- 開発者は変更を SourceControl にチェックインします。
- CruiseControl がビルドし、そのビルドを開発者にデプロイします。
- 開発者は QA を受けています
- QA に合格した後、Dev ビルドを Test にデプロイする robocopy スクリプトが実行されます。
- テストは UAT で行われます
- テストに合格すると、テストを PRD にデプロイする robocopy スクリプトが実行されます。