# pip3 install python-jenkins 不是 jenkins
import jenkins
#定义远程的jenkins master server的url,以及port
jenkins_server_url='xxxx:xxxx'
#定义用户的User Id 和 API Token,获取方式同上文
user_id='xxxx'
api_token='xxxx'
#实例化jenkins对象,连接远程的jenkins master server
server=jenkins.Jenkins(jenkins_server_u
分类标签归档:Jenkins
jenkins中nohup后台执行问题解决
在jenkins通过Execute shell执行"nohup you_command &",启动后台服务,经常遇到以下问题:
问题一:job执行完之后启动的服务同时关闭了
解决:
在Execute shell中添加BUILD_ID=DONTKILLME(其实是任何内容都可以,仅需要改变原有的BUILD_ID)
或者
把nohup启动命令写入shell脚本中,在脚本中添加BUILD_ID=DONTKILLME亦可以
问题二:使用nohup+&执行命令,但是日志打印到jenkins页面上,无法打印到服务上
解决:
nohup指定输出的文件路径,比如:
nohup pyth
jenkins上有什么办法可以批量执行job
-
利用pipeline:jenkins 2.0以上版本的pipeline就支持多个任务
通过编写pipeline script,可以执行多个步骤,完成多个工程编译发布 -
新加一个job,写个脚本批量运行其他job
通过shell script调用curl命令完成多个job执行动作
或者
其他程序中请求jenkins服务进行执行 -
插件Parameterized Trigger Plugin 启动另一job时并可传递参数
说明:这个插件可以根据已经完成构建的结果,触发新Job或者传递参数。
官方说明:Parameterized Trigger Plugin -
插件Multij
Jenkins的流水线
持续交付是DevOps的核心实践,Jenkins是持续交付的核心实践,Pipeline是jenkins的核心实践。
Jenkins 2.0的精髓是Pipeline as Code,是帮助Jenkins实现CI到CD转变的重要角色。
使用jenkins做持续集成不用Pipeline等于依然用的jenkins1.0的功能。
Jenkins 流水线 (Pipeline) 是一套插件,它支持实现和集成 continuous delivery pipelines 到Jenkins。
对Jenkins 流水线的定义被写在一个文本文件中 (成为 Jenkinsfile),该文件可以被提交到项
产品常见的发布策略
目前常见的发布策略有蓝绿发布、金丝雀发布、灰度发布这几种。
蓝绿发布通常被大家成为热部署;金丝雀发布在国内的名头完全被他的变种发布方式盖过了,主要是灰度发布与AB测试。
蓝绿发布
在发布的过程中用户无感知服务的重启,通常情况下是通过新旧版本并存的方式实现,也就是说在发布的流程中,新的版本和旧的版本是相互热备的,是两套完全独立的环境。
通过切换代理的转发实现不同的应用的上线或者下线。
金丝雀发布
通过在线上运行的服务中,新加入少量的新版本的服务,然后从这少量的新版本中快速获得反馈,根据反馈决定最后的交付形态。
主要目的是快速获取使用的反馈。
灰度发布
灰度发布是通过切换线上并存版本之
jenkins中防止杀死衍生进程方法
1.重设环境变量build_id
在execute shell输入框中加入BUILD_ID=DONTKILLME,即可防止jenkins杀死启动的tomcat进程
2.在启动jenkins的时候禁止jenkins杀死衍生进程
修改/etc/sysconfig/jenkins配置,在JENKINS_JAVA_OPTIONS中加入-Dhudson.util.ProcessTree.disable=true。需要重启jenkins生效
此方法配置一次后,所有的job都无需设置BUILD_ID,就能够防止jenkins杀死启动的tomcat进程
jenkins中没有权限执行执行命令方法
1、切换用户只执行一条命令的可以用:
su - webapp -c command
2、切换用户执行一个shell文件可以用:
su - webapp -s /bin/bash shell.sh
如果是jenkins用户,这时就是出现没有权限执行chown命令的情况。
为了解决这个问题,我们采用的是更改jenkins默认用户的方式来实现相应命令的执行。
1)修改jenkins执行用户:
vi /etc/sysconfig/jenkins
修改JENKINS_USER值:
## Type: string
## Default: "jenkins"
jenkins中基于角色的项目权限管理
jenkins中可以使用“Role-based Authorization Strategy”插件实现按角色授权管理。
在“Manage and Assign Roles”的“Manage Roles”配置角色权限。
在配置“Project roles”时,配置模块权限“Pattern”需要使用正则表达式。
jenkins跳转失败解决方案
jenkins error: "no valid crumb was included in the request"
jenkins在http请求头部中放置了一个名为.crumb的token。在使用了反向代理,并且在jenkins设置中勾选了“防止跨站点请求伪造(Prevent Cross Site Request Forgery exploits)”之后此token会被转发服务器apache/nginx认为是不合法头部而去掉。导致跳转失败。