一、背景

以前在发布系统的时候,总是需要经过本地合并代码 >编译 >发布到本地 >拷贝代码到远程服务器 >停止掉服务器上的应用池 >将要发布的文件替换原文件 >重启应用程序池 >打开系统观察系统是否正常启动,一套下来差不多一个小时的时间就过去了,如果这时候某个同事说他的代码没有提交完,那么又需要重复一遍上面的操作过程,时间又得一个小时。那么有没有什么工具可以代替认为的去执行上面这一些工作呢? 有, 那就是今天需要介绍 Jenkins。

    Jenkins是一个开源软件项目,源码地址:https://gitee.com/mirrors/jenkins?utm_source=alading&utm_campaign=repo,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

说在前面

  1. 本文中所有描述的操作均是基于 Windows 环境。
  2. Jenkins需要安装在项目最终发布的服务器(计算机)上;
  3. 服务器允许访问外网及允许被外网访问;
  4. 建议部署在需要高频发布版本的开发环境,不建议部署在生产环境;

二、Jenkins的安装与配置

2.1 安装前准备

2.1.1 安装 jdk

由于Jenkins是java语言开发的,因需要jdk环境。

  • 打开jdk下载页面https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html,下载jdk安装包。
  • 双击打开下载好的安装包文件,进行安装(一路点击“下一步”),等待安装完成后.
  • 为验证是否安装成功,Win+R 打开运行窗口,输入 cmd(或在开始菜单中搜索“命令提示符”),在打开的的命令行窗口中输入 java -version 之后出现 java 版本号信息时,则表是jdk已安装好了。

2.1.2 下载Jenkins

打开Jenkins安装包下载页面:https://www.jenkins.io/download/



选择要运行的操作系统环境,由于本文介绍的是Windows环境下的使用,故选择 Windows,点击 Windows 将下载安装包。

2.2 Jenkins 安装

2.2.1 开始安装

双击文件 jenkins.msi 打开安装引导程序。

点击 Next



设置好安装路径后,点击 Next



选择Jenkins登陆类型



点击 Next



设置端口号,默认端口号为8080,也可以修改为其他端口号,点击Test Pirt测试端口号是否可用,点击 Next



指定jdk安装路径,设置完成就点击 Next



点击 Next



点击Install



开始安装



等待安装完成,点击Finish完成Jenkins安装。

2.2.2 配置

使用浏览器打开地址:http://localhost:8080,8080为安装时初始化的端口号。待页面显示下面结果。

默认情况下,您的Jenkins运行在 https://localhost:8080/。 可以通过编辑来更改 jenkins.xml 它,该文件位于您的安装目录中。该文件也是更改其他引导配置参数(例如JVM选项,HTTPS设置等)的地方。



按照给定的路径找到文件initialAdminPassword,用记事本打开,并将文件中的密码复制粘贴到上图中的输入框中,点击继续按钮

稍等片刻,直至页面显示如下内容:



点击安装推荐的插件开始安装插件





等待插件安装完成,安装过程可能需要持续数分钟,具体视网速情况而定。安装完成后将提示创建管理员账号,如下图,



填写账号密码等信息后,点击保存并完成



继续点击保存并完成



点击开始使用Jenkins,进入管理界面

2.2.3 安装必要插件

点击左侧 Manage Jenkins 菜单,找到 Manage Plugins,点击进入插件管理界面。



选择可选插件,并在上方的搜索框中输入 PowerShell



点击“直接安装”,再点击安装完成后重启Jendens(空闲时),待安装后会自动重启Jenkins,

还可以安装其他需要的插件如,钉钉消息推送时会用到的 DingTask 等插件

三、自动部署示例

示例针对的项目是基于.Net Core 创建的Web项目,故添加项目的配置内容可能读者实际情况存在一些差异。

添加项目

进入Jenkins管理首页,点击“新建Item”,如下图所示

输入项目名称,并选择 Freestyle project,点击确定按钮,进入项目配置界面。

General(常规)

在“描述”中添加必要的描述信息

源码管理

选择Git,并在“Repositories”(仓储)中指定“Repository URL”(仓储地址)如:https://github.com/earen/TestPro.git“Credentials”(凭证);

