windows环境jenkins安装 自动编译 publish over ssh 远程发布.netcore webapi 服务化.netcore webapi
Posted qq_35284913
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了windows环境jenkins安装 自动编译 publish over ssh 远程发布.netcore webapi 服务化.netcore webapi相关的知识,希望对你有一定的参考价值。
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@服务器地址 会提示输入密码,输入密码之后会进入到远程服务器的命令窗口,就可以操作远程服务器了。
秘钥方式研究了好长时间没整好,先用密码方式吧。
第一次写,有问题欢迎指正。
以上是关于windows环境jenkins安装 自动编译 publish over ssh 远程发布.netcore webapi 服务化.netcore webapi的主要内容,如果未能解决你的问题,请参考以下文章
windows环境下jenkins+gradle+Android 自动打包部署