windows下jenkins常見問題填坑

 沒有什麼高深的東西,1 2天的時間大多數人都能本身摸索出來,這裏將本身遇到過的問題分享出來避免其餘同窗再一次挖坑.php


目錄html

  1. 主從節點java

  2. Nuget自動包還原linux

  3. powershell部署git

  4. 內網機器實現基於變化的構建github

  5. Github私有項目pull時限web


  所謂主從,主要應用的場景例如多種環境(windows/linux,.net/java/php)須要不一樣的構建基礎,而咱們又不想都將一系列的步驟和環境混雜在一臺構建服務器上,因此相似於go中的代理,jenkins也提供了slave節點的概念,你們能夠把不一樣類別的項目的構建部署在分類的節點服務器上。節點服務器不須要安裝完整的jenkins包,構建事件的分發由master端來執行。shell

這裏須要注意的就是主從節點之間的通訊,我這裏選擇是將從節點以windows service的方式啓動,而我碰到的坑就是環境變量的配置問題,當我在主從服務都安裝好jdk而且配置完環境變量後,發現啓動從節點時仍是怎麼都找不到jdk,卡了半個小時才發現jenkins 從節點的環境變量是須要在web系統中配置的,此坑填平,後者慎入。數據庫

至於slave端的分配在構建配置中windows

 


  用.net開發的同窗nuget應該大多都涉及到,相似java的maven,神器之一,很少說。若是用visual studio開發這裏會有一個選項

選中這裏的話 會再在你rebuild項目的時候 自動將丟失的包補齊,固然僅限於公衆平臺上的內容,若是是同窗們本身開發的local版本的包還會遇到另外的問題,這裏咱們重點不計較這些。

回到jenkins上來由於jenkins的構建條件中目前還不支持直接使用.net的ide,因此咱們須要安裝msbuild的插件

裝完之後構建後發現編譯失敗,各類組件丟失。這裏再填一坑,首先卸載咱們的主要輸出項目,而後編輯項目屬性內容,在最後加上一個節點配置

?
1
2
3
4
< Target Name="AfterBuild">
     < MSBuild Condition="'$(Configuration)|$(Platform)' == 'Release|x86'" Projects="NuGet\NuGet.msbuild" />
   </ Target >
   < Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />  

  還原項目,這樣再使用msbuild命令就OK了。


  powershell的使用場景能夠這樣理解,在咱們build經過一個項目後,咱們須要將他部署在一臺測試服務器上,可是咱們的數據庫配置須要修改,如何去除人工的干預,這裏就須要使用到powershell或者其餘工具了。

powershell的使用你能夠分爲2種,一種是寫好ps腳本而後經過batch command中powershell命令來完成,另一種是jenkins直接安裝powershell命令,這裏更推薦後者,由於有些時候你並無權限上服務器上修改腳本或者其餘元素,全部後者更直觀簡單,簡單的數據庫鏈接修改腳本

?
1
2
3
4
5
$original_file = 'xx\web.config'
$destination_file 'xx\web.config'
(Get-Content $original_file ) | Foreach-Object {
     $_ -replace 'name="dbdemo" connectionstring=".+" ' , 'name="dbdemo"  connectionString="server=(local);database=basedemo;user id=demoUser;password=!@#qqq" providerName="System.Data.SqlClient" '
} | Set-Content $destination_file -encoding UTF8

 

  若是咱們的master機器部署在內網,github經過hook的方式回調不到,那麼咱們就很難基於github項目的push動做來進行基於版本的即時構建。怎麼辦?這裏可使用一個取巧的辦法

在poll scm模式下選擇* * * * *,當系統發現本地文件沒有變動時,會忽略掉這次構建。


  github私有項目,主要也就是ssh受權的問題,這裏的坑不是權限認證問題,而是github插件的時限問題,默認是10分鐘,因爲某些項目可能資源比較大,第一次pull的時候耗費時間比較長,可是控制檯提示一直停留在認證那個階段,讓操做人員誤覺得是認證問題,這個估計也算個坑吧。填坑方法以下圖:

ok 簡單的填坑總結。有些問題雖然小可是一點一點排查總歸仍是浪費時間,但願對你們有幫助

原創做品容許轉載,轉載時請務必以超連接形式標明文章原始出處以及做者信息。
做者:熬夜的蟲子
點擊查看: 博文索引
相關文章
相關標籤/搜索