jenkins 持续构建windows 项目

需求说明

公司新购windwos服务器,并配置了堡垒机,由于经常要提交代码进行更新,导致手动部署很是麻烦,故采用公司jenkins实行持续构建

jenkins服务部署到linux服务器,项目代码存放到windows服务器

环境说明

服务端: Centos7

客户端: Windows Server 2012 R2

软件说明

python 3.5.6

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

操作过程

配置windows服务器

  • 查看winRM服务状态,默认都是未启动状态

   winrm e winrm/config/listener

由于之前我已经配置过了,所以已经启动监听

  

  • 开启winRM

   winrm quickconfig

  • 为winrm service 配置auth

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

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

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

配置jenkins服务

  • 选择自由风格项目  

shell命令'进入你要构建的windows项目目录下,执行python脚本',这个路径是我搭建的gogs路径,root下一个项目

配置了linux python脚本

cd /usr/local/cpgroup/git/gogs-repositoriesd/root/saasiorder.git/hooks

#!/usr/bin/python
import winrm
import sys
import re
tag_name=sys.argv[1]
build_name=sys.argv[2]Host='windows server 地址'
Port='5985'
User='windwos server 用户名 如:adminstrator'
Pass='密码'def Running(host,port,user,passwd):win2012 = winrm.Session('http://' + host + ':' + port + '/wsman',auth=(user,passwd))try:r1=win2012.run_cmd('cd /d C:/Users/Administrator/Desktop/ && python deploy.py %s %s'%(tag_name,build_name))print(r1.std_out.decode())except  BaseException as e:print ('部署异常,%s'%e)if __name__ == '__main__':Running(Host,Port,User,Pass)

#tag_name 表示选择那个标签进行构建,本人的项目操作是通过打标签的方式进行构建,其他人请自行更改
 #build_name 表示当前构建的项目名称

配置windows python 脚本

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:hc.li
from subprocess import PIPE, Popen
import os, sysSource_path = os.getcwd()Iorder_Repo_path = r'D:\SAASiOrder'
Iorder_Project_path = r"D:\iOrder"def cmdline(command):process = Popen(args=command,stdout=PIPE,shell=True)return process.communicate()[0]# tag_name='release-20190403-02'
tag_name = sys.argv[1]
build_name = sys.argv[2]def Check_Tag(path):os.chdir(path)cmdline('git checkout master')cmdline('git pull')Status_code = cmdline('git tag |findstr %s' % tag_name)   #当前方法进行判断标签使用,如果没有使用标签构建 则将当前方法注释Status_code = str(Status_code, encoding='utf8')if not Status_code:print('标签不存在,请检查...')returnelse:return Status_codedef Update_Code_Iorder():try:res = Check_Tag(Iorder_Repo_path)           #判断标签是否存在if not res:returnprint(res)cmdline('git checkout %s' % tag_name)       #如果传入标签值存在 则切换到当前标签rs = cmdline("xcopy " + Iorder_Repo_path + "\\*.* " + Iorder_Project_path + " /s/e/y")   #执行拷贝命令print(rs)except BaseException as e:print('iorder 更新失败 %s'%e)if __name__ == '__main__':Update_Code_Iorder()

后续

总结:第一次操作linux下jenkins构建windwos服务器,执行的cmd命令都在linux下的脚本中执行,导致出现很多问题(拷贝失败,无法创建文件夹等),尽量将linux下的脚本做成调用脚本,去调用远程服务器上的python脚本。

并使用windows下的python脚本去执行其他的所有操作并返回结果。jenkins会直接输出到控制台

如果该windwos服务器上搭建多个项目,可以将其他的操作 整合到windwos下python脚本,jenkins将工程名称传入过去进行判断去执行那个项目的更新。

转载于:https://www.cnblogs.com/charles1ee/p/10481746.html

