发布应用

应用构建成功后,接下来是将构建项目的输出目录copy到应用服务器相应的站点目录中,由于目标的应用服务器都是windows系统,因此无法像linux系统一样通过ssh远程命令操作。目前提供了三种解决方案,使用Ftp直接上传到应用服务器,使用Windows下的Rsync方式,以及Python脚本的方式。

1) Ftp方式

1.1 需先Jenkins上安装Ftp插件。同时在发布的目标应用服务器安装配置好Ftp服务。

安装插件后,进入系统管理->Global Tool Configuration,找到FTP repository hosts配置选项。

Porfile Name:随便取个名字,后面Job配置会应用到。

hostname:Ftp主机名(端口号默认21)

TimeOut:设置timeout

Root Repository Path:Ftp服务端跟/目录

User Name:Ftp用户名

Password:Ftp密码

1.2 项目配置

构建后操作->增加构建后操作步骤->Publish artifacts to FTP

FTP site:全局中配置的

Source:选择发布包路径,即项目构建输出的目录。

Remote directory:放到远程目标路径(相对于Ftp根目录的路径)

前提先在要发布的目标服务器上先安装好FTP服务,搭建IIS的ftp站点,作为FTP服务器端,具体安装略。

配置完成后,Jenkins上点击构建。

2) Rsync方式

2.1 Windows server环境配置使用rsync命令。

Jenkins的Job配置项构建中,增加构建步骤->Execute Windows batch command

2.2 配置rsync

Windows server中使用rsync命令需要安装配置cwRsync,有Server端和Client端。现在官网已经不免费提供cwRsync Server服务了。应用服务器端安装cwRsync Server,Jenkins服务器配置rsync的Client端。具体cwRsync Server与Client安装略。

cwRsync Server默认安装下,cwRsync Server端的C:\Program Files (x86)\ICW\rsync.conf文件配置如下:

uid = 0

gid = 0

use chroot = false

strict modes = false

hosts allow = *

log file = rsyncd.log

port = 873

[APIData]

path = /cygdrive/e/Web/APIData-test/web

secrets file = /cygdrive/c/Program Files (x86)/ICW/rsyncd.secrets

list = true

auth users = rsync_user

read only = false

cwRsync Client端的rsync命令在Jenkins中的配置如下:

"C:\Program Files (x86)\cwRsync\bin\rsync.exe" -avzP --progress --delete --port=873 --password-file="/cygdrive/c/Program Files (x86)/cwRsync/passwd.txt" /cygdrive/e/Publish-web/APIData-Test2/web/ rsync_user@10.10.10.53::APIData

配置完成后,Jenkins上点击构建。

3) Python脚本实现方式

winRM服务是windows server下PowerShell的远程管理服务。Python脚本可通过连接winRM模块操作windows命令行。

3.1配置winRM服务

在被控制windows server上winRM服务操作:

查看winRM服务状态,默认都是未启动状态,下面命令执行后无任何结果输出,需执行后续步骤进行开启。

> winrm enumerate winrm/config/listener

配置winRM服务启动

> winrm quickconfig

查看windows的winrm service listener

> winrm e winrm/config/listener

winrm service配置auth

> winrm set winrm/config/service/auth @{Basic="true"}

配置winrm service 加密方式为允许非加密

> winrm set winrm/config/service @{AllowUnencrypted="true"}

3.2配置python脚本

Job配置项构建中,增加构建步骤->Execute Windows batch command

Python脚本如下:

import winrm

import os

import sys

import time

env = os.getenv("ENV")

print('选择发布构建的服务器ENV是:', env)

if env == '10.10.10.10':

win2008r2 = winrm.Session('http://10.10.10.10:5985/wsman',auth=('deploy_user','xxxxxx'))

ip = win2008r2.run_cmd('ipconfig | findstr "10.10.10.10"')

app_list = win2008r2.run_cmd('C:\\Windows\\System32\\inetsrv\\appcmd.exe list app')

app_stop = win2008r2.run_cmd('C:\\Windows\\System32\\inetsrv\\appcmd.exe stop site DataapiBM')

backup = win2008r2.run_cmd('xcopy D:\\Web-prd\\DataapiBM D:\\Web-prd\\backup\\DataapiBM-%date:~8,2%月%date:~11,2%日%time:~0,2%时%time:~3,2%分%time:~6,2%秒\ /exclude:D:\\Web-prd\\backup\\exclude.txt /ryhs')

