2017-05-23 8 views
0

ここでこれを尋ねるべきか、ServerFaultで尋ねるべきかわかりませんが、問題が見つかったときに本番用パッチを簡単に作る方法をまとめようとしています。 私たちはいくつかのWebサイトを1つのgit depoに持っていますが、今はTeamCityサーバーを使って各Webサイトの.nupkgを構築し、デベロッパー、UAT、本番サーバーへのパブリッシュを処理するOctopusにプッシュします。3つの異なるブランチから.Netウェブサイトを展開する

私は、TeamCityを別のブランチからビルドしてタコにプッシュしようとしていましたが、このタイプのアーキテクチャを処理するにはTeamCityとOctopusごとに3つのプロジェクトが必要です。

達成したいことを処理するためのより良い方法があるかどうかを知りたいと思います。

更新:これはもう少し説明が必要かもしれません。すべてのウェブサイトに1つのレポがあります。これがこれほど悪くて、これは今のところであり、私たちは今それを実際に変更することはできません。しかし、私は.NetとDev/UAT/masterブランチ戦略を使用している人々からの洞察を望んでいました。

+0

異なるプロジェクトでブランチではなく異なるリポジトリを使用する –

答えて

1

いつもより良い方法がありますが、あなたが求めているのは何らかの作業が必要です。私が似たようなシナリオをどのように処理しているかは次のとおり私の場合、単一のアプリケーションがすべて単一のGitリポジトリの下にありますが、Gitブランチに基づいて別のWebサイトにアプリケーションをデプロイします。だからここに私はこれを設定している方法です:

前提条件:

PowerShellの

PSake - PowerHhellは、.NETアプリケーションのためのフレームワークを構築

  1. 私はPsakeのビルドファイルを持っていますそれは各ブランチに存在し、コマンドラインからローカルに実行できますが、TeamCityでもビルドを実行するために使用されます。ビルドファイルはブランチの名前をパラメータとして取り、ブランチの名前を使ってソリューションをビルドしてパッケージ化し、NuGetパッケージのパッケージIDを作成します。たとえば、私のブランチが "feat-API"と呼ばれる場合、私は "feat-"を取り除き、NuGetパッケージIDは "api.myapp.com"になり、NuGetパッケージがビルドされると "api.myapp.com -2017.05.26.nupkg "
  2. パッケージがビルドされると、OctopusDeployサーバー上のNuGetフィードにプッシュされますが、実際にはリリースは実行されません。
  3. 次のステップは、PSakeビルドスクリプトがOctopus APIを呼び出し、新しいリリースをトリガーして、パッケージのIDをパラメータとして渡します。
  4. Octopus Deployエンドでは、パラメータを取るカスタムステップテンプレートを使用して1つのプロジェクトが作成されています。パッケージIDを今すぐ推測しておく必要があります。
  5. これを実際に動作させるには、パッケージに実際の展開が含まれている必要があります。私はChocolatey(ソースのNuGetの拡張版)を使用しています.NuGet/ChocolateyはPowerShellだけであるため、パッケージ内のインストールスクリプトは実際の展開を処理します。それは、など、それが実行しているれているタコ環境をパラメータとして、取るそれは設定ファイルや環境、特定のファイルから展開を行うために必要な値を構築し、Webサイトを展開し

あなたが見ることができるよう、それは実行可能ですが、単純ではありません。

関連する問題