• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

windows环境jenkins安装 自动编译 publish over ssh 远程发布.netcore webapi 服务化.netcore webapi

互联网 diligentman 5小时前 1次浏览
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)Javajdk1.8.0_91  // 要根据自己的实际路径配置
变量名:CLASSPATH(可不设置)
变量值:.;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar;     //记得前面有个"."
变量名:Path
变量值:%JAVA_HOME%bin;%JAVA_HOME%jrebin;

测试JDK是否安装成功

java -version命令

提示如下则安装成功

windows环境jenkins安装 自动编译 publish over ssh 远程发布.netcore webapi 服务化.netcore webapi

 

3.安装jenkins

去官网下载安装包点击安装安装过程中要选择Java Jdk所在路径

安装目录下的jenkins.xml为jenkins的配置文件

windows环境jenkins安装 自动编译 publish over ssh 远程发布.netcore webapi 服务化.netcore webapi

 

配置端口号

windows环境jenkins安装 自动编译 publish over ssh 远程发布.netcore webapi 服务化.netcore webapi

 

配置jenkins工作目录 写磁盘路径或在环境变量中配置

windows环境jenkins安装 自动编译 publish over ssh 远程发布.netcore webapi 服务化.netcore webapi

 

修改路径后重启服务会自动初始化jenkins

安装中文插件

系统管理-插件管理-可选插件 

windows环境jenkins安装 自动编译 publish over ssh 远程发布.netcore webapi 服务化.netcore webapi

安装之后会有部分英文没有转过来,打开系统管理-系统配置页面

windows环境jenkins安装 自动编译 publish over ssh 远程发布.netcore webapi 服务化.netcore webapi

配置成zh_US 刷新页面或重启服务,如果全是英文的话配置为zh_CN再刷新页面或重启服务

因为我们要用到shell命令编译、发布代码,要在jenkins中配置shell工具

系统管理-系统配置  

windows环境jenkins安装 自动编译 publish over ssh 远程发布.netcore webapi 服务化.netcore webapi

配置本地sh.exe工具(sh.exe的位置我是在本地文件夹中搜的)

以上为基础环境配置

———————————————————————————————————————————

 

配置自动构建发布工程

windows环境jenkins安装 自动编译 publish over ssh 远程发布.netcore webapi 服务化.netcore webapi

创建一个工程

1.源码管理

选择源码管理器,设置源码路径,本次选的git

windows环境jenkins安装 自动编译 publish over ssh 远程发布.netcore webapi 服务化.netcore webapi

指定分支

windows环境jenkins安装 自动编译 publish over ssh 远程发布.netcore webapi 服务化.netcore webapi

2.构建触发器

windows环境jenkins安装 自动编译 publish over ssh 远程发布.netcore webapi 服务化.netcore webapi

根据项目需求设置自动构建时间 配置时间可查阅corn表达式

3.构建环境

windows环境jenkins安装 自动编译 publish over ssh 远程发布.netcore webapi 服务化.netcore webapi

根据自己需求来选择构建环境(本次没用到就不写了)

4.构建

windows环境jenkins安装 自动编译 publish over ssh 远程发布.netcore webapi 服务化.netcore webapi

增加构建步骤,选择执行shell

windows环境jenkins安装 自动编译 publish over ssh 远程发布.netcore webapi 服务化.netcore webapi

构建顺序

还原nuget包(因为项目引用了多个nuget包源,这里将nuget包源放到配置文件中,还原的时候去找这个配置文件)

dotnet restore --configfile "E:youlinkNuGet.config"

编译代码

dotnet build

发布站点

cd YnkMapEngine.Web
dotnet publish YnkMapEngine.Web.csproj

这样站点就发布到本地了

5.构建后操作

将发布好的站点上传到远程服务器的某一个目录下

这里用到publish over shh

系统管理-插件管理-可选插件

windows环境jenkins安装 自动编译 publish over ssh 远程发布.netcore webapi 服务化.netcore webapi

安装publish over ssh 插件

安装完插件后需要配置远程服务器地址与连接方式 可以选择密码登录和秘钥登录

系统管理-系统配置

windows环境jenkins安装 自动编译 publish over ssh 远程发布.netcore webapi 服务化.netcore webapi

Jenkins SSH Key 分组下的Passphrase、Path to key 、 Key 是秘钥登录方式需要配置的

这里用的用户名密码的方式登录

在ssh servers分组下配置ssh server项

	Name:SSH Server项的名称

​	Hostname:要操作的远程服务器的地址

​	Username:要操作远程服务器的登录用户名

​	Remote Directory:配置可操作的路径 /默认C盘 切换其他磁盘/E:

windows环境jenkins安装 自动编译 publish over ssh 远程发布.netcore webapi 服务化.netcore webapi

use password authentication,or use a different key 勾选

Passphrase/Password 填登录用户的密码

Port设置端口号 默认22

Timeout设置超时时间

windows环境jenkins安装 自动编译 publish over ssh 远程发布.netcore webapi 服务化.netcore webapi

配置完成后点右下角test Configuration测试是否配置成功

增加构建后操作步骤

windows环境jenkins安装 自动编译 publish over ssh 远程发布.netcore webapi 服务化.netcore webapi

(我已经添加了就不能再选了)

先将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 用来执行停止服务的命令(如果服务的状态不是正在运行,编译的时候就会报错,自动构建机会终止,这里还需要再优化一下)

示例:

windows环境jenkins安装 自动编译 publish over ssh 远程发布.netcore webapi 服务化.netcore webapi

再添加一个Transfer Set用来做远程发布功能,要在停止服务的TransferSet之后执行

示例:

windows环境jenkins安装 自动编译 publish over ssh 远程发布.netcore webapi 服务化.netcore webapi

 

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:WindowsTEMPjenkins4061403380039367.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:jenkinsworkspacetest"): 
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%System32OpenSSH

,配置完成后打开powershell,输入ssh username@服务器地址 会提示输入密码,输入密码之后会进入到远程服务器的命令窗口,就可以操作远程服务器了。

秘钥方式研究了好长时间没整好,先用密码方式吧。

第一次写,有问题欢迎指正。



喜欢 (0)