2017-08-07 4 views
1

プロジェクトの展開プロセスを設定し、msbuildの出力をOctoPackでパッケージ化したナゲットパッケージにいくつかの問題があります。プロセスに関するフィードバックを得ることを決めた、私は何か間違っているかもしれない。asp.net mvc + angular 4 + TFS 2013(XAMLビルド)+ octopackの正しい設定は何ですか?

前提条件:角度4フロントエンドとを有する

  • .NET 4.6 asp.netプロジェクト角度-CLIビルドマシンとしてTFS 2013
  • (XAMLビルド付き)ビルド・ツールとして
  • GITのソースコードとして
  • Octopusをデプロイメントフレームワークとして
  • いくつかの環境がありますので、asp.netとfの変換を含むいくつかのWeb設定があります実行するための
    • 事前に作成イベントタグ:または角度-CLI/WebPACKの
    • には、いくつかは、(各環境ごとに1つ)が含まれたプロファイルを公開

      :実行ビルド

プロジェクト構造をNPM

    web_project
    • \資産の画像\
    • typescriptです、htmlとSCSSファイル - -
    • SRC \このフォルダには、プロジェクト/ GITの一部ではありません。これは、角度-CLI/WebPACKのと、コンパイル縮小さとJSバンドル含むコードとCSSファイル
    • \他のファイル(index.htmlに、web.configファイルなど)

ビルドプロセスによって作成されます:

MsbuidはC#コードをコンパイルし、publishコマンドを実行します:JSコードをコンパイルし、すべてをカスタム出力フォルダにコピーします。

MSBuild solution.sln /t:Build /p:DeployOnBuild=true /p:Configuration=development /p:PublishProfile="development" 

このコマンドの出力は、私が(資産フォルダを含む)必要なものがすべて含まれています:私は取ることができ

アプリケーションをビルドを実行して生成するには、私は、次のコマンド(ローカルまたはTFSサーバー上)を実行しますそれをIIS用にコピーします。

今、Octopackを統合したいと思います。私はOctopackのnugetパッケージをインストールし、追加のパラメータ/ Pを追加しました:RunOctoPack =真:

MSBuild solution.sln /t:Build /p:DeployOnBuild=true /p:Configuration=development /p:PublishProfile="development" /p:RunOctoPack=true 

Octopackがnugetパッケージを作成しますが、それは資産フォルダを持っていません。ドキュメントによると、Octopackは\ binフォルダからすべてを取得しますが、Assetsフォルダはobj \ Developmentに存在します。これはソリューションの一部ではありません。このフォルダは、npmビルドタスクを実行するたびに再作成されています。今

質問:

  1. は、プロセスワークフロールックOKをしていますか?
  2. msbuild経由の公開は唯一可能なオプションですか? msbuildをC#でコンパイルし、カスタムcmd/powershellファイルを実行して(npm buildを実行する)、Web configsを変換する他の方法はありますか?
  3. Octopackに他のフォルダを含めるにはどうすればいいですか(私の場合、Assets with compiled JS)?

あなたはnuspecファイルを作成することにより、ファイルを追加するOctopackを伝えることができ、フィードバック

+0

解決方法を見つけましたか?同様の状況で、しかしTeamCity&Octopusで。 – Tom

答えて

0

いただきありがとうございます。そこで

https://octopus.com/docs/packaging-applications/creating-packages/nuget-packages/using-octopack#UsingOctoPack-IncludingadditionalfilesusingaNuSpecfile(.nuspec)

あなたは、パッケージの一部として含まれたいファイルのパス&ディレクトリを追加することができます。

CIサーバーでは、MSビルドプロセスの前にクライアント側でバンドルを行い、ファイルが存在しないようにしたいと考えています。

関連する問題