分类目录归档:编译构建

dubbo服务绑定和注册的地址


dubbo服务一次编译多节点部署,存在编译打包的地址绑定问题。 如果暂时不考虑docker进行地址和端口映射的情况下,可以考虑如下配置,避免绑定特定ip之后无法发布到其他主机节点的问题。

dubbo.protocol.host=0.0.0.0

Read more

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

Read more

jenkins上有什么办法可以批量执行job


  1. 利用pipeline:jenkins 2.0以上版本的pipeline就支持多个任务
    通过编写pipeline script,可以执行多个步骤,完成多个工程编译发布

  2. 新加一个job,写个脚本批量运行其他job
    通过shell script调用curl命令完成多个job执行动作
    或者
    其他程序中请求jenkins服务进行执行

  3. 插件Parameterized Trigger Plugin 启动另一job时并可传递参数
    说明:这个插件可以根据已经完成构建的结果,触发新Job或者传递参数。
    官方说明:Parameterized Trigger Plugin

  4. 插件Multij

Read more

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),该文件可以被提交到项

Read more

产品常见的发布策略


目前常见的发布策略有蓝绿发布、金丝雀发布、灰度发布这几种。

蓝绿发布通常被大家成为热部署;金丝雀发布在国内的名头完全被他的变种发布方式盖过了,主要是灰度发布与AB测试。

蓝绿发布
在发布的过程中用户无感知服务的重启,通常情况下是通过新旧版本并存的方式实现,也就是说在发布的流程中,新的版本和旧的版本是相互热备的,是两套完全独立的环境。
通过切换代理的转发实现不同的应用的上线或者下线。
金丝雀发布
通过在线上运行的服务中,新加入少量的新版本的服务,然后从这少量的新版本中快速获得反馈,根据反馈决定最后的交付形态。
主要目的是快速获取使用的反馈。
灰度发布
灰度发布是通过切换线上并存版本之

Read more

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进程

Read more

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"   

Read more

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认为是不合法头部而去掉。导致跳转失败。

Read more