NET Core+win10+Jenkins+Gogs+open ssh持续集成
背景
阿里云测试环境一台,带宽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
"C:\Program Files\7-Zip\7z.exe"
这个命令要加引号,不然出错!为什么这样没搞清楚!stop apppool /apppool.name:"xxx"
命令name后面不能有空格,不然也会出错的!踩过的坑!
参考
NET Core+win10+Jenkins+Gogs+open ssh持续集成的更多相关文章
- NET Core+win10+Jenkins+Github持续集成
本篇和上一篇NET Core+win10+Jenkins+Gogs+open ssh持续集成没什么区别,只不过源码库换成github. 这里有两点不一样的是: 获取的代码的凭证不用用户名和密码用sec ...
- 使用 Jenkins 搭建 iOS/Android 持续集成打包平台【转】
背景描述 根据项目需求,现要在团队内部搭建一个统一的打包平台,实现对iOS和Android项目的打包.而且为了方便团队内部的测试包分发,希望在打包完成后能生成一个二维码,体验用户(产品.运营.测试等人 ...
- Jenkins Jenkins结合GIT Maven持续集成环境配置
Jenkins结合GIT Maven持续集成环境配置 by:授客 QQ:1033553122 安装Git插件 1 安装Git客户端 1 安装JAVA JDK及MAVEN 2 Jenkins JDK ...
- Docker+Jenkins+Maven+SVN搭建持续集成环境
Docker+Jenkins+Maven+SVN搭建持续集成环境 环境拓扑图(实验项目使用PHP环境) 发布流程图 环境说明 系统:Centos 7.4 x64 Docker版本:18.09.0 Ma ...
- Net 项目构建基于Jenkins + Github + Mono 的持续集成环境
Net 项目构建基于Jenkins + Github + Mono 的持续集成环境 阅读目录 1 安装 2 配置 3 测试 在Redhat enterprise 6.5 的服务器上,为在gutub 上 ...
- Jenkins构建Android项目持续集成之findbugs的使用
Findbugs简介 关于findbugs的介绍,可以自行百度下,这里贴下百度百科的介绍.findbugs是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题 ...
- ASP.NET Core应用程序容器化、持续集成与Kubernetes集群部署(一)(转载)
本文结构 ASP.NET Core应用程序的构建 ASP.NET Core应用程序容器化所需注意的问题 应用程序的配置信息 端口侦听 ASP.NET Core的容器版本 docker镜像构建上下文(B ...
- 漫谈:从APP崩溃率标准,到Monkey介绍拓展Maxim,及Jenkins自动化配置,持续集成获取崩溃monkey日志
漫谈:从APP崩溃率标准,到Monkey介绍拓展Maxim,及Jenkins自动化配置,持续集成获取崩溃日志 1.APP崩溃率标准 开发或测试app的同学,对于app崩溃肯定非常熟悉,频繁的线上崩溃属 ...
- ASP.NET Core + Docker + Jenkins + gogs + CentOS 从零开始搭建持续集成
为什么不用gitlab? 没有采用gitlab,因为gitlab比较吃配置,至少得2核4G的配置.采用go语言开发的gogs来代替,搭建方便(不到10分钟就能安装完成),资源消耗低,功能也比较强大,也 ...
随机推荐
- ubuntu 虚拟机安装vmware tools
1.打开ubuntu虚拟机,点击“虚拟机”---> "安装 vmware tools" 2.进入vmware tools光盘,将VMwaretools压缩包复制粘贴到桌面 ...
- delphi 之 get post
http://www.cnblogs.com/ccqin/archive/2012/08/22/2650348.html delphi 之 get post 没测试过这个 var Source: TM ...
- Drone - 安装,搭配 GitLab 下的配置和使用
参考资料: Drone 官网地址:https://drone.io Drone 的 GitHub 地址:https://github.com/drone/drone 简介:https://imnerd ...
- 史上最全 ——LINQ to SQL语句
LINQ to SQL语句(1)之Where 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句.Where操 ...
- 【python】含中文字符串截断
对于含多字节的字符串,进行截断的时候,要判断截断处是几字节字符,不能将多字节从中分割,避免截断后乱码 下面给出utf8和gb18030上的实现, 用任何一种都可以,可以先进行转码,用encode, d ...
- C++学习笔记(一)--基础
1.遵循标准C++,主函数类型为int,成功返回值为0,异常返回默认为-1. 2.使用系统函数库,必须加上 using namespace std,因为C++的标准库函数是在命名空间std中: 3.输 ...
- PHP json_encode 中文不转码,低版本处理
5.4 以上版本可以使用 JSON_UNESCAPED_UNICODE 来解决,但是低版本的,需要用其他方式 需要注意的是,encode_json参数为数组,不能为对象 function encod ...
- hdu6311 Cover (欧拉路径输出)
hdu6311Cover 题目传送门 题意:有最少用多少条边不重复的路径可以覆盖一个张无向图. 分析:对于一个连通块(单个点除外),如果奇度数点个数为 k,那么至少需要max{k/2,1} 条路径. ...
- Qt 如何使用反射?
Qt 如何使用反射? c++ 反射 标准库暂时还没有,那我们来看看如何使用 qt 来进行反射. 反射类的案例 1. 通过注册的类型需找 id 进行实例化该类 myclass.h #include &l ...
- 【java】jstack分析查看线程状态
演示代码 public class StackTest { public static void main(String[] args) { Thread thread = new Thread(ne ...