“Branches to build”(要进行构建的分支)项中的“指定分支(为空时代表any)”中输入分支名称,如 dev

“源码库浏览器” 选择(自动)

构建

选择增加构建步骤下的 PowerShell

“PowerShell > Command”中输入如下命令

#invoke-webrequest -Uri 'https://oapi.dingtalk.com/robot/send?access_token=口令'  -Body '{"msgtype": "text","text": {"content": "CeoDP is buiding..." }}' -ContentType 'application/json' -Method  Post

C:\Windows\System32\inetsrv\appcmd.exe stop apppool /apppool.name:"TestPro"
cd src\TestProWebApi\TestPro.Web.Host
dotnet restore
dotnet build
#SET ASPNETCORE_ENVIRONMENT=development
Remove-Item C:\wwwroot\TestProPublish -Recurse -Force -Confirm:$false
New-Item C:\wwwroot\TestProPublish -type directory
dotnet publish TestPro.Web.Host.csproj -o C:\wwwroot\TestProPublish
cd C:\wwwroot\TestProPublish
copy TestPro.* F:/wwwroot/1800/dev
C:\Windows\System32\inetsrv\appcmd.exe start apppool /apppool.name:"TestPro" #invoke-webrequest -Uri 'https://oapi.dingtalk.com/robot/send?access_token=口令' -Body '{"msgtype": "text","text": {"content": "TestPro is updated! check: http://localhost:8101/" }}' -ContentType 'application/json' -Method Post

勾选下方的“Use PowerShell profile”

命令说明:

  • “#invoke-webrequest” 开头的消息是为了推送钉钉群消息
  • “C:\Windows\System32\inetsrv\appcmd.exe stop apppool /apppool.name:"TestPro"” 停止应用程序池 TestPro
  • “cd TestProWebApi\TestPro.Web.Host” 进入目录 TestWebApi\TestPro.Web.Host
  • “dotnet restore ” 还原项目包文件
  • “dotnet build” 编译项目
  • “#SET ASPNETCORE_ENVIRONMENT=development” 设置运行环境为开发环境
  • “Remove-Item C:\wwwroot\TestProPublish -Recurse -Force -Confirm:$false” 去掉项 C:\wwwroot\TestProPublish
  • “New-Item C:\wwwroot\TestProPublish -type directory” 添加项 C:\wwwroot\GeoDpPublish
  • “dotnet publish TestPro.Web.Host.csproj -o C:\wwwroot\TestProPublish” 发布项目到目录 C:\wwwroot\TestProPublish
  • “cd C:\wwwroot\TestProPublish” 进入目录 C:\wwwroot\TestProPublish
  • “copy TestPro.* F:/wwwroot/1800/dev” 复制文件名以TestPro.开头的文件到目录 F:/wwwroot/1800/dev中;
  • “C:\Windows\System32\inetsrv\appcmd.exe start apppool /apppool.name:"TestPro"” 启动应用程序池TestPro

发布项目

进入 Jenkins 管理界面, 找到要发布更新项目,点击项目名称,进入下面界面,按照标记所示,点击Build Now按钮,开始构建项目



左下角为构建历史(历史发布),点击可以查看历史明细,如下图



Changes 中列举的内容为 Git 代码提交日志内容

