Linux 搭建 Jenkins

环境准备

安装JDK

安装 JDK 以前写过一篇文章,本文就不具体讲了:html

注意:Java版本不能是gcj,会致使Jenkins有问题,centos7搭建jenkins小记文章中提到的java版本问题致使CentOS下的Jenkins有问题。java

安装Git

yum install git

规避磁盘过满问题

1.方法1:建立软链接,准备较大空间node

/data挂在了较大空间,而后在其中建立相关目录:linux

mkdir -p /data/jenkins
ln -s /data/jenkins/ /var/lib/jenkins
chown -R root:root /data/jenkins

2.方法2:丢弃构建git

设置构建最大保留天数或者保留个数,实现自动删除构建结果。github

参考:web

CentOS

离线安装-推荐

## http://pkg.jenkins-ci.org/redhat-stable/
wget http://pkg.jenkins-ci.org/redhat/jenkins-2.39-1.1.noarch.rpm ## 下载(也能够Windows下载再转过来)
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key ## 导入公钥,发现离线安装,不须要导入公钥就能安装
rpm -ih jenkins-2.7.2-1.1.noarch.rpm

自动安装完成以后:shell

  • /usr/lib/jenkins/jenkins.war WAR包
  • /etc/sysconfig/jenkins 配置文件
  • /var/lib/jenkins/ 默认的JENKINS_HOME目录
  • /var/log/jenkins/jenkins.log Jenkins日志文件

在线安装

# 添加Jenkins源
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum repolist # Update your package manager list to get the latest packages
# 安装
yum install java-1.8.0-openjdk jenkins
service jenkins start # 启动

基于Tomcat安装

  • Tomcat官网下载tar包
  • 将tar包拷贝至/usr/local目录并解压:cd /usr/local/ && tar zxvf apache-tomcat-9.0.12.tar.gz
  • 访问jenkins官网下载长期维护版本的jenkins.war拷贝至/usr/local/apache-tomcat-9.0.12/webapps,启动tomcat:`cd /usr/local/apache-tomcat-9.0.12
  • 访问:http://IP:8080/jenkins

管理员密码访问:apache

cat /root/.jenkins/secrets/initialAdminPassword

基于这种方式安装的Jenkins位置处于/root/.jenkins,所以,为了不Job占用空间过大,须要执行以下命令建立软链接:ubuntu

ln -s /data/jenkins_jobs/ /root/.jenkins/jobs

Jenkins设置

为了避免由于权限出现各类问题,这里直接使用root

## sudo vim /etc/sysconfig/jenkins
JENKINS_USER="root" ## 原值 "jenkins" 必须修改,不然权限不足
JENKINS_PORT="8080" ## 原值 "8080" 能够不修改

修改目录权限

chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins

Jenkins 启动

启动Jenkins:

sudo systemctl enable jenkins # 开机自启动Jenkins
sudo systemctl start jenkins # 启动Jenkins

查看服务细节:

systemctl status jenkins.service

验证Jenkins Server访问连接:

telnet IP 8080

若是访问有问题,须要把防火墙关了:

systemctl stop firewalld
systemctl disable firewalld.service #重启不自动开启

经过以下两个命令查看防火墙是否关闭:

systemctl list-unit-files|grep firewalld.service
iptables -t nat -S

Centos安装参考:

Ubuntu

  • 下载https://pkg.jenkins.io/debian/jenkins.io.key
  • apt-key add jenkins.io.key

以上两步,能够合二为一:

wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -
  • sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
  • apt-get update
  • apt-get install jenkins
  • /etc/init.d/jenkins start。或者service start jenkins。启动Jenkins。
  • 经过:http://{ip}:8080 访问jenkins。

cat /var/lib/jenkins/secrets/initialAdminPassword获得默认密码填入下面的密码框中

安装好以后,能够修改相关配置改变默认端口:

  • /etc/default/jenkins

Ubuntu安装参考:

Jenkins master优化

增长同时打开文件句柄数

增长同时打开文件句柄数,linux默认一个进程能同时打开的文件句柄是1024个,在jenkins master确定是不够的,须要调整成65535

CentOS系统,修改/etc/security/limits.conf,在文件最后增长一行:

root             -       nofile          65535

重启后生效,能够经过命令ulimit -a查看

设置tomcat 日志循环,限制日志的大小

https://stackoverflow.com/questions/8342336/how-to-set-maximum-number-of-rolls-and-maximum-log-size-for-tomcat

Jenkisn配置

Jenkins用户

admin帐号初始密码:

cat /var/lib/jenkins/secrets/initialAdminPassword

Jenkins使用

Jenkins关闭、重启、重载

http://localhost:8080/[exit/restart/reload]

参考:

Jenkins Job指定执行节点

  • 关联job,进入job的配置页面,勾选Restrict where this project can be run

利用了标签的功能

参考:

Jenkins升级

能够经过系统管理(System management)--> 系统信息(System Info)查找.war的文件

executable-war  /usr/lib/jenkins/jenkins.war

先列出官网地址:https://jenkins.io/download/

升级以前,中止Jenkins服务(记得备份原来的jenkins.war,以防万一)

http://jenkinsIP:port/exit

从官网下载最新的war包,而后替换掉上面路径下的war。

替换完成后,重启:

systecmctl start jenkins # centos
service jenkins start # ubunutu

参考:

Jenkins插件

  • dashboard view:Dashboard-view自定义jenkins任务集视图
  • Workspace Cleanup:这个插件能够再每次build以前清空workspace
  • Monitoring:监控一些机器的状态信息了
  • Folders:新建任务时,支持建立文件夹,可嵌套地定义文件夹来级别 views / jobs
  • SSH Slaves:添加节点时,能够采用SSH方式连接;
  • PostBuildScript:根据 Build 状态执行脚本
  • Post Build Task
  • Pipeline:必须 【请勾选】
  • Build Pipeline:用于建立pipline视图
  • Configuration Slicing:主要功能是能够批量设置job的属性,好比设置保留多少天的构建记录,神器之一,有效解决Jenkins磁盘过满的问题
  • Multijob:配置Multijob必备的插件;
  • Timestamper
  • Build Timeout plugin:构建超时插件
  • Custom Tools
  • Git:Git插件 【请勾选】
  • Git Parameter
  • GitLab
  • Gitlab Hook
  • Gitlab Authentication
  • Parameterized Trigger plugin:插件可让你在构建完成时触发新的Job构建,并以各类方式为新Job构建指定参数。
  • Node and Label parameter
  • Publish Over SSH
  • Groovy plugins:并发任务解决
  • Windows Slaves Plugin:链接Windows Slaves,默认安装了
  • Matrix Authorization Strategy Plugin:矩阵形式认证策略插件,默认安装了

插件使用参考:

Jenkins Slave

Slave机器上须要安装好git、配置好Java环境(尤为是一些相似JAVA_HOME的变量)。

经过SSH链接node--推荐

  • 先安装SSH Slaves插件,这样在新增节点时,ssh配置将更加友好。
  • 点击 Credentials, 点击 Jenkins -> Global credentials -> Add CredentialsUsernamePassword 表示执行机的帐号和密码。
  • 新建节点,「启动方式」 选择 Launch slave agents via SSHCredentials 选择刚刚新建的钥匙,Host Key Verification Strategy 选择 Manually trusted Key Verification Stragegy

最后Launch agent便可;

经过JNLP链接node

该方法比较麻烦,不详细介绍了。

注意:须要下载两个文件到agent机器上:

  • agent.jar
  • slave-agent.jnlp

参考:

Jenkins FAQ

Q1: 忽略Jenkins升级提醒

对于轻微强迫症的我来讲,看着升级提醒,还不能叉掉,实在忍不了,Google以后,有解决方法:

Manage Jenkins => Configure System => Administrative monitors configuration
系统管理-》系统设置-》管理监控配置
去掉“Jenkins更新通知”
UnCheck "Jenkins Update Notification" and apply

Q2: Cannot run program "java": error=2, No such file or directory

虽然登陆到master机器或者执行机上,java都配置好了,可是仍然遇到了错误,后来看到一篇博客中提到的方法,在usr/bin下建立了一个Java的软链接,就解决了。

ln -s /usr/java/jdk1.8.0_171/bin/java /usr/bin

Q3: jenkins.JenkinsException: Error in request. Possibly authentication failed [500]: Internal Server Error

在JJB项目中,发生了上面的错误,定位问题了半天,发现多是Jenkins自己出问题了,而不是项目出问题。之前运行OK的Jenkins怎么忽然发生这个问题了呢?多是以下缘由形成:

  • var/lib/jenkins/jobs:目录下Job占据过多空间。在Jenkins中的节点管理里查看master机器的剩余磁盘空间`也能够观察到
