2012年11月29日 星期四

TeamCity 安裝BuildAgent

首先下載BuildAgent


把安裝程式傳送到目標電腦後,一直按下一步安裝就可以了

安裝好後,到BuildAgent下面的conf資料夾,找到buildAgent.properties設定檔

確認一下ServerURL是否正確,要注意用反斜線來表示的跳脫字元
順利連線之後,約1~2分鐘,最下面就會出現authorizationToken

登入TeamCity,也會看到未授權的記錄,把剛那組授權碼輸入就行了

等待一陣子,Connected就會有剛安裝的BuildAgent了

TeamCity 改用網域帳號LDAP登入

如果開發環境中有網域管理的話,可以把登入模式改LDAP模組登入

打開C:\ProgramData\JetBrains\TeamCity\config\main-config.xml

裡面的auth-type節點中,預設會是DefaultLoginModule

<login-module class="jetbrains.buildServer.serverSide.impl.auth.DefaultLoginModule" />

將模組改成LDAPLoginModule就行了

<login-module class="jetbrains.buildServer.serverSide.impl.auth.LDAPLoginModule" />

再來是設定LDAP的環境參數,在config資料夾中,有一個ldap-config.properties.dist的範本檔

複制成ldap-config.properties這個檔案,再用文字編輯器打開來修改,主要有以下幾個項目
把example換成自已的網域名稱

#設定AD的位置
java.naming.provider.url=ldap://dc.example.com:389/DC=example,DC=com

#設定登入的時後,帳號格式不用包含\或是@
teamcity.auth.loginFilter=[^/\\\\@]+

#配合上一個設定,和AD驗證的時後,送過去的帳號,前面自動補上網域名稱
teamcity.auth.formatDN=example\\$login$

設定這三個項目,其他改用預設值,就可以用網域驗證了
登入後如果要同步帳號資料,可以再多加以下幾個選項
java.naming.security.principal=<username>
java.naming.security.credentials=<password>
teamcity.users.username=sAMAccountName
teamcity.options.users.synchronize=true
teamcity.users.filter=(objectClass=user)
teamcity.users.property.displayName=displayName
teamcity.users.property.email=mail

第一次登入的時後,會需要設定帳號成管理員

如果有問題,可以查一下log
log位置在 C:\TeamCity\logs


參考資料




上一篇:TeamCity 建置後打包和發佈套件
下一篇:TeamCity 安裝BuildAgent

2012年11月13日 星期二

TeamCity 建置後打包和發佈套件

先溫習一下NuGet打包和發佈的方式


接下來按照打包的方式來作業,新增一個Build Step為NuGetPack
選擇NuGet執行檔的版本,再選擇專案檔的路徑
Version是建置時後的版本,最後是輸出的資料夾

因為增加了套件輸出的路徑,所以回到General Settings
在Artifact paths也增加套件輸出的路徑

設定完成後再次建置,建置成功就會在Artifacts得到套件

接下來再新增一個Build Step,選擇NuGetPublish
選擇NuGet執行檔的版本,輸入NuGet Server的網址和api key
再選擇要上傳的套件,下次建置的時後,就會一起發佈出去了

TeamCity 建置前先還原NuGet套件

當專案開始使用NuGet來管理套件時,預設套件會安裝在方案檔所在目錄的packages資料夾下


一般不會把這個套件這個資料夾加入原始檔控制以節省空間,而會在Vistual Studio中啟用套件還原
在方案檔上按右鍵就會看到這個選項了

按下後會有一個提示訊息,主要是會新增一個方案資料夾的提示

按下是(Y)之前,就會多出一個.nuget的方案資料夾

還要允許NuGet在建置期間下載遺漏的套件

把.nuget這個方案資料夾加入Source Control

先在TeamCity中安裝NuGet Command Line工具

新增一個Build Step,選擇NuGet Installer
選擇NuGet的版本,和輸入NuGet的來源
如果使用的套件是從NuGet官網來的,那直接保持空白
如果會使用其他來源的套件,就要在此輸入網址
再輸入方案檔的相對路徑就行了

再來要把NuGet Install這個動作,放到編譯之前
所以按一下Reorder build steps,然後用拖曳的方式調整步驟後按Apply

再次建置就成功了

TeamCity 設定專案

接下來開始設定專案,首先建立一個專案


輸入專案名稱和說明後,按下Create就行了


接下來要開始設定Build Configuration,免費版只能建20個


第一步是設定一個名稱,這裡以Release Build為例
Build number format是自動版號的格式,除了每次建置會自動加1之外
因為接下來的版本控制會以SVN為例,所以加入了SVN的版號%build.vcs.number%
Artifact Paths是最後產出檔案的路徑,先指向到Publish這個資料夾下面的zip檔



第二步是設定一個版本控制來取得原始碼


下拉選單中有大部份Source Control的類型,這邊以SVN為例子
主要就是輸入路徑和帳號密碼就行了