Jenkins 自动化部署详解的更多相关文章

  1. Linux下的Jenkins+Tomcat+Maven+Gitlab+Shell环境的搭建使用(jenkins自动化部署)

    jenkins自动化部署 目标:jenkins上点构建(也可以自动检查代码变化自动构建)>>>项目部署完成. 一.安装jenkins 1.下载jenkins 这里我选择的是war包安 ...

  2. Linux下的Jenkins+Tomcat+Maven+Git+Shell环境的搭建使用(jenkins自动化部署)【转】

    jenkins自动化部署 目标:jenkins上点构建(也可以自动检查代码变化自动构建)>>>项目部署完成. 一.安装jenkins 1.下载jenkins 这里我选择的是war包安 ...

  3. Linux下的Jenkins+Tomcat+Maven+Git+Shell环境的搭建使用(jenkins自动化部署)

    jenkins自动化部署 目标:jenkins上点构建(也可以自动检查代码变化自动构建)>>>项目部署完成. 一.安装jenkins 1.下载jenkins 这里我选择的是war包安 ...

  4. jenkins自动化部署项目1--下载安装启动(windows)

    年初以来断断续续研究jenkins自动化部署项目,前些天终于搞定了,接下来一点点把做的时候遇到的坑以及自己的心得写下来,方便以后复用. 我的jenkins服务是是部署在windows上的 一.下载安装 ...

  5. Windows环境下实现Jenkins自动化部署

    详见:https://blog.csdn.net/Try_harder_every_day/article/details/79170065 Jenkins自动化部署: 几条具体的思路:1.开发人员将 ...

  6. Jenkins 自动化部署上线

    转载于互联网 jenkins自动化部署项目,通过jenkins 部署来节省运维时间,不需要手动cp上线及版本发布 Jenkins 自动化部署上线 Jenkins Jenkins 自动化部署上线一.Je ...

  7. centos7.2环境elasticsearch-5.0.1+kibana-5.0.1+zookeeper3.4.6+kafka_2.9.2-0.8.2.1部署详解

    centos7.2环境elasticsearch-5.0.1+kibana-5.0.1+zookeeper3.4.6+kafka_2.9.2-0.8.2.1部署详解 环境准备: 操作系统:centos ...

  8. 【转】Nginx+php-fpm+MySQL分离部署详解

    转:http://www.linuxidc.com/Linux/2015-07/120580.htm Nginx+php-fpm+MySQL分离部署详解 [日期:2015-07-26] 来源:Linu ...

  9. Solr部署详解

    Solr部署详解 时间:2013-11-24 方式:转载 目录 1 solr概述 1.1 solr的简介 1.2 solr的特点 2 Solr安装 2.1 安装JDK 2.2 安装Tomcat 2.3 ...

随机推荐

  1. C++ 关于map,function的简单应用

    map<string,function<int(int, int)>> funs =    {        {"+", add},        {&qu ...

  2. 保姆教程系列二、Nacos实现注册中心

    前言: 请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i 上篇我们介绍到  保姆教程系列一.Linux搭建Nacos 注册中心原理 一.环境准备 Java版本:1.8+   (Linux ce ...

  3. java中遗留的小问题

    一.类型转换 short s = 1; s = s + 1; //false,因为1是int类型,会损失精度 short s = 1; s += 1; //true,因为+=有自带强转 二.逻辑运算符 ...

  4. Zookeeper Watcher 机制 -- 数据变更通知 ?

    Zookeeper 允许客户端向服务端的某个 Znode 注册一个 Watcher 监听,当服务 端的一些指定事件触发了这个 Watcher,服务端会向指定客户端发送一个事件通 知来实现分布式的通知功 ...

  5. Java 中,DOM 和 SAX 解析器有什么不同?

    DOM 解析器将整个 XML 文档加载到内存来创建一棵 DOM 模型树,这样可以 更快的查找节点和修改 XML 结构,而 SAX 解析器是一个基于事件的解析器, 不会将整个 XML 文档加载到内存.由 ...

  6. remote debug 的详细配置

    一.remote debug 的简单介绍 何为远程debug,项目写完后就需要进入到测试环节,将代码打包发布到测试环境(服务器)上.这时候测试人员测试出一个缺陷(bug).由于代码已经发布到测试环境, ...

  7. DIV 上下左右居中黑科技

    <style> #info{height:0px; width:0px;top:50%; left:50%;position:absolute;} #center{background:# ...

  8. 一个好用的swagger第三方ui-xiaoymin

    swagger自带的ui界面实在是看的难受 配置完默认访问地址:ip:port/swagger-ui.html 推荐一个好用的第三方ui,界面如图: 使用方法: 1.添加依赖 <dependen ...

  9. 用Java编写的猜拳小游戏

    学习目标: 熟练掌握各种循环语句 例题: 代码如下: // 综合案例分析,猜拳案例 // isContinue为是否开始游戏时你所输入的值 char isContinue; //y为开始,n为借宿 S ...

  10. 关于Symbol.iterator 学习笔记

    1.可以部署在对象上的一个遍历器 2. 遍历器是一个函数,需要返回一个含有一个next 方法的对象 const likeArray = {0:'a', 1: 'b', 2: 'c',3: 'd'. l ...