jenkins 構建分發

使用的工具及技術:

1、Jenkins安裝、部署

2、JenkinsTFS配置 MSBuild配置

3、Jenkins分發程序(xcopy、Azure、net、PsExec、ServerManager)

   Jenkins官網下載地址https://jenkins.io/content/thank-you-downloading-windows-installer/#stable(Windows),下載安裝後,可以訪問http://localhost:8080/進行用戶設置登錄。

    系統管理--》插件管理:安裝Team Foundation Server Plug-inMSBuild Plugin


         系統管理--》系統設置:配置tfs



         系統管理—》Global Tool Configuration:配置MSBuild




新建一個構建項目和簡單配置



碰到的問題有:

1. Querying for remote changeset at '$/MData/SourceCode/MasterData3.0-Release/' as of 'D2017-05-05T05:50:40Z'...

Query returned no result!

原因是tfs工程路徑錯誤

2.FATAL:com.microsoft.tfs.core.exceptions.TECoreException: 工作區 Hudson-MData-MASTER;hexiaoer 已存在於計算機MACBOOK 上。

原因是工程名稱與TFS重名,需要修改Jenkins工程名稱。

3.構建後出現error。

原因一般都是tfs上項目編譯出現了問題,要先將源碼在vs上編譯通過,再構建。如果還是不行就要查看項目編譯的MSBuild和Jenkins配置的MSBuild環境是否一致。

 

分發的核心代碼(就是配置的Publisher.exe)有:

Net: (系統自帶)

var info = new ProcessStartInfo()

{

Arguments= @" use \\10.2.13.23 "111111"/user:administrator",

FileName= "net.exe",

WindowStyle= ProcessWindowStyle.Hidden

};

var process = Process.Start(info);

process.WaitForExit();

process.ExitCode;

 

Xcopy:(系統自帶)

var info = new ProcessStartInfo()

{

Arguments= @" D:\Deployment\Agent  \\10.2.13.23\C$\Deployment /E /I /R /Y",

FileName= "xcopy.exe",

WindowStyle= ProcessWindowStyle.Hidden

};

var process = Process.Start(info);

process.WaitForExit();

process.ExitCode;

 

PsExec(需要下載,在目標服務器要有psexec服務運行,如果沒有調用exe會沒效果)

var info = new ProcessStartInfo()

{

Arguments= @" \\10.3.2.8 -u administrator -p qwe111! -cC:\Deployment\Agent.exe",

FileName= "PsExec.exe",//這裏要指定exe的具體路徑

WindowStyle= ProcessWindowStyle.Hidden

};

var process = Process.Start(info);

process.WaitForExit();

process.ExitCode;


 

Azure:

ServicePointManager.ServerCertificateValidationCallback= ValidateCertificate;(獲取或設置用於驗證服務器證書的回調。具體如何使用可以在網上找下)

varconnectionString = "DefaultEndpointsProtocol=https;AccountName=blob;AccountKey=8kR6NNeWdgp0oKtYMLN1K+nQFCR+bpF67dlNtInz9QePAOY9nOuCABSS*********==;EndpointSuffix=core.Chinacloudapi.cn";

var account = CloudStorageAccount.Parse(connectionString);

var client =account.CreateCloudBlobClient();

var container =client.GetContainerReference(ConfigurationSettings.AppSettings["MicContainerReference"]);

var blob =container.GetBlockBlobReference(ConfigurationSettings.AppSettings["MicBlockBlobReference"]);

 

// 上傳壓縮文件

using (varstream =File.OpenRead(appZipPath))//zip))

{

     blob.UploadFromStream(stream);

}

 

ServerManager:

var manager = newServerManager();

var pools = manager.ApplicationPools;

var pool = pools[name];

if (pool == null)

{

     // 創建應用程序池

     pool = pools.Add(name);

}

 

// 設置應用程序池

pool.AutoStart =true;

pool.Cpu.Limit =80;

pool.ManagedPipelineMode= ManagedPipelineMode.Integrated;

pool.ManagedRuntimeVersion= "v4.0";

pool.ProcessModel.IdentityType= ProcessModelIdentityType.SpecificUser;

pool.ProcessModel.IdleTimeout= TimeSpan.Zero;

pool.ProcessModel.Password= password;

pool.ProcessModel.UserName= userName;

pool.Recycling.PeriodicRestart.Memory= 0;

pool.Recycling.PeriodicRestart.PrivateMemory= 0;

pool.Recycling.PeriodicRestart.Schedule.Clear();

pool.Recycling.PeriodicRestart.Schedule.Add(TimeSpan.Parse("04:00:00"));

pool.Recycling.PeriodicRestart.Time= TimeSpan.Zero;

//pool.StartMode = StartMode.AlwaysRunning;

// 獲取網站

var sites = manager.Sites;

var site = sites[name];

if (site == null)

{

//創建網站

site= sites.Add(name, target, port);

}

// 設置網站

site.ApplicationDefaults.ApplicationPoolName= name;

site.Bindings.Clear();

site.Bindings.Add("*:" + port + ":", "http");

 

代碼調試通過後,開始用Jenkins構建,出現net鏈接失敗問題,在代碼調試是沒問題的。

解決方法是修改Jenkins服務屬性登錄賬戶和密碼,然後重啓服務。


服務器上的代理程序一直下載不了微軟雲上的文件,需要聯繫網絡的同事配置服務器可訪問微軟雲。



圖片複製太複製了,就沒有一個一個上傳。圖片複製太複製了,就沒有一個一個上傳。
http://note.youdao.com/noteshare?id=3cbe8b3e0e5451dc0f117366b6a733af&sub=7C07125D1D99434C95AFCF929CC42923


圖片複製太複製了,就沒有一個一個上傳。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章