2016-02-15 74 views
1

我們希望在Octopus Deploy中使用Channels功能,因此當版本號包含「X.X.X.X-Beta」時,它應該使用Beta通道。TeamCity內部版本號爲常數

我們的問題是,我們不知道如何在TeamCity中設置版本號,因爲它只允許硬編碼的字符串與一些變量。 我們不想把它設置成TeamCity,我們想在課堂上使用它。 所以我們有一個類調用VersionInformation.cs有以下內容:

public static class VersionInformation 
{ 
    public const string ProductVersion = "1.12.0.0"; 
    public const string ProductStage = "Beta"; 
} 

AssemblyInfo.cs文件下面一行包含:

[assembly: AssemblyVersion(VersionInformation.ProductVersion)] 

基本上我們要做到:

  1. 獲取來自Visual Studio Online的TFS存儲庫的更改
  2. TeamCity應讀取該類並設置自己的構建版本「1.12.0。{} buildNumber-β」
  3. 的TeamCity應該創建一個八達通發佈該版本

我們的問題是,我們不能訪問我們的客戶的TeamCity的安裝變化那裏的版本,所以我們依賴於一個雙方工作的解決方案(就像那個類)。

+0

如果你看一看的:

echo ##teamcity[buildNumber '1.2.0.%env.BUILD_NUMBER%-Beta'] 

運行它兩次我得到了這個之後[構建腳本交互文檔](https://confluence.jetbrains.com/display/TCD8/Build+Script+Interaction+with+TeamCity)你可以看到,如果你可以欺騙你的構建(MSBuild也許?)輸出一個字符串到內容爲'## teamcity [buildNum然後你可以控制它,爲了得到'{buildNumber}'部分,你應該檢查應該包含TeamCity認爲是的內部版本號的環境變量,認爲它被簡稱爲'BUILD_NUMBER'。 –

回答

0

您可以執行的操作是使用生成步驟中的Built Script Interaction自定義輸出。

你需要欺騙你的構建,我會假設是MSBuild,將其輸出到標準控制檯。

基本上,你需要輸出什麼應該是這樣的:

##teamcity[buildNumber 'XYZ'] 

哪裏XYZ是要輸出的版本號。

這裏有一個簡單的測試批處理文件,我創建並連接到TeamCity的生成配置:

TeamCity screenshot after two builds

+0

我們使用啓用OctoPack的「Visual Studio(.sln)」構建步驟。我需要改變嗎? –

相關問題