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设置端口号 默认22Timeout设置超时时间

配置完成后点右下角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相关推荐

  1. Windows环境下安装Oracle11g客户端

    Windows环境下安装Oracle11g客户端 前言 假设你已经成功安装了Oracle11g,有一个本地的Oracle服务器,或者你有一个远程的Oracle服务器.注意保证客户端和服务器端体系结构的 ...

  2. Windows环境QtCharts安装配置说明(qt5.12.2+qtCharts5.12)

    Windows环境QtCharts安装配置说明(qt5.12.2+qtCharts5.12) qtCharts5.12下载地址 我这里选择5.12,你也可以选择你需要的版本 分别下了QtCharts ...

  3. Windows环境下安装scrapy

    scrapy是Python开发的一个爬虫框架,很多情况下都是基于Linux系统安装,本篇将介绍windows环境下安装scrapy框架,亲测有效. 1.安装依赖 直接pip install scrap ...

  4. Windows环境 C++ 安装OpenCV-contrib

    Windows环境 C++ 安装OpenCV-contrib 前言: 1.本文基于以下环境:Windows10 /C++ /OpenCV4.5.4 /Visual Studio2019 /OpenCV ...

  5. 服务器远程连接控制以及在Linux环境下安装go编译环境

    本文主要内容 一.xshell远程控制服务器 二.VS code远程控制服务器 三.在Linux环境下安装go编译环境 初学者在没有人的指导下自己摸索学习真的是太难了,回想一下从大二创新实践开始到现在 ...

  6. phpstudy集成包Windows环境下数据库自动备份

    phpstudy集成包Windows环境下数据库自动备份 这里我们会用到Windows下的任务计划程序,Windows服务器同理,如下图所示: 接着我们还需要用到mysqldump这个工具,phpst ...

  7. 代码审查工具【Review Board】在Windows环境下安装与配置

    前言 Review Board是基于Web的代码审查工具. 官方网站:https://www.reviewboard.org/ Review Board在Windows环境下安装是一件比较困难的事情, ...

  8. 在没有网的windows环境下安装Python模块

    在安装python环境以及python的一些模块时,可能需要在没有网的windows环境下安装Python模块. python模块下载地址,几乎所有的模块都有:https://www.lfd.uci. ...

  9. MYSQL 5.7 解压版 windows 环境下安装

    MYSQL 5.7 解压版 windows 环境下安装 1.下载MYSQL 2.下载完成后,放入要部署目录,解压. 3.新建 my.ini 文件 data 子文件夹千万不要自己建,否则后续启动会报错 ...

最新文章

  1. 2022-2028年中国动力电池回收行业投资分析及前景预测报告
  2. Java 接口小总结;
  3. wps两列数据分别作为xy轴_0.4 秒,完成两列数据核对
  4. 你们好好的学,回头教教我~
  5. centos 正确 安装 jdk
  6. 爬虫入门之绘图matplotlib与词云(七)
  7. 计算机通过逻辑电路实现运算,计算机组成与体系结构数据表示与运算算法和逻辑电路实现.ppt...
  8. 安装Ubuntu最后重启出错Write through
  9. Java并发编程之安全发布对象的四种方法
  10. GridView的dataformatstring设置
  11. 神经元细胞分布全身吗,人体神经细胞分布图
  12. 关于win10笔记本电脑插入耳机后依旧外放的问题(亲测戴尔)
  13. 使用批处理脚本修改hosts文件
  14. 今日头条信息流 - 广告策略
  15. Android如何做出带有复杂水印的图片
  16. 【解决git报错 10054】OpenSSL SSL_read: Connection was reset, errno 10054
  17. 数据结构——实现双栈操作
  18. jenkins 删除 构建历史
  19. AAAI2021会议马上开放注册了!注意截稿时间!
  20. 朴素贝叶斯情感分析评分python_详解基于朴素贝叶斯的情感分析及 Python 实现

热门文章

  1. 图表示学习和异质信息网络
  2. java 获取当前hhmm_java 判断当前时间符合cron时间表达式_J2SE_Java
  3. 记录:jenkins打包项目,代码不生效
  4. K13140 环形跑道(简化版)
  5. Linux入门学习(基础操作命令)
  6. IOS 初级开发入门教学(一)介绍篇
  7. matlab实现图像清晰化,基于MatLab的数字图像清晰化方法.pdf
  8. 【python打印星号三角形图案】
  9. 我的2019计算机保研夏令营/预推免经历【中南,北理工,北航,南大,浙大】
  10. Paint的setStrokeCap、setStrokeJoin、setPathEffect