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的主要内容,如果未能解决你的问题,请参考以下文章

jenkins+gitlab构建安卓自动编译环境

windows环境下jenkins+gradle+Android 自动打包部署

Windows下搭建Jenkins+Jmeter+Ant 自动测试环境

Jenkins持续部署-自动生成版本号

jenkins 每次编译前清理workspace空间

在 Windows 上搭建配置 Jenkins 然后编译打包 VS 项目