rsync_code = win2008r2.run_cmd('C:\\cwRsync\\bin\\rsync.exe -vzrtopg --numeric-ids --progress --port=1873 --password-file=/cygdrive/c/cwRsync/passwd.txt

app_start = win2008r2.run_cmd('C:\\Windows\\System32\\inetsrv\\appcmd.exe start site DataapiBM')

app = win2008r2.run_cmd('C:\\Windows\\System32\\inetsrv\\appcmd.exe list app | findstr DataapiBM')

print("当前发布的服务器IP:")

print(ip.std_out)

print("列出当前应用pool站点app")

print(app_list.std_out.decode())

print(app_list.std_err)

print("开始停DataapiBM站点app")

print("Stoping...")

print(app_stop.std_out.decode())

print(app_stop.std_err)

time.sleep(3)

print("开始备份DataapiBM站点程序...")

print(backup.std_out)

print(backup.std_err)

time.sleep(3)

print("开始从代码仓库同步DataapiBM最新程序...")

print(rsync_code.std_out.decode())

print(rsync_code.std_err)

time.sleep(5)

print("开始启动DataapiBM站点服务")

print("Starting...")

print(app_start.std_out.decode())

print(app_start.std_err)

time.sleep(5)

print(app.std_out.decode())

print(app.std_err)

print("站点服务DataapiBM已启动成功,发布完成,请验证!")

elif env == '10.10.10.11':

win2008r2 = winrm.Session('http://10.10.10.11:5985/wsman',auth=('deploy_user','HicoreP@ss'))

ip = win2008r2.run_cmd('ipconfig | findstr "10.10.10.11"')

app_list = win2008r2.run_cmd('C:\\Windows\\System32\\inetsrv\\appcmd.exe list app')

app_stop = win2008r2.run_cmd('C:\\Windows\\System32\\inetsrv\\appcmd.exe stop site DataapiBM')

backup = win2008r2.run_cmd('xcopy D:\\Web-prd\\DataapiBM D:\\Web-prd\\backup\\DataapiBM-%date:~8,2%月%date:~11,2%日%time:~0,2%时%time:~3,2%分%time:~6,2%秒\ /exclude:D:\\Web-prd\\backup\\exclude.txt /ryhs')

rsync_code = win2008r2.run_cmd('C:\\cwRsync\\bin\\rsync.exe -vzrtopg --numeric-ids --progress --port=1873 --password-file=/cygdrive/c/cwRsync/passwd.txt

app_start = win2008r2.run_cmd('C:\\Windows\\System32\\inetsrv\\appcmd.exe start site DataapiBM')

app = win2008r2.run_cmd('C:\\Windows\\System32\\inetsrv\\appcmd.exe list app | findstr DataapiBM')

print("当前发布的服务器IP:")

print(ip.std_out)

print("列出当前应用pool站点app")

print(app_list.std_out.decode())

print(app_list.std_err)

print("开始停DataapiBM站点app")

print("Stoping...")

print(app_stop.std_out.decode())

print(app_stop.std_err)

time.sleep(3)

print("开始备份DataapiBM站点程序...")

print(backup.std_out)

print(backup.std_err)

time.sleep(3)

print("开始从代码仓库同步DataapiBM最新程序...")

print(rsync_code.std_out.decode())

print(rsync_code.std_err)

time.sleep(5)

print("开始启动DataapiBM站点服务")

print("Starting...")

print(app_start.std_out.decode())

print(app_start.std_err)

time.sleep(5)

print(app.std_out.decode())

print(app.std_err)

print("站点服务DataapiBM已启动成功,发布完成,请验证!")

else:

print('请正确选择部署环境!')

配置完成后,点击“Build with Parameters”,选择下拉框中对应的服务器节点进行构建。

查看构建情况,通过控制台查看:

控制台输出构建详细的log信息,如果构建成功,会有个蓝色的圈圈,并且控制台最后输出“Finished: SUCCESS”信息,表示此Job构建成功。相应的如果构建失败,控制台也会输出报错信息。

自此,项目自动化构建完成。当然其中有些环节还需继续优化。测试比较下来,应用发布这步操作,winRM+Python方式比较灵活方便。

python项目自动化部署_Jenkins+GitLab+Msbuild+Python自动化部署.Net项目相关推荐

  1. git maven 一键部署_Jenkins Git Maven搭建自动化部署项目环境 邮件通知

    简介 折腾了两个晚上,趁着今晚比较有空,把jenkins+git+maven搭建自动化部署项目环境搭建的过程记录一下,这里我把github作为git的远程仓库(https://github.com/j ...

  2. Python【算法中心 03】Docker部署Django搭建的Python应用流程实例(Docker离线安装配置+Django项目Docker部署)

    1.Docker离线安装配置 rpm版本安装 # 系统版本 rpm -qi centos-release Name : centos-release Version : 8.1 Release : 1 ...

  3. python automl_自动化的机器学习(AutoML):将AutoML部署到云中

    编辑推荐: 在本文中,将介绍一种AutoML设置,使用Python.Flask在云中训练和部署管道:以及两个可自动完成特征工程和模型构建的AutoML框架. 本文来自于搜狐网,由火龙果软件Alice编 ...

  4. python自动化验证部署_Python selenium自动化测试环境安装部署

    1. Windows系统下python环境搭建 1.1首先访问http://www.python.org/download/去下载最新的python版本.本人使用的是2.7的python版本 1.2安 ...

  5. python运维工程师招聘_【python自动化运维工程师工资】图灵学院2020年python自动化运维工程师工资待遇-看准网...

    职位描述 招聘要求: 至少满足下面三个招聘方向中的一条. 招聘主要方向: 一.python web高级讲师 职位要求: 1.精通Python,具有python web开发经验,有参与多个完整的项目生命 ...

  6. 70个python毕设项目_56个具有开创性的Python开源项目-开始使用Python

    Python正在蓬勃发展,它的Gistub页面也是如此.今年对于Python来说很棒,我们看到了一些非常强大的python开源项目.今天,我们将列出一些最好的python开源项目:尝试至少对其中一个项 ...

  7. python简历项目经验在哪里找_Linux运维工程师简历项目经验

    如何做好一个合格的运工程师,运维工程师前景怎么样呢?就这些问题,与大家交流一下.首先对于运维工程师的要求是十分严苛的了,运维工程师不但要针对不同的问题做出响应,而且需要不断的补充自己的知识面,并不继提 ...

  8. gitlab CI/CD自动化部署

    文章目录 1. gitlab Runner 1.1 安装gitlab Runner 1.2 注册runner 2. .gitlab-ci.yml的书写 3. 部署 3.1 docker方式部署 3.2 ...

  9. python supervisor flask_python web 部署:nginx + gunicorn + supervisor + flask 部署笔记

    分享一篇文章,原文来自:python web 部署. Python web 部署 web开发中,各种语言争奇斗艳,web的部署方面,却没有太多的方式.简单而已,大概都是 nginx 做前端代理,中间 ...

最新文章

  1. 提高C++性能的编程技术笔记:临时对象+测试代码
  2. 失败 安装scikit_scikit-learn0.22版本最新发布
  3. [云炬Python学习笔记] Python读取指定文件夹下的文件
  4. ACL 2019 | 巧用文本语境信息:基于上下文感知的向量优化
  5. 问题 F: 分盒子(经典)
  6. boot jndi数据源 spring_spring boot多数据源配置(mysql,redis,mongodb)实战
  7. 既约分数蓝桥杯c语言,2021蓝桥杯C++第二届省赛
  8. H5调用手机摄像头,实时拍照上传(旧)
  9. Repeater控件的嵌套使用
  10. 江苏计算机二级vb,江苏省计算机等级考试二级vb.ppt
  11. Eclipse或者MyEclipse—在Eclipse或MyEclipse中的操作(2)
  12. 计算机网络原理 实验2《Windows Socket编程》
  13. mysql 授权_MySQL的授权
  14. 2021年皓丽新品- 86KD1 86寸纳米智慧黑板(电容屏)-产品说明
  15. Stellarium0.9.0新功能
  16. hibernate操作步骤(代码部分)
  17. 如何解决Mac电脑中的“AppStore无法下载软件”问题?
  18. 【U8+】用友U8+登录账套,提示“指定的参数已超出有效值的范围。参数名:index”
  19. arcgis地图开发测面、测距、定位小工具
  20. 苏州地区公交查询的Webservice

热门文章

  1. 大道至简——AlphaGo Zero的减法生存
  2. js的匀加速,匀减速运动
  3. TDengine 2.6 delete 删除功能尝鲜
  4. 国外被疯赞的一篇神文:你该增加人生技能了(转)
  5. WordPress代码和分析-页面模板是从哪里来的
  6. 连锁门店管理进货、线下拓客信息解决方案
  7. 使用 vim 和 xxd 编辑二进制文件
  8. Kernel: x86: preempt_count, per-cpu(每个CPU一份的变量)
  9. 美团网求上市,是否会重蹈拉手网的覆辙?
  10. 成功学是中国当代社会的毒瘤(转载)