基於安全性的考量,建議將這功能關閉,以方便控管使用者帳號。可至Administration\Authentication\Credentials authentication modules取消勾選Allow user registration from the login page關閉此功能。
June 7, 2015
TeamCity - 關閉登入頁使用者註冊功能
TeamCity登入頁預設允許使用者自行註冊帳號密碼。
基於安全性的考量,建議將這功能關閉,以方便控管使用者帳號。可至Administration\Authentication\Credentials authentication modules取消勾選Allow user registration from the login page關閉此功能。
基於安全性的考量,建議將這功能關閉,以方便控管使用者帳號。可至Administration\Authentication\Credentials authentication modules取消勾選Allow user registration from the login page關閉此功能。
May 17, 2015
呼叫ASP.NET Web API出現HTTP 405錯誤
目前使用ASP.NET Web API開發web service已經是團隊的best practice。前幾天把寫好的service部署到測試環境(Windows 2012 Server + IIS 8),呼叫兩支需要使用到HTTP PUT及DELETE的API,結果出現了405的錯誤訊息,但在本機(Windows 7 + IIS Express 8.5)測試時卻沒有類似問題
解決方式可以在<system.webServer>\<modules>下加入<remove name="WebDAVModule" />及<system.webServer>\<handlers>加入<remove name="WebDAV" />,如
或是把WebDAV Publishing功能移除
解決方式可以在<system.webServer>\<modules>下加入<remove name="WebDAVModule" />及<system.webServer>\<handlers>加入<remove name="WebDAV" />,如
<system.webServer> <validation validateIntegratedModeConfiguration="false" /> <modules> <remove name="WebDAVModule" /> </modules> <handlers> <remove name="WebDAV" /> <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> <remove name="OPTIONSVerbHandler" /> <remove name="TRACEVerbHandler" /> <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> </handlers> </system.webServer>
或是把WebDAV Publishing功能移除
May 3, 2015
TeamCity - 使用HTTPS連線
在TeamCity - 簡介與安裝一文中,我在安裝TC時將預設的port number設定為80。如果你有安全上的考量,也可改以HTTPS連線,不過TC目前的版本(9.0.4)仍無法透過管理介面來做設定,需要直接修改設定檔並重新啟動TC的Windows服務。
既然要使用HTTPS連線,首先必須準備好SSL憑證。在Windows平台上,TC可讀取的憑證格式為*.pfx。你可以透過IIS管理工具或是從作業系統中匯出*.pfx憑證,如IIS 8 and IIS 8.5: How to Import and Export SSL Certificates。匯出後將憑證複製一份到TC所在的伺服器,如C:\keys\domainname.pfx,接下來修改設定檔。
開啟C:\TeamCity\conf\server.xml,加入以下設定
<Connector port="443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true"
scheme="https"
secure="true"
clientAuth="false"
sslProtocol="TLS"
keystoreFile="C:\keys\domainname.pfx"
keystorePass="P@ssw0rd"
keystoreType="PKCS12"
maxThreads="150"
/>
keystoreFile為憑證所在實體路徑,而keystorePass為憑證密碼。設定完成後重新啟動TeamCity Server服務,接下來即可以HTTPS連線瀏覽TC。
雖然開啟了HTTPS連線,HTTP連線仍然支援,如果要完全關閉HTTP連線,可在硬體或軟體防火牆關閉port number 80。
最後,在Adninistration> Global Settings中將Server URL更新成HTTPS的連線位址。
既然要使用HTTPS連線,首先必須準備好SSL憑證。在Windows平台上,TC可讀取的憑證格式為*.pfx。你可以透過IIS管理工具或是從作業系統中匯出*.pfx憑證,如IIS 8 and IIS 8.5: How to Import and Export SSL Certificates。匯出後將憑證複製一份到TC所在的伺服器,如C:\keys\domainname.pfx,接下來修改設定檔。
開啟C:\TeamCity\conf\server.xml,加入以下設定
<Connector port="443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true"
scheme="https"
secure="true"
clientAuth="false"
sslProtocol="TLS"
keystoreFile="C:\keys\domainname.pfx"
keystorePass="P@ssw0rd"
keystoreType="PKCS12"
maxThreads="150"
/>
keystoreFile為憑證所在實體路徑,而keystorePass為憑證密碼。設定完成後重新啟動TeamCity Server服務,接下來即可以HTTPS連線瀏覽TC。
雖然開啟了HTTPS連線,HTTP連線仍然支援,如果要完全關閉HTTP連線,可在硬體或軟體防火牆關閉port number 80。
最後,在Adninistration> Global Settings中將Server URL更新成HTTPS的連線位址。
April 26, 2015
TeamCity - 簡介與安裝
在持續整合(Continuous Integration)這個領域,我曾經使用過CruiseControl.NET和Jenkins兩套工具來輔助,也分享過幾篇相關文章,如Jenkins的系列文。目前所在的團隊導入的是TeamCity(以下簡稱TC),使用也有一年多的時間。TC的強大讓我想好好地紀錄並分享一下個人的使用經驗,如果說有朋友剛好想導入CI,在這三套工具中做評估,我的建議會是直接使用TC吧!在寫這篇文章時,TC的版本是9.0.4,而目前團隊使用的版本是8.1.5,為8.x版本的最後一個release,但我的文章會以9.0.4為主,有必要的話再做個比較。
TC有分Professional和Enterprise版本。Professional版本是免費的,具有與Enterprise一樣完整的功能,但使用上有些限制,僅允許20個建置設定檔(Build Configuration / Build Job)及3個建置代理(Build Agent)。Build Configuration是用來設定Build Job的工作內容,它可以是一個完整的Deployment Pipeline,如編譯(Compilation)、測試(Testing)及部署(Deployment)。Build Agent則是用來執行Build Job的系統服務,如果把TC安裝在Windows作業系統,則Build Agent會被安裝成一個Windows Service。Enterprise版本需付費,以目前官網上基本款的授權費用是美金1999元,可以無限制的使用Build Configuration,一年內免費的TC版本升級(如前陣子我才將TC版本從8.1.3升級到8.1.5,最近也打算升級到9.x版),但可使用的Build Agent仍為3個。在購買時可選擇需要的Build Agent數量,或是之後再單買Build Agent。
我的團隊在成立之初因為只有一個專案,所以Professional版本已夠用,但隨著專案數量越多,Build Configuration開始不夠用。一開始是以單買Build Agent的方式來增加Build Configuration數量(目前TC單買一個Build Agent會附上10個Build Configuration),但長遠來看最後還是決定買了Enterprise授權。為何20個Build Configuration會不夠用?舉個例子,目前團隊在開發系統上會分為Development、QA、Staging和Production四種不同環境,基本上就需要四個Build Job,還有一些排程測試程式(Integration Testing和Browser Testing)需要執行,一個專案上使用到七八個Build Configuration很常見,如果專案間還有共用的核心函式庫,可能還需要幾個Build Configuration來建置這些函式庫。
TC的安裝過程相當簡單,範例中我是將TC安裝在Windows Server 2012 R2 Standard Edition並使用SQL Server 2008 R2 Standard Edition做為TC的資料庫。先下載完TC後執行安裝檔
TC預設的安裝路徑在C糟下,你也可以安裝在其它糟,例如另一顆實體硬碟。
安裝完成,接下來開始做系統設定。TC提供網頁式管理,所以需要設定port number,如果作業系統已安裝了其它的網頁伺服器且佔用了80,如IIS,則需設定另外一個port number。
在前面的步驟因為選取了安裝Build Agent,所以我們可以在這做Build Agent的相關設定,例如你可以修改Build Agent的顯示名稱或port number,之後也可依所需再安裝多個Build Agent,且Build Agent未必要與TC安裝在同一台Server,因為TC提供了分散式建置的機制。
設定TC服務所使用的作業系統帳號,為了方便我使用System權限,如果你有安全性的考量,可以建立特定的系統帳號使用。
設定Build Agent所使用的作業系統帳號,為了方便我使用System權限,如果你有安全性的考量,可以建立特定的系統帳號使用。
完成所有的設定後,瀏覽器會開啟另一個設定頁面,主要是設定TC所使用的資料庫和網頁管理者的帳號密碼。
TC內建所使用的資料庫為HSQLDB,如果你只是測試用如架設一個簡易的Lab環境,HSQLDB倒是夠用。如果團隊已選定要使用TC,強烈建議一開始在設定時即選定一款除了HSQLDB外的資料庫,如SQL Server。目前我的團隊使用的是還是HSQLDB,但隨著設定檔越來越多,TC執行起來已經有變慢的現象,近日已打算開始把資料庫移植到SQL Server,相對地風險較高。
在這邊我以SQL Server做為資料庫。
因為TC是以JDBC連到SQL Server,所以需要先到http://www.microsoft.com/en-us/download/confirmation.aspx?id=11774下載driver。我下載的版本是4.1,下載後解壓縮把sqljdbc41.jar放到C:\ProgramData\JetBrains\TeamCity\lib\jdbc路徑下再點選Refresh JDBC drivers,系統即偵測到可使用的driver。
接下來在SQL Server建立一個空的資料庫,如TeamCity。如果像我一樣把SQL Server和TC安裝在不同Server,要注意防火牆和SQL Server要能允許遠端連線。這邊的資料庫連線為了方便直接使用sa帳號,實務上需建立獨立的帳號並做權限上的控管。
TC開啟初始化資料庫,完成後可以在TeamCity資料庫中看到不少資料表。
最後建立系統管理者的帳號密碼,建立完成後即自動登入TC。
到Administration > Licenses可以看到目前的版本是使用Professional。
從外部來瀏覽TC也可正常顯示登入畫面。
在Windows Service列表裡也可以看到TC和Build Agent服務。
TC有分Professional和Enterprise版本。Professional版本是免費的,具有與Enterprise一樣完整的功能,但使用上有些限制,僅允許20個建置設定檔(Build Configuration / Build Job)及3個建置代理(Build Agent)。Build Configuration是用來設定Build Job的工作內容,它可以是一個完整的Deployment Pipeline,如編譯(Compilation)、測試(Testing)及部署(Deployment)。Build Agent則是用來執行Build Job的系統服務,如果把TC安裝在Windows作業系統,則Build Agent會被安裝成一個Windows Service。Enterprise版本需付費,以目前官網上基本款的授權費用是美金1999元,可以無限制的使用Build Configuration,一年內免費的TC版本升級(如前陣子我才將TC版本從8.1.3升級到8.1.5,最近也打算升級到9.x版),但可使用的Build Agent仍為3個。在購買時可選擇需要的Build Agent數量,或是之後再單買Build Agent。
我的團隊在成立之初因為只有一個專案,所以Professional版本已夠用,但隨著專案數量越多,Build Configuration開始不夠用。一開始是以單買Build Agent的方式來增加Build Configuration數量(目前TC單買一個Build Agent會附上10個Build Configuration),但長遠來看最後還是決定買了Enterprise授權。為何20個Build Configuration會不夠用?舉個例子,目前團隊在開發系統上會分為Development、QA、Staging和Production四種不同環境,基本上就需要四個Build Job,還有一些排程測試程式(Integration Testing和Browser Testing)需要執行,一個專案上使用到七八個Build Configuration很常見,如果專案間還有共用的核心函式庫,可能還需要幾個Build Configuration來建置這些函式庫。
TC的安裝過程相當簡單,範例中我是將TC安裝在Windows Server 2012 R2 Standard Edition並使用SQL Server 2008 R2 Standard Edition做為TC的資料庫。先下載完TC後執行安裝檔
TC預設的安裝路徑在C糟下,你也可以安裝在其它糟,例如另一顆實體硬碟。
安裝完成,接下來開始做系統設定。TC提供網頁式管理,所以需要設定port number,如果作業系統已安裝了其它的網頁伺服器且佔用了80,如IIS,則需設定另外一個port number。
在前面的步驟因為選取了安裝Build Agent,所以我們可以在這做Build Agent的相關設定,例如你可以修改Build Agent的顯示名稱或port number,之後也可依所需再安裝多個Build Agent,且Build Agent未必要與TC安裝在同一台Server,因為TC提供了分散式建置的機制。
設定TC服務所使用的作業系統帳號,為了方便我使用System權限,如果你有安全性的考量,可以建立特定的系統帳號使用。
設定Build Agent所使用的作業系統帳號,為了方便我使用System權限,如果你有安全性的考量,可以建立特定的系統帳號使用。
完成所有的設定後,瀏覽器會開啟另一個設定頁面,主要是設定TC所使用的資料庫和網頁管理者的帳號密碼。
TC內建所使用的資料庫為HSQLDB,如果你只是測試用如架設一個簡易的Lab環境,HSQLDB倒是夠用。如果團隊已選定要使用TC,強烈建議一開始在設定時即選定一款除了HSQLDB外的資料庫,如SQL Server。目前我的團隊使用的是還是HSQLDB,但隨著設定檔越來越多,TC執行起來已經有變慢的現象,近日已打算開始把資料庫移植到SQL Server,相對地風險較高。
在這邊我以SQL Server做為資料庫。
因為TC是以JDBC連到SQL Server,所以需要先到http://www.microsoft.com/en-us/download/confirmation.aspx?id=11774下載driver。我下載的版本是4.1,下載後解壓縮把sqljdbc41.jar放到C:\ProgramData\JetBrains\TeamCity\lib\jdbc路徑下再點選Refresh JDBC drivers,系統即偵測到可使用的driver。
接下來在SQL Server建立一個空的資料庫,如TeamCity。如果像我一樣把SQL Server和TC安裝在不同Server,要注意防火牆和SQL Server要能允許遠端連線。這邊的資料庫連線為了方便直接使用sa帳號,實務上需建立獨立的帳號並做權限上的控管。
TC開啟初始化資料庫,完成後可以在TeamCity資料庫中看到不少資料表。
最後建立系統管理者的帳號密碼,建立完成後即自動登入TC。
到Administration > Licenses可以看到目前的版本是使用Professional。
從外部來瀏覽TC也可正常顯示登入畫面。
在Windows Service列表裡也可以看到TC和Build Agent服務。
Subscribe to:
Posts (Atom)