title:'windows環境jenkins安裝 自動編譯 publish over ssh 遠程發布.netcore webapi 服務化.netcore webapi'
1.下載安裝JDK
只支持Java8和11
2.配置環境變數
? 右擊"我的電腦",點擊"屬性",選擇"高級系統設定"
? 選擇"高級"選項卡,點擊"環境變數"
? 在 "系統變數" 中設定 3 項屬性,JAVA_HOME、PATH、CLASSPATH(大小寫無所謂),若已存在則點擊"編輯",不存在則點擊"新建"( 1.5 以上版本的 JDK,不 用設定 CLASSPATH 環境變數,也可以正常編譯和運行 Java 程式)
# 變數設定引數如下:
變數名:JAVA_HOME
變數值:C:\Program Files (x86)\Java\jdk1.8.0_91 // 要根據自己的實際路徑配置
變數名:CLASSPATH(可不設定)
變數值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; //記得前面有個"."
變數名:Path
變數值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
測驗JDK是否安裝成功
java -version命令
提示如下則安裝成功

3.安裝jenkins
去官網下載安裝包點擊安裝,安裝程序中要選擇Java Jdk所在路徑
安裝目錄下的jenkins.xml為jenkins的組態檔

配置埠號

配置jenkins作業目錄 寫磁盤路徑或在環境變數中配置

修改路徑后重啟服務會自動初始化jenkins
安裝中文插件
系統管理-插件管理-可選插件

安裝之后會有部分英文沒有轉過來,打開系統管理-系統配置頁面
配置成zh_US 重繪頁面或重啟服務,如果全是英文的話配置為zh_CN再重繪頁面或重啟服務
因為我們要用到shell命令編譯、發布代碼,要在jenkins中配置shell工具
系統管理-系統配置

配置本地sh.exe工具(sh.exe的位置我是在本地檔案夾中搜的)
以上為基礎環境配置
———————————————————————————————————————————
配置自動構建發布工程

創建一個工程
1.原始碼管理
選擇原始碼管理器,設定原始碼路徑,本次選的git

指定分支

2.構建觸發器

根據專案需求設定自動構建時間 配置時間可查閱corn運算式
3.構建環境

根據自己需求來選擇構建環境(本次沒用到就不寫了)
4.構建

增加構建步驟,選擇執行shell

構建順序
還原nuget包(因為專案參考了多個nuget包源,這里將nuget包源放到組態檔中,還原的時候去找這個組態檔)
dotnet restore --configfile "E:\youlink\NuGet.config"
編譯代碼
dotnet build
發布站點
cd YnkMapEngine.Web
dotnet publish YnkMapEngine.Web.csproj
這樣站點就發布到本地了
5.構建后操作
將發布好的站點上傳到遠程服務器的某一個目錄下
這里用到publish over shh
系統管理-插件管理-可選插件

安裝publish over ssh 插件
安裝完插件后需要配置遠程服務器地址與連接方式 可以選擇密碼登錄和秘鑰登錄
系統管理-系統配置

Jenkins SSH Key 分組下的Passphrase、Path to key 、 Key 是秘鑰登錄方式需要配置的
這里用的用戶名密碼的方式登錄
在ssh servers分組下配置ssh server項
Name:SSH Server項的名稱
? Hostname:要操作的遠程服務器的地址
? Username:要操作遠程服務器的登錄用戶名
? Remote Directory:配置可操作的路徑 /默認C盤 切換其他磁盤/E:

use password authentication,or use a different key 勾選
Passphrase/Password 填登錄用戶的密碼
Port設定埠號 默認22
Timeout設定超時時間

配置完成后點右下角test Configuration測驗是否配置成功
增加構建后操作步驟