jenkins自动部署windwos服务器相关推荐

  1. hexo使用jenkins自动部署到阿里云

    hexo使用jenkins自动部署到阿里云 本地安装hexo npm install hexo-cli -g hexo init blog cd blog npm install hexo serve ...

  2. jenkins部署java_在Window上使用Jenkins自动部署和上传快照Java工件

    jenkins部署java 这篇文章将展示如何使用Jenkins Continuous Integration自动执行Java Web应用程序(使用MYSQL DB和基于Hibernate ORM在基 ...

  3. 在Window上使用Jenkins自动部署和上传快照Java工件

    这篇文章将展示如何使用Jenkins Continuous Integration自动执行Java Web应用程序(使用MYSQL DB和基于Hibernate ORM在基于REST的Jersey2 ...

  4. 使用Jenkins自动部署博客

    使用Jenkins自动部署博客 title: 使用Jenkins自动部署博客 toc: true comment: true date: 2017-12-17 19:48:10 tags: ['Jen ...

  5. jenkins自动部署配置

    jenkins自动部署配置 新建item 在jenkins首页新建item->选择构建一个maven项目->确定 新页面中: 源码管理:选择Git-> Repository URL: ...

  6. linux jenkins部署脚本,使用Jenkins 自动部署发布

    使用Jenkins自动部署发布,继Jenkins部署篇后, #注意:jenkins路径会有差异,不用在意这个,同一个版本部署2次,发现了2个不同的目录结构,很诧异. jenkins build玩war ...

  7. jenkins自动部署项目到tomcat机器问题之jenkins打版项目卡住

    jenkins自动部署项目到tomcat机器 背景: 今天测试同事在执行jenkins自动打版项目并发布到tomcat机器的时候,出现一直卡住的情况 控制台日志输出如下 jenkins机器配置: je ...

  8. Jenkins自动部署测试环境之jar包自动部署

    在我们的日常工作中,可能经常会遇到以下问题: 1.测试环境是由开发去更新的,当开发忙于改bug的时候,测试环境更新频率比较低,问题不能得到及时的验证 2.频繁的找开发去更新环境的话 ,耽误别人的工作, ...

  9. Jenkins自动部署前端项目

    一.前言 1.1 传统网站部署的流程 传统的网站部署,大家在运维过程中,网站部署是运维的工作之一,网站部署的流程大致分为:需求分析-原型设计-开发代码-提交测试-内网部署-确认上线-备份数据-外网更新 ...

最新文章

  1. RK3399 Ubuntu修改任务栏为自动隐藏和修改桌面背景
  2. Centos 6.4 PPTP ×××搭建
  3. C 语言编程 — 堆栈与内存管理
  4. 电脑的添加删除系统组件使用方法
  5. Java中的责任链模式
  6. STM32学习——中断方式下的发送数据
  7. 求杨辉三角的前n行数据_它是高考热点,代表数学之美,还是编程狗的最爱——杨辉三角...
  8. mini 打开窗口提交表单,按钮在页脚
  9. 《黄聪:手机移动站SEO优化教程》4、如何实现手机移动网站和PC站点的自主适配...
  10. 计算机安装pdf打印机驱动,虚拟打印驱动PDF打印机
  11. 计算机专用英语1500词带音标,带音标的计算机英语1500词
  12. SCAU软件开发基础C++复习
  13. Note for Dos
  14. java根据书签添加内容_Java PDF书签——添加、编辑、删除、读取书签
  15. 误删c盘user文件夹后,如何恢复文件
  16. 中大型网站架构演变之路
  17. java 下载样板Excel文件
  18. 美国9·11事件永远不能忘记的22张照片(内附高清大图)
  19. CKEditor学习笔记2(CKEditor基本配置修改)
  20. php 批量改文件名后缀名_PHP如何批量修改文件的后缀名

热门文章

  1. 【LA3487】最小割-经典模型 两种方法
  2. Mysql事务探索及其在Django中的实践(二)
  3. 一次U3D DLL加密的记录(二)
  4. hdu5486 Difference of Clustering 暴力
  5. Linux命令之查找
  6. var obj = eval(result); 解析json
  7. Mybatis 插入数据后返回自增主键ID
  8. flutter PositionedTransition 实现缩放动画
  9. mysql 数据操作 单表查询 group by 注意
  10. Windows 网络通讯开发