在很久之前net还只能在windows上部署的时候,或许很多创业公司的朋友发布项目还都是人肉部署,反正windows都是可视化的界面,拖拖拉拉,开开关关还不

是特别麻烦。。。现如今你的项目需要在linux上部署,可惜的是再也没有什么可视化的界面给你,全在xshell上操作,如果在xshell上部署个位数的项目大家或许还可

以接受,如果要部署10+以上的服务呢,估计很多人在xshell上敲的头都大了。。。这就是为什么docker会有dockerfile,会有容器编排的docker-compose,所以找

一款自动化发布工具迫在眉睫了。

一: Jenkins部署

  它的官方网址是:https://jenkins.io/download/  ,使用docker模式部署的话太简单了,本篇就不用Docker部署,而是直接部署到宿主机Centos上,如下图:

1. 导入jenkins的key

sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

2. 使用yum安装

yum install jenkins

3. 启动jenkins

[root@localhost ~]# service jenkins start
Starting jenkins (via systemctl): [ OK ]

4. 然后在浏览器中输入你的虚拟机IP:  http://192.168.23.173:8080,看到下面的界面就算成功了。

  

  然后大家就可以按照步骤一步一步下去就可以了。

二:构建你的netcore程序

  先提供一个简单的test程序,供后续做自动化部署只用。

  static void Main(string[] args)
{
var bgtask = Task.Run(() =>
{
for (int i = ; i < ; i++)
{
Log.Info($"i={i}"); Thread.Sleep();
}
}); AppDomain.CurrentDomain.ProcessExit += (s, e) =>
{
Log.Info($"{DateTime.Now} 恭喜,TestService服务程序已准备退出!");
Environment.Exit();
}; bgtask.Wait();
}

三:jenkins配置

1.  点击新建任务

2. 选择构建一个自由风格的软件项目,然后点击确定

3.   这里的“源码管理”tab页是非常重要的,默认支持git和svn,这里就选择svn了,把你生成svn的地址贴上去,因为后续

执行shell脚本的时候,会在jenkins的workspace文件夹中执行dotnet publish 的。

4. 在“构建” tab页中,最最重要的就是里面的shell脚本。

ps -ef | grep MemSql.Test.dll | grep -v grep | awk '{print $2}' | xargs --no-run-if-empty kill
cd ./MemSql.Test
mkdir -p /data/output/MemSql.Test/v${BUILD_NUMBER}
dotnet publish -o /data/output/MemSql.Test/v${BUILD_NUMBER} -c Release
cd /data/output/MemSql.Test/v${BUILD_NUMBER}
BUILD_ID=dontKillMe nohup dotnet MemSql.Test.dll &

这里要关心的几处是:

《1》 在kill pid的时候,如果pid不存在,你的默认脚本会报pid不存在的错误的,所以加上 --no-run-if-empty  的if判断,没有就

不执行kill。

《2》 使用了一个Jenkins的一个环境变量 {BUILD_NUMBER} , 也就是下图中的这个位置,用这个编译版本号作为文件夹。

《3》 因为我是用nohup生成后台进程的,所以要使用dotKillMe命令让jenkins不要在生成完后kill 它。

然后点击保存,这个Test项目的自动化部署就搞定了。。。

四:操作流程

在操作之前,一定要记得让 jenkins用户提升一下权限,否则你的 copy,mkdir可能权限不足,这里我就提升成root权限。

1: 把jenkins用户加入到root组中。

gpasswd -a root jenkins

2:修改/etc/sysconfig/jenkins文件, 把原来的 users= jenkins 改成root。

# Unix user account that runs the Jenkins daemon
# Be careful when you change this, as you need to update
# permissions of $JENKINS_HOME and /var/log/jenkins.
#
JENKINS_USER="root"
JENKINS_GROUP="root"

3:重启Jenkins即可

service Jenkins restart

4. 然后你的步骤为:

《1》 在svn中提交代码。

《2》 找到你的所属项目,点击“立即构建”。

当然也可以让jenkins自动化构建,但是考虑到生成项目,最好还是加上手工发布这个按钮,安全可靠, 构建完之后,大家可以看看 jenkins的 “控制台输出”。

然后你可以通过ftp去生产看一下,果然都跑起来了,v21就是我的编译版本号,而且你的日志果然就是我的业务逻辑输出,对吧,如下图:

这时候,你觉得代码有问题,需要修改一下,把i 改成 m ,接下来的步骤也就是 “提交代码” -> “可视化立即编译”  ->  "查看结果" 这样的流水线作业而已啦。。。。

好了,本篇就说到这里,希望对你有帮助。

