环境准备

安装JDK

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

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

安装Git

yum install git

规避磁盘过满问题

1.方法1:创建软连接,准备较大空间

/data挂在了较大空间,然后在其中创建相关目录:

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

2.方法2:丢弃构建

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

参考:

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

自动安装完成之后:

  • /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

管理员密码访问:

cat /root/.jenkins/secrets/initialAdminPassword

基于这种方式安装的Jenkins位置处于/root/.jenkins,因此,为了避免Job占用空间过大,需要执行如下命令创建软连接:

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 Credentials,Username 和 Password 表示执行机的账号和密码。
  • 新建节点,「启动方式」 选择 Launch slave agents via SSH。Credentials 选择刚刚新建的钥匙,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 {} \;

参考:

说明

博客原文:CICD-Jenkins搭建笔记一

Linux 搭建 Jenkins的更多相关文章

  1. linux 搭建jenkins+创建maven工程JOB

    1.linux 安装jenkins 网上搜到这样安装 sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redh ...

  2. 【Jenkins】Linux搭建Jenkins平台

    为了配合上一篇的ant+jenkins做持续集成,需要在linux环境下搭建一个jenkins平台.网上有很多安装的例子,我主要记录一下自己遇到的问题,真真的是特别惆怅的,每次我遇到的问题都格外多. ...

  3. 一、linux搭建jenkins+github详细步骤

    事情缘由: 现在在做的主要工作是通过jenkins+postman实现api的自动化测试,想要达到的效果是,api自动化测试定时跑脚本的同时,github有新的代码提交,jenkins会自动检测部署新 ...

  4. linux搭建jenkins+github详细步骤

    事情缘由: 现在在做的主要工作是通过jenkins+postman实现api的自动化测试,想要达到的效果是,api自动化测试定时跑脚本的同时,github有新的代码提交,jenkins会自动检测部署新 ...

  5. Linux搭建Jenkins

    1.添加存储库 yum的repo中默认没有Jenkins,需要先将Jenkins存储库添加到yum repos,执行下面的命令: 使用wget -O下载并以不同的文件名保存 [root@besttes ...

  6. linux 搭建jenkins

    一.什么是持续集成? (1)Continuous integration(CI) 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员至少集成一次,也就意味着每天可能会发生多次集 ...

  7. linux 搭建 jenkins 前端自动构建时,老是提示 sh: vue-cli-service: command not found

    如题. 在 shell 里面执行  env 发现一个   NODE_ENV=production  的环境变量,是这个东西的原因. 通过  unset NODE_ENV  命令去掉这个环境变量就可以了 ...

  8. Linux下Jenkins服务器搭建

    系统环境 操作系统:CentOS6.9 java jdk:java 8 Jenkins版本:jenkins-2.78-1.1.noarch.rpm 关闭防火墙 注意:如果是基于msbuild构建.ne ...

  9. Linux下Jenkins+git+gradle持续集成环境搭建

    Linux下Jenkins+git+gradle持续集成环境搭建 来源:IT165收集  发布日期:2014-08-22 21:45:50 我来说两句(0)收藏本文   一.项目介绍 和 linux ...

随机推荐

  1. Python记录1:基础知识常识

    今日内容: 一,Python的数据类型 Python一共有以下几种常见的数据类型:int(整形)  float(浮点型)  str(字符串)  list(列表)   tuple元组  dict(字典) ...

  2. Java类访问控制

      public protected default private 本类 可见 可见 可见 可见 本类所在包 可见 可见 可见 不可见 其他包中的子类 可见 可见 不可见 不可见 其他包中的非子类 ...

  3. 关于nginx的安装

    今天倒腾nginx,当运用命令service nginx start 出现了这个:Job for nginx.service failed because the control process ex ...

  4. 功能的显著性分析——GO Enrichment Analysis

      Gene Ontology(GO)是基因功能国际标准分类体系.GO富集分析是对差异基因等按GO分类,并对分类结果进行基于离散分布的显著性分析.错判率分析.富集度分析,得到与实验目的有显著联系的.低 ...

  5. spring boot: ConfigurationProperties

    读取配置信息 1.5 之前 @Component @ConfigurationProperties(prefix = "user", locations= {"class ...

  6. SQL中的 group by 1, order by 1 语句

    看到group by 1,2 和 order by 1, 2.看不懂,google,搜到了Stack Overflow 上有回答 What does SQL clause “GROUP BY 1” m ...

  7. 给定一个正整数,实现一个方法求出离该整数最近的大于自身的 换位数 <把一个整数各个数位进行全排列>

    """给定一个正整数,实现一个方法求出离该整数最近的大于自身的 换位数 -> 把一个整数各个数位进行全排列""" # 使用 permu ...

  8. svnrdump:E175000:SSL is not supported错误的解决

    参考博客:https://www.cnblogs.com/jkko123/p/6358461.html 参考博客:https://blog.csdn.net/w171066/article/detai ...

  9. 转:[你必须知道的异步编程]C# 5.0 新特性——Async和Await使异步编程更简单

    本专题概要: 引言 同步代码存在的问题 传统的异步编程改善程序的响应 C# 5.0 提供的async和await使异步编程更简单  async和await关键字剖析 小结 一.引言 在之前的C#基础知 ...

  10. 收音机FM和AM的区别

    1.频率区别 FM = Frequency Modulation 调频,微波:微波传输,信号质量高,传输成本低,发射功率小,覆盖范围小,受地理因素影响较大,一般作为城市广播的首选.比如你的家乡城市台, ...