背景

阿里云测试环境一台,带宽1M跟不上,Jenkins安装一个插件耗时很长,于是想在本地搭建Jenkins服务,将生成的安装文件同步到目标服务器上。

技术点有:

  • win10:本地环境是win10,测试环境是windown server 2012 R2

  • NET Core :部署版本是2.1.1,部署在IIS

  • Jenkins: 安装jenkins就不介绍了

  • bat:需要懂一点批处理命令

  • ·

    Jenkins插件:

  • Gogs plugin

  • Publish Over SSH

所需插件自行安装

Jeknin配置流程

创建Item

选择Gogs源码地址

这里三个是必填项:仓库地址,登陆凭据,代码分支;

Gogs是基于Git的这里和Github的仓库地址是一样的。

这里需要一个登陆凭证用于拉取代码,提供的凭证类型有很多,有用户名账户、SSH、以及秘钥等,这里选的是用户名和密码凭证:

分支格式就是*/xxxx,这里用的是develop

构建触发器

这里选择的时候当Gogs仓库收到push推送的时候触发构建。

如果没有这个选项,需要安装Gogs plugin插件

由于Jenkins是本地搭建的,Gogs无法将消息推送到,所以使用了内网穿透。

uTools 提供免费的内网穿透,很好用!

效果类似这样:

构建

jenkin提供的脚本很多,其它的没用过,这里用到是Excute Windows batch command这个选项

脚本命令如下:

// 清空xxxx文件夹所有文件
rd "%WORKSPACE%\publish\xxxx" //如果不存在创建文件夹
if not exist "%WORKSPACE%\publish\xxxx" md "%WORKSPACE%\publish\xxxx" //生成项目打包文件到指定文件夹下
dotnet publish "%WORKSPACE%\xxxx\xxxx\xxxx.csproj" -o "%WORKSPACE%\publish\xxxx" //当前目录是在%WORKSPACE%下的,需要cd指定具体操作目录
cd publish/xxxx //这里是将生成的项目文件使用7-zip打包了,所以需要删除上次遗留的压缩文件,不然会将上次打包文件也打包进去
del /a/f/q xxxx.api.zip //删除webconfig,不想copy到目标服务器上
del /a/f/q web.config //压缩项目文件
"C:\Program Files\7-Zip\7z.exe" a "xxxx.api.zip" "**"

之所以删除web.config,dotnet publish命令不知道怎么在web.config下生成相应的环境变量,比如目标环境是Staging.

构建后操作

构建好发布包后,一般是部署了,拷贝到web服务下。

这里目标服务器是远程不在局域网内,之前使用过很多种方式都没成功,比如:psexec,net use命令。最终只有SSH完成部署。

这里的目标服务器是预先配置好的,在jenkins的系统配置里的SSH 项下:

选择好目标服务后,设置必要的参数:

Transfer Set需要填写选项:

  • Source files:需要拷贝的目标文件
  • Remove prefix:移除前缀,如果不移除,会在目标服务器将前缀作为目录生成
  • Remote directory:目标及其需要安装SSH,这里是选择SSH可以操作的远程目录。
  • Exec command:将文件拷贝到目标机器后,可以执行命令,这里的命令测试时候好像只能执行一条,如果需要批量执行还是填写bat地址吧。

本文拷贝完成后需要执行停止应用程序池和重启功能,如下:

C:\Windows\System32\inetsrv\appcmd.exe stop apppool /apppool.name:"xxx"
"C:\Program Files\7-Zip\7z.exe" x "C:\Users\Administrator\jenkins\xxx.zip" -aoa -o"C:\iis-publish\jenkins\xxx"
C:\Windows\System32\inetsrv\appcmd.exe start apppool /apppool.name:"xxx"
ECHO 服务器脚本执行完毕

第二行是7-zip的压缩命令:

  • x:后面的参数源压缩文件;
  • -o:是解压到目标文件夹;
  • -aoa:是强制覆盖重复的文件;

Tip

  1. "C:\Program Files\7-Zip\7z.exe"这个命令要加引号,不然出错!为什么这样没搞清楚!
  2. stop apppool /apppool.name:"xxx"命令name后面不能有空格,不然也会出错的!踩过的坑!

参考

jenkins 配置 ssh插件

