7

Teamcity を使用して、QA 環境へのデプロイを自動化 (シングルクリック) しています。現時点ではコンテンツ アイテムが展開されていますが、QA 担当者はサイトの再公開を手動で開始する必要があります。

TDS、Sitecore Rocks、または ANOther ツールのいずれかを使用して、デプロイ プロセスの最後に再公開を自動化する方法はありますか。

x 分ごとに自動的に公開するように Sitecore を構成できることはわかっていますが、QA も負荷テストを実行し、スケジューラーが邪魔をしないようにするため、非アクティブのままにしておくことをお勧めします。

4

3 に答える 3

10

これは、発行をトリガーする毎日のビルドおよび QA Web サイトに ASPX を設定することで実現しました。ビルドには、これをトリガーする Powershell 呼び出しがあります。これは、CruiseControl、TeamCity、Team Build で実現しました。

TeamCity 構成

TeamCity の構成では、ファイルと TDS をデプロイした後、追加のビルド ステップを使用します。

  1. ランナーの種類: Powershell
  2. ステップ名: Web DB への公開のトリガー
  3. Powershell 実行モード: x64
  4. 作業ディレクトリ: [値なし]
  5. スクリプト:ソースコード
  6. スクリプト ソース:

    $r = [System.Net.WebRequest]::Create('http://myqasite/SomePath/Publish.aspx'); $resp = $r.GetResponse();

  7. スクリプト実行モード: 「-Command -」引数を使用してスクリプトを Powershell stdin に入れます

パブリッシュ.aspx

発行ページのコードは次のようなものです。

    string full = Request.QueryString["full"];

    // Set up the publish mode
    PublishMode publishMode = PublishMode.Smart;
    if (!string.IsNullOrWhiteSpace(full) && (full == "1" || full.Equals("true", StringComparison.InvariantCultureIgnoreCase)) ) {
        publishMode = PublishMode.Full;
    }

    using (new Sitecore.SecurityModel.SecurityDisabler()) {
        //We need the target database
        var webDb = Sitecore.Configuration.Factory.GetDatabase("web");

        //source db
        var masterDb = Sitecore.Configuration.Factory.GetDatabase("master");

        try {
            foreach (Language language in masterDb.Languages) {
                //loops on the languages and do a full republish on the whole sitecore content tree
                var options = new PublishOptions(masterDb, webDb, publishMode, language, DateTime.Now)
                              {RootItem = masterDb.Items["/sitecore"], RepublishAll = true, Deep = true};
                        var myPublisher = new Publisher(options);
                        myPublisher.Publish();
            }
        }
        catch (Exception ex) {
            Sitecore.Diagnostics.Log.Error("Could not publish the master database to the web", ex);
        }

    }
于 2012-10-15T13:49:37.697 に答える
7

答えを待っている間、私はツイッターで質問を共有しました.これはスティーブン・ポープによって指導の手を与えられまし.私は望んでいた結果を達成しました:)

私が見つけたものの記録として、私自身の質問に対する潜在的な回答として以下が提供されていますが、これがなかったら私が使用していた解決策である Jay S に大いに感謝しています..

とにかく.. Teamcity ビルドで追加のビルドステップを使用すると、次のようになります。

  • ランナーの種類:パワーシェル
  • ステップ名:サイトを公開する
  • Powershell 実行モード: x64
  • スクリプト:ソースコード
  • スクリプト実行モード: "-Command -" 引数を使用してスクリプトを powershell stdin に入れます
  • 追加のコマンド ライン パラメーター: -ExecutionPolicy Unrestricted
  • スクリプト ソース:

    import-module '.\build-modules\sitecore\sitecore.psd1';
    new-psdrive -name "rocks" -psp SitecoreRocks -root "" -host "%QA.Url%" -usr "%QA.sitecore.user%" -pwd "%QA.sitecore.password%" -databasename "master " -scope "スクリプト";
    set-location rocks:
    Publish-SCDatabase;

Get-Help を実行すると一連のパラメータが表示される Publish-SCDatabase コマンドレット内で魔法が起こります。使用できるパラメータは-Name-Modeの 2 つだけであることがわかります。

上記の vs-plugins リンク以外のドキュメントを見つけることは不可能だったので、少し .net リフレクションとかなりの忍耐力で、パラメーターに次のオプションがあることがわかりました。

  • -Nameパブリッシュを実行するデータベースの名前 (デフォルトは psdrive データベースです)
  • -Mode コマンドレットの発行モードを設定し、次のオプションを使用できます。
    • 0: 再公開
    • 1: インクリメンタル
    • 2: スマート
    • 3: 再構築

もちろん、より良いドキュメントと、Get-Help コマンドレットを介した追加情報があるとよいでしょう。rocks プロジェクトがオープン ソースである場合、プロジェクトをフォークして追加のヘルプを生成した可能性があります。

この質問には 2 つの非常に優れた解決策があるので、人々の投票でどちらが最良の回答かを決定します。数日後に投票を確認し、最も投票数の多かった回答を承認済みの回答としてマークします。

于 2012-10-16T11:14:12.430 に答える