Jenkins是和bamboo类似的Continuous Integration and Continuous Delivery工具,简称为CI工具。最显著的一个区别就是,前者是开源免费的。
基本使用
关闭与重启
直接通过url来控制即可,即
http://127.0.0.1:8080/exit
http://127.0.0.1:8080/restart
这里有更详细的图文版: Jenkins的关闭、重启
Job参数化
有时将Job参数化会非常方便外部的调用,就像一个函数一样,我们只需要从外部传入参数即可。
此时可以借助插件Parameterized Trigger Plugin
来进行操作
详见:Jenkins不同job之间传递参数
Job之间的依赖关系
有两种:Upstream与Downstream
名字已经非常形象化,比如我们需要执行工作流:Job A -> Job B
那么可以有两种方式进行配置:
- 在A里边配置执行完后start Job B,这种是Downstream
- 在B里边配置执行前start Job A,这种是Upstream
在使用当中,发现Upstream没有起作用,就暂时使用Downstream方式实现需求
多个Job序列执行
可以利用插件Parameterized Trigger Plugin
的Block until the triggered projects finish their builds
特性
将每个要序列执行的Job wrapper起来,然后勾选Block until the triggered projects finish their builds
即可。
详见:Running Jenkins jobs sequentially
将Credentials绑定到环境变量
使用Credentials Binding Plugin我们就可以使用这一功能,这个插件是默认已经安装的。
具体使用如下:
To use, first go to the Credentials link and add items of type Secret file and/or Secret text. Now in a freestyle job, check the box Use secret text(s) or file(s) and add some variable bindings which will use your credentials. The resulting environment variables can be accessed from shell script build steps and so on.
常见问题
gradle的权限问题
在Linux/Mac上,如果执行gradlew,会发生权限问题。我们可以在前边的shell中执行增加执行权限的操作(windows平台上则不会出现)
chmod a+x gradlew
553 mail from must equal authorized user
是因为没有设置管理员邮件,设置之后即可解决问题
详见:553 mail from must equal authorized user解决方法
开启SMTP TLS
Jenkins在网页设置界面没有TLS协议的开启选项,我们需要在Jenkins的配置文件中加入下面的参数以开启TLS:
-Dmail.smtp.starttls.enable=true
详见:Ubuntu之Jenkins的SMTP TLS邮箱设置
插件相关
BitBucket: https://wiki.jenkins-ci.org/display/JENKINS/BitBucket+Plugin
FindBugs: https://wiki.jenkins-ci.org/display/JENKINS/BitBucket+Plugin
- Configuration of Findbugs with Jenkins for Ant projects
- Setup Jenkins project from Git repository with Findbugs, Cobertura and Checkstyle
- Jenkins Tutorial
- Findbugs for Git Pull Request
- FindBugs Maven Plugin
Docker镜像的使用
也可以使用Docker的Jenkins镜像:
$ docker run --name myjenkins -p 8080:8080 -p 50000:50000 -v /var/jenkins_home jenkins
详见:OFFICIAL REPOSITORY jenkins