(我已經添加了就不能再選了)
先將webapi注冊成windows服務,這里用nssm工具,第一次部署的話需要將本地發布好的站點手動拷貝到服務器上,然后用nssm工具安裝服務并啟動服務 (啟動引數配置--urls=http://localhosot:埠號)
在Transfers分組下配置項
? Source files:源檔案地址,地址的目錄是相對于jenkins workspace的目錄,如果只需要執行命令不需要傳輸檔案的時候,此處可以為空
? Remove prefix:去除的檔案地址,在Source files輸入框中填入的地址,會默認在服務器下創建相同的檔案夾,所以需要將我們不需要的檔案夾在這里剔除掉
? Remote directory:遠程服務器接收檔案的地址
? Exec command:檔案傳輸任務執行完畢后,在遠程服務器上執行的命令
? Exclude files:不需要發布的檔案 如webconfig 格式 **/appsettings.json
遠程發布檔案之前要先停用注冊的服務,服務啟動的時候會占用需要發布的檔案,阻止檔案被替換
添加一個Transfer Set 用來執行停止服務的命令(如果服務的狀態不是正在運行,編譯的時候就會報錯,自動構建機會終止,這里還需要再優化一下)
示例:

再添加一個Transfer Set用來做遠程發布功能,要在停止服務的TransferSet之后執行
示例:

Source files : \*表示該目錄下所有檔案,不包括檔案夾 ;\**表示該目錄下所有檔案,包括檔案夾
Remote directory : 與系統配置SSH Server里配置的路徑相接 如 SSH Server里配置的是/E:workplace ,TransferSet里配置的是 /workplace/專案名,那么最終在服務器的路徑是E:/workplace/workplace/專案名(路徑不存在會自動創建)
檔案傳輸任務執行完畢后,在遠程服務器上執行服務啟動的命令
配置完成
其他
構建程序中遇到的問題
沒有配置shell,編譯的時候會報錯,如下:
> git.exe rev-list --no-walk c304accf4dbc9d1c9ad6e12e8c121f0f368b6535 # timeout=10
[test] $ sh -xe C:\Windows\TEMP\jenkins4061403380039367.sh
The system cannot find the file specified
FATAL: 命令執行失敗
java.io.IOException: CreateProcess error=2, 系統找不到指定的檔案,
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(ProcessImpl.java:453)
at java.lang.ProcessImpl.start(ProcessImpl.java:140)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
Caused: java.io.IOException: Cannot run program "sh" (in directory "E:\jenkins\workspace\test"):
CreateProcess error=2, 系統找不到指定的檔案,
在jenkins系統設定中Shell分組,Shell executable項,配置git下的sh.exe路徑,
安裝publish over ssh插件
生成秘鑰版本
openssh版本秘鑰格式版本過高 Jenkins不支持
指定rsa秘鑰格式
ssh-keygen.exe -m PEM -t rsa -b 4096
參考https://www.cnblogs.com/architectforest/p/13707244.html
publish over ssh配置完測驗連接的時候會報錯
Connection refused: connect
遠程服務器openssh服務安裝之后需要手動開啟
安裝openssh
遠程服務器需要安裝openssh客戶端和服務器,windows系統提供了ssh的功能,需要像安裝iis一樣自己安裝一下,
步驟:設定-應用-可選功能-添加功能,會看到openssh客戶端和服務端,遠程服務器需要客戶端和服務端,本地安裝客戶端
遠程服務器安裝好之后會注冊一個名稱為OpenSSH SSH Server的服務,默認是停止狀態,需要手動開啟一下
服務器需要開啟22埠
客戶端安裝完成后想要直接使用ssh命令需要配置環境變數,
在系統屬性-環境變數-系統變數 配置視窗找到path項,點擊編輯,打開path項的配置串列,然后點擊新建,輸入
%SYSTEMROOT%\System32\OpenSSH\
,配置完成后打開powershell,輸入ssh username@服務器地址 會提示輸入密碼,輸入密碼之后會進入到遠程服務器的命令視窗,就可以操作遠程服務器了,
秘鑰方式研究了好長時間沒整好,先用密碼方式吧,
第一次寫,有問題歡迎指正,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/289721.html
標籤:其他
上一篇:計網 - 內容分發網路 : CDN 回源的作業機制初探
下一篇:企業運維實戰--最全Docker學習筆記1.Docker簡介、安裝部署、鏡像構建、Dockerfile詳解、鏡像構建、鏡像優化、本地私有倉庫搭建

