通过Jenkins在IIS上布署站点
当需要在多台服务器的IIS上布署站点时,如果纯粹靠人工手动完成此任务的话,过于低效,而借助Jenkins之类的自动化工具,则可以极大提升工作效率。
以下便是Jenkins Pipeline所使用的脚本,它的DSL语法基于groovy,稍微学习一下的话,便能很快上手。在写这段脚本的时候,主要的难点是对是否已存在站点的判断。因为当执行appcmd list site /name:MyNewSite命令时,若是没有找到此站点,命令会返回非零的结果。而当Jenkins得到的是非零结果时,会认为是异常,将会停止整个脚本的运行。解决的办法是把bat方法中的可选参数returnStatus设置为true,这样做既能得到执行结果,又能让Jenkins正常地继续运行脚本。得到的执行结果若是零,说明该站点已经存在,可以先停掉它,复制完相关代码后再次启动;若是非零值,说明该站点不存在,可以执行一系列的建站操作。
pipeline {
agent any
stages {
stage("Deploy web application") {
steps {
script {
def websiteFolder = 'C:\\publish\\MyNewSite'
// 文件夹不存在的话就先创建它
if (!fileExists(websiteFolder)) {
bat 'mkdir -p ' + websiteFolder
}
def appcmd = 'C:\\Windows\\System32\\inetsrv\\appcmd.exe '
// 判断是否已布署过该站点
def result = bat(returnStatus: true, script: appcmd + 'list site /name:"MyNewSite"')
if (result == 0) {
// 站点与应用程序池先停掉
appcmd + 'stop apppool /apppool.name:MyNewSite'
appcmd + 'stop site /site.name:MyNewSite'
// 复制需要发布的文件到websiteFolder目录下
// 站点与应用程序池重新启动
appcmd + 'start apppool /apppool.name:MyNewSite'
appcmd + 'start site /site.name:MyNewSite'
} else {
// 复制需要发布的文件到websiteFolder目录下
// 未布署该站点场景,先创建站点并绑过端口号,以及物理路径
bat appcmd + 'add site /name:MyNewSite /bindings:"http/*:81:" /physicalPath:' + websiteFolder
// 再创建新的应用程序池,可以同时设置托管运行时的版本
bat appcmd + 'add apppool /name:MyNewSite /managedRuntimeVersion:v4.0'
// 将站点中应用程序所关联的应用程序池设置为新建的应用程序池
bat appcmd + 'set app /app.name:"MyNewSite/" /applicationPool:MyNewSite'
}
}
}
}
}
}
相关资料:
Jenkins Pipeline
fileExists
Windows Batch Script
AppCmd
通过Jenkins在IIS上布署站点的更多相关文章
- 在公网上布署Web Api的时候,不能调用,返回404
在internet上布署web API做的站点时,发现不能调用web api的任何action, 返回404. 经过很多的努力,也找不到原因,环境是win server 2008, IIS 75. n ...
- 在 IIS 上创建 FTP 站点
微软参考文档: 在 IIS 上生成 FTP 站点 主要过程: 1.控制面板 -> 程序 -> 启动或关闭Windows功能 -> 将Internet Information Serv ...
- 在IIS上搭建FTP站点
操作环境 系统:win7 IIS版本:7.5 FTP传输工具:FlashXP 概述 本文介绍了如何在win7下利用IIS(默认已安装IIS和FTP功能)搭建FTP站点,FTP站点的常用配置. 快速搭建 ...
- 用OpenSSL生成自签名证书在IIS上搭建Https站点(用于iOS的https访问)
前提: 先安装openssl,安装有两种方式,第一种直接下载安装包,装上就可运行:第二种可以自己下载源码,自己编译.这里推荐第一种. 安装包:http://slproweb.com/products/ ...
- ansible+packer+terraform在aws上布署web服务器
各工具所扮演的角色 ansible: 配合packer生成安装有apache的基础镜像 packer: 生成amazon AMI terraform: 以packer生成的镜像为基础,布署web服务器 ...
- OpenSSL使用1(用OpenSSL生成自签名证书在IIS上搭建Https站点)(用于iOS的https访问)
前提: 先安装openssl,安装有两种方式,第一种直接下载安装包,装上就可运行:第二种可以自己下载源码,自己编译.这里推荐第一种. 安装包:http://slproweb.com/products/ ...
- 在IIS上创建FTP服务
1 在IIS上创建 ftp站点, 然后设定端口号. 2 设定权限: 追加Everyone,IIS_IUSRS,并设定可读可写. 3 设定FTP授权规则:
- 运行Vue在ASP.NET Core应用程序并部署在IIS上
前言 项目一直用的ASP.NET Core,但是呢我对ASP.NET Core一些原理也还未开始研究,仅限于会用,不过园子中已有大量文章存在,借着有点空余时间,我们来讲讲如何利用ASP.NET Cor ...
- IIS6.0中布署MVC站点(转)
昨晚我写的API上线,API是vs2010 + MVC4开发的,需要布署到windows 2003 server + IIS6.0的环境中,之前一直是布在IIS7.0,比较熟悉, 换到IIS6.0,添 ...
随机推荐
- array2json() - Convert PHP arrays to JSON
array2json is a PHP function that will convert the array given as its argument into a JSON string. T ...
- 使用Jenkins搭建持续集成(CI)环境
转自:http://www.cnitblog.com/luckydmz/archive/2012/01/03/77007.html 首先从官网http://jenkins-ci.org/下载 Java ...
- 前后分离模型之封装 Api 调用
Ajax 和异步处理 调用 API 访问数据采用的 Ajax 方式,这是一个异步过程,异步过程最基本的处理方式是事件或回调,其实这两种处理方式实现原理差不多,都需要在调用异步过程的时候传入一个在异步过 ...
- SNF开发平台WinForm之十五-时间轴控件使用-SNF快速开发平台3.3-Spring.Net.Framework
一.显示效果如下: 二.在控件库里选择UCTimeAxis 拖拽到窗体里. 三.加入以下代码,在load事件里进行调用就可以运行了. #region 给时间轴控件加载数据 private void U ...
- 浅谈 OpenResty
一.前言 我们都知道Nginx有很多的特性和好处,但是在Nginx上开发成了一个难题,Nginx模块需要用C开发,而且必须符合一系列复杂的规则,最重要的用C开发模块必须要熟悉Nginx的源代码,使得开 ...
- Maven使用详解,非常详细
本文转:http://blog.csdn.net/u010425776/article/details/52027706 什么是Maven? 如今我们构建一个项目需要用到很多第三方的类库,如写一个使用 ...
- argparse - 命令行选项与参数解析
argparse模块作为optparse的一个替代被添加到Python2.7.argparse的实现支持一些不易于添加到optparse以及要求向后不兼容API变化的特性,因此以一个新模块添加到标准库 ...
- 【Spark 深入学习 07】RDD编程之旅基础篇03-键值对RDD
--------------------- 本节内容: · 键值对RDD出现背景 · 键值对RDD转化操作实例 · 键值对RDD行动操作实例 · 键值对RDD数据分区 · 参考资料 --------- ...
- 【spark 深入学习 05】RDD编程之旅基础篇-01
---------------- 本节内容 1.RDD的工作流程 2.WordCount解说 · shell版本WordCount · java版本WordCount -------------- ...
- [Big Data - Codis, Mycat(cobar)] 企业互联网+转型实战:如何进行PB级别数据的架构变迁
随着DT时代的来临,数据对于企业经营决策的价值日益凸显,而企业在进行互联网+转型的过程中,如何让数据架构平滑迁移到大数据平台,对于传统业务的转型升级至关重要.企业IT部门该如何进行PB级别大数据平台的 ...