du -ah --max-depth=1

/etc/rc.local是啥?

参考:

Q4: starting jenkins bash /usr/bin/java permission denied

解决办法主要分了两步:

  1. 将本来位于/root/buildbox/javaxxx/下的目录移到了/usr/java/下,从新配置java环境;
  2. vim /etc/init.d/jenkins中的candidates字段补充上java路径/usr/java/jdk1.8.0_151/bin/java

参考:

Q5: 执行Jenkins服务器界面运行一段时间后就会卡死,界面显示空白

缘由:tomcat的日志(/home/apache-tomcat-8.0.30/logs)查看catalina.out日志,得知是java虚拟机内存空间溢出。
解决:到后台tomcat的bin目录下,修改 tomcat的启动脚本:startup.sh,在最上面添加 export JAVA_OPTS=“-XX:MaxPermSize=1024m -Xms1024m -Xmx3096m”

Q6: 构建完成后须要清除workspace

须要安装“Workspace Cleanup Plugin插件”,在构建任务配置时,能够在“增长构建后操做步骤”中选择Delete workspace when build is done

Q7: Linux环境变量问题,没有加载/etc/profile文件,获取不到须要的环境变量。

添加节点时,Prefix Start Slave Command 选择输入 source /etc/profile &&

加一个前置动做。注意&&以后要有空格!!!

Q8:Jenkins定时构建用法

Jenkins定时构建

Q9:Error 403 No valid crumb was included in the request

Q10:Jenkins Master-Slave: Key exchange was not finished, connection is closed

挂载执行机时,报错,经过编辑 /etc/sshd_config 文件,注释 MACs 和 Kex 所在的行,解决了问题,记得注释以后,systemctl restart sshd

Q11:清理过时的 Jobs

#clear jenkins jobs logs
@hourly find /var/lib/jenkins/jobs/ -mindepth 1 -maxdepth 1 -mtime +30 -type d -exec rm -rf {} \; -o -type f -exec rm -rf {} \;

参考:

相关文章
相关标签/搜索