NET Core+win10+Jenkins+Gogs+open ssh持续集成的更多相关文章

  1. NET Core+win10+Jenkins+Github持续集成

    本篇和上一篇NET Core+win10+Jenkins+Gogs+open ssh持续集成没什么区别,只不过源码库换成github. 这里有两点不一样的是: 获取的代码的凭证不用用户名和密码用sec ...

  2. 使用 Jenkins 搭建 iOS/Android 持续集成打包平台【转】

    背景描述 根据项目需求,现要在团队内部搭建一个统一的打包平台,实现对iOS和Android项目的打包.而且为了方便团队内部的测试包分发,希望在打包完成后能生成一个二维码,体验用户(产品.运营.测试等人 ...

  3. Jenkins Jenkins结合GIT Maven持续集成环境配置

    Jenkins结合GIT Maven持续集成环境配置   by:授客 QQ:1033553122 安装Git插件 1 安装Git客户端 1 安装JAVA JDK及MAVEN 2 Jenkins JDK ...

  4. Docker+Jenkins+Maven+SVN搭建持续集成环境

    Docker+Jenkins+Maven+SVN搭建持续集成环境 环境拓扑图(实验项目使用PHP环境) 发布流程图 环境说明 系统:Centos 7.4 x64 Docker版本:18.09.0 Ma ...

  5. Net 项目构建基于Jenkins + Github + Mono 的持续集成环境

    Net 项目构建基于Jenkins + Github + Mono 的持续集成环境 阅读目录 1 安装 2 配置 3 测试 在Redhat enterprise 6.5 的服务器上,为在gutub 上 ...

  6. Jenkins构建Android项目持续集成之findbugs的使用

    Findbugs简介 关于findbugs的介绍,可以自行百度下,这里贴下百度百科的介绍.findbugs是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题 ...

  7. ASP.NET Core应用程序容器化、持续集成与Kubernetes集群部署(一)(转载)

    本文结构 ASP.NET Core应用程序的构建 ASP.NET Core应用程序容器化所需注意的问题 应用程序的配置信息 端口侦听 ASP.NET Core的容器版本 docker镜像构建上下文(B ...

  8. 漫谈:从APP崩溃率标准,到Monkey介绍拓展Maxim,及Jenkins自动化配置,持续集成获取崩溃monkey日志

    漫谈:从APP崩溃率标准,到Monkey介绍拓展Maxim,及Jenkins自动化配置,持续集成获取崩溃日志 1.APP崩溃率标准 开发或测试app的同学,对于app崩溃肯定非常熟悉,频繁的线上崩溃属 ...

  9. ASP.NET Core + Docker + Jenkins + gogs + CentOS 从零开始搭建持续集成

    为什么不用gitlab? 没有采用gitlab,因为gitlab比较吃配置,至少得2核4G的配置.采用go语言开发的gogs来代替,搭建方便(不到10分钟就能安装完成),资源消耗低,功能也比较强大,也 ...

随机推荐

  1. Oracle中start with...connect by/start with…connect by prior子句的用法

    connect by 是结构化查询中用到的,其基本语法是:select … from tablenamestart with 条件1connect by 条件2where 条件3;例:select * ...

  2. flask中获取request的参数的方法

    request请求总体分为两类: 1.get请求 访问时会在地址栏直接显示参数不安全,且参数大小比较小. 2.post请求 参数不显示在地址栏,一般用户注册.登录都通过post请求完成. flask获 ...

  3. Share架构的一些心得

    个人这些年,从web->system service->app 项目实战,陆陆续续经历的项目很多,自己也数不清.自己也一直对于架构没有明确去给出一个自己的定义描述. 刚好最近一直在flut ...

  4. 【The type javax.servlet.http.HttpServletRequest cannot be resolved】解决方案

    是缺少serverlet的引用库,解决如下 1.工程右键-properties->java build path 2.在java build path的libraries tab页中选择Add ...

  5. SPSS输出结果如何在word中设置小数点前面显示加0

    SPSS输出结果如何在word中设置小数点前面显示加0 在用统计分析软件做SPSS分析时,其输出的结果中,如果是小于1(绝对值)的数,那么会默认输出不带小数点的数值.例如0.362和 -0.141被显 ...

  6. 常见的网络设备:集线器 hub、网桥、交换机 switch、路由器 router、网关 gateway

    Repeater 中继器 Hub 集线器 bridge 网桥 switch 交换机 router 路由器 gateway 网关 网卡 参考资料: do-you-know-the-differences ...

  7. 深入浅出WPF(Binding篇1)

    Binding在业界的使用一直是音译而来的,称为"Binding".Binding的源是逻辑数据对象,目标则是UI层上面的控件对象.数据通过Binding送达UI层,被UI层展示出 ...

  8. 配置最漂亮的PyCharm界面,Python程序员必备!

    高逼格超美的IDE界面,是每个程序员的梦想! 随着人工智能/机器学习的兴起,Python作为一门“漂亮的语言”,再次获得广大程序员的关注.而JetBrains出品的PyCharm无疑是最好用的Pyth ...

  9. socketpair

    与pipe的区别 pipe产生的文件描述符是半双工的,需要pipe两次才能实现全双工,产生的两个描述符是一个读,一个写 socketpair直接就可以全双工,产生的两个文件描述符的任何一个都可读可写 ...

  10. 用递归方法求n!

    题目: 编写一个程序,输入n,求n!(用递归的方式实现). public class test { public static long fac(int n){ if(n<0){ return ...