netcore编程之后面对不习惯的xshell黑屏部署,是时候使用jenkins自动化发布工具了的更多相关文章

  1. .netcore下的微服务、容器、运维、自动化发布

    原文:.netcore下的微服务.容器.运维.自动化发布 微服务 1.1     基本概念 1.1.1       什么是微服务? 微服务架构是SOA思想某一种具体实现.是一种将单应用程序作为一套小型 ...

  2. netcore使用 jenkins + supervisor 实现standalone下多副本自动化发布

    上一篇我们用jenkins做了一个简单的自动化发布,在shell中采用的是 BUILD_ID=dontKillMe nohup dotnet xxx.dll &  这种简单的后台承载,如果你的 ...

  3. cocos2d 2.0和UIKit混合编程, Push CCDirector的时候出现黑屏的天坑

    症状 使用cocos2d 2.0和UIKit混合编程, 有一块用cocos2d编写的小程序, 将CCDirector push到一个UINavigationController里面. 虽然事先在后台初 ...

  4. 使用Xshell和Xftfp部署简单的项目

    最近本人偶尔接触到该如何部署项目,朋友要求截图,趁此之际,简单总结一下,以供大家分享,更希望各位大神指点,大家相互学习,有问题的勿喷. 1.使用环境:win 7+MyEclipse 2014 + to ...

  5. 使用Xshell和Xftp部署简单的项目

    最近本人偶尔接触到该如何部署项目,朋友要求截图,趁此之际,简单总结一下,以供大家分享,更希望各位大神指点,大家相互学习,有问题的勿喷. 1.使用环境:win 7 + tomcat 7 + MyEcli ...

  6. .NetCore 分布式日志收集Exceptionless 在Windows下本地安装部署及应用实例

    自己安装时候遇到很多问题,接下来把这些问题写出来希望对大家有所帮助 搭建环境: 1.下载安装 java 8 SDK (不要安装最新的10.0) 并配置好环境变量(环境变量的配置就不做介绍了) 2.下载 ...

  7. Android 编程下通过 Theme 和 Style 避免 APP 启动闪黑屏

    之前在做 APP 的时候不太关注这个问题,因为自己在使用其他 APP 的时候也会在应用启动的初始有一个黑屏闪过后才会出现应用的欢迎页.直到最近开发过程中发现自己在欢迎页启动的线程由于请求和处理的数据量 ...

  8. Jenkins自动化部署.netcore程序

    一.安装jenkins 百度一下 二.构建前的准备 搭建好.net core2.0的环境,下载:https://aka.ms/dotnetcore-2-windowshosting  (,net co ...

  9. PyQt编程实战:画出QScrollArea的scrollAreaWidgetContents内容部署层的范围矩形

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.引言 在<PyQt(Python+Qt)学习随笔:QScrollArea滚动区域详解> ...

随机推荐

  1. NPOI生成不规则Excel表格(并以流的形式下载,不将文件保存在服务器上,直接在客户端导出excel)

    //下载NPOI类库并添加引用 using NPOI.SS.UserModel; using NPOI.HSSF.UserModel; using NPOI.SS.Util; public stati ...

  2. Android 资源文件命名与使用

    [推荐]资源文件需带模块前缀 [推荐]layout 文件的命名方式 Activity 的 layout 以 module_activity 开头 Fragment 的 layout 以 module_ ...

  3. 使用清华源替代Ubuntu源

    sudo nano /etc/apt/source.list 替换为如下文本 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main ...

  4. IDEA安装教程

    1.下载安装程序A,链接:https://pan.baidu.com/s/1IAsGDbApfyNsHuS7_m0rdw 密码:fthp 2.下载一个配置程序B,下载安装之后,暂时不用管,之后会用到. ...

  5. vue中keep-alive的用法

    1.keep-alive的作用以及好处 在做电商有关的项目中,当我们第一次进入列表页需要请求一下数据,当我从列表页进入详情页,详情页不缓存也需要请求下数据,然后返回列表页,这时候我们使用keep-al ...

  6. Python_json

    import json ''' Python内置了json包来帮助我们完成对json的操作. 将Python的字典结构导出到json使用json.dumps(),将json读成Python的字典结构, ...

  7. 【转】Sentry介绍

    Sentry 是一个开源的实时错误报告工具,支持 web 前后端.移动应用以及游戏,支持 Python.OC.Java.Go.Node.Django.RoR 等主流编程语言和框架 ,还提供了 GitH ...

  8. 阿里云oss挂载到linux本地文件系统

    对象存储 OSS 阿里云对象存储服务 (OSS) 是一种高度可伸缩且安全可靠的云对象存储服务,让您可以存储.备份和归档大量数据.阿里云 OSS 是一种简单易用的服务,让您每秒能处理数百万请求,它还支持 ...

  9. Java VisualVM无法检测到本地java程序 的 解决办法

    win10系统下启动jvisualvm应用,报"VisualVM无法检测到本地java程序"的错误!在网上查了一些方法, 大概原因有2种: 1.操作系统的临时文件目录所在的磁盘格式 ...

  10. 基于opencv3.0和下的条形码与二维码识别

    其中对条码与二维码的识别分为以下4个步骤 1. 利用opencv和Zbar(或者Zxing)对标准的条形码图片(即没有多余背景干扰,且图片没有倾斜)进行解码,将解码信息显示出来,并与原始信息对比. 2 ...