Labeling Rules這邊設定的是從trunk分支到tags的動作,等下還會有更詳細的設定
Test Connection可以測試一下是否可以連線,沒問題的話就按下Save按鈕


完成了一個VCS root的設定,順便編輯一下Checkout Rules
最簡單的用法就是每次只取出trunk的內容,並當成根目錄,就不會取出trunk和branches的資料了


接下來還有更詳細的設定
Clean all files before build是用來選擇是否在每次編譯之前都先清空svn的資料,重新下載
VCS Labeling mode是用來選擇,是否要在建置之後,來執行剛設定Labeling的動作


Build Step是用來設定建置方式,這邊選擇用方案檔的方式來建置專案
因為用到了Package這個target來封裝專案,所以需要選擇專案檔而不是方案檔
希望建置後封裝的檔案可以產出在前面設定Artifact Paths的路徑中,所以額外設了一個參數
如果一開始選擇用MSBuild來建置的話,參數的設定會更靈活



到這裡已經設定好專案了,如果日後需要修改設定,可以直接按右邊的某一個步驟來調整
先按一下右上角的Run來跑跑看目前的設定正不正確,再按一下Build Configuration Home來看結果


可以看到這個專案的編譯記錄,目前編譯的版本,和SVN的送交記錄等等訊息



編譯成功,也正確產出檔案的話,在Artifacts會有檔案下載的連結




參考資料:

Continuous Integration & Build Server – TeamCity (二) 設定專案

Continuous builds with TeamCity

上一篇:TeamCity Migrate To SQL Server
下一篇:TeamCity 建置前先還原NuGet套件

2012年11月8日 星期四

TeamCity Migrate To SQL Server

首先淮備好資料庫,例如一個名稱為TeamCity的DB

建一個登入帳號,這裡帳號用bar,密碼用foo當範例

給予db_owner的權限

再來下載Database Driver,官網的文件中有介紹兩種Driver
但我試了半天都不行用,後來爬文找到更改連線字串的寫法就可以了
所以在這裡以Microsoft JDBC Driver來介紹
先去Microsoft Download Center 下載Driver

下載後解壓縮,把sqljdbc4.jar複製到這個神秘的地方

再來編輯database.mssql.properties.dist這一個範本檔

官網的文件是把帳密打在後面,但試了半天就是不行
爬文的結果把帳密改寫在連線字串中就成功了,JAVA真是一種神秘的語言

TeamCity升級到7.1.2後,JDBC的設定不能用了,只好再試了一下另一種連線方式jtds-1.2.2
我下載最新的版本,會有java.lang.UnsupportedClassVersionError的錯誤,換成1.2.2就好了...
一樣把jtds-1.2.2.jar複製到lib/jdbc的資料夾
連線字串就可以照著範本的格式打了

connectionUrl=jdbc:jtds:sqlserver://<hostname>:1433/<dbname>
connectionProperties.user=<username>
connectionProperties.password=<password>

參考資料


到此淮備工作就完成了,要開始轉移資料之前,要先把服務停下來

然後打開一個cmd,輸入以下指令
set path=%path%;c:\TeamCity\jre\bin
這行是和設定JAVA_HOME這個神秘的全域變數同樣的效果
用來把Java Run Time的路徑包含進系統的path
因為我沒安裝JAVA環境,所以要指向到TeamCity自帶的jre路徑
但如果在執行過程中會發生無法開啟jvm.cfg這個錯誤訊息的話
把System32下面的Java.exe、Javaw.exe、Javaws.exe都砍掉就行了

maintainDB.cmd migrate -T c:\ProgramData\JetBrains\TeamCity\config\database.mssql.properties.dist
 maintainDB.cmd是TeamCity自帶的資料庫維護工具,可以用來備份、還原、和搬移資料
這邊用的是migrate,把剛設定資料庫的設定檔用-T參考傳進去就行了


順利的話,就會開始搬移資料進SQL Server,並且也會把剛剛的資料庫連線範本
複制成正式用的檔案database.properties

資料庫的物件也都建好了,重啟服務就完成囉

參考資料






2012年11月7日 星期三

安裝continuous integration (CI) server:TeamCity

首先到TeamCity的官網下載合適平台的安裝檔,這裡以Windows平台為例

接下來一直按下一步就行了

安裝的路徑


安裝的項目,可單獨選擇Build Agent或Server
設定檔的路徑
如果安裝的機器上面已經有Web伺服器的話,預設的Port就會改用8080

設定BuildAgent的環境,基本上會自動偵測,記住網域,按下Save就行了

選擇TeamCity Server Service要用的帳號

選擇TeamCity Agent Service要用的帳號

啟動服務

到此安裝完成,按下Finish開始設定頁面

第一次執行時的頁面,按下Proceed按鈕執行初始化動作

等待初始化完成後,會跳出使用者授權頁面

輸入一組管理用的帳號

登入成功,接下來就可以開始來設定專案了

參考資料

TeamCity Edition Comparison Matrix

上一篇:Windows平台的軟體套件管理:Chocolatey
下一篇:TeamCity Migrate To SQL Server