[CI、CD入门]centos下安装配置jenkins

16 篇文章 0 订阅
16 篇文章 0 订阅

安装

使用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
sudo yum install jenkins
# 启动
sudo service jenkins start
# 停止
sudo service jenkins stop
# 重启
sudo service jenkins restart
# 检查
sudo chkconfig jenkins on

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

安装好了以后,要先改改端口:

安装完成后,有如下相关目录:
(1)/usr/lib/jenkins/:jenkins安装目录,WAR包会放在这里。
  (2) /etc/sysconfig/jenkins:jenkins配置文件,“端口”,“JENKINS_HOME”等都可以在这里配置。
(3)/var/lib/jenkins/:默认的JENKINS_HOME。
(4)/var/log/jenkins/jenkins.log:Jenkins日志文件。
第一种启动方法,切换到jenkins.war存放的目录,输入如下命令:
$ java -jar jenkins.war

修改端口号8089
java -jar jenkins.war --httpPort=8089
sudo vim /etc/sysconfig/jenkins

看到:

这里写图片描述

改成自己的端口。
然后:

# 检查
sudo chkconfig jenkins on
# 重启
sudo service jenkins restart

这里写图片描述

配置jenkins网站

访问网站,可以看到:–网址是你自己的网址。

这里写图片描述

解锁:

这里写图片描述

选择安装推荐的插件:

这里写图片描述

安装完成后,后续的程序还会问你添加一个新账号以及确认jenkins的访问地址。

不表。

这里写图片描述

安装必要的插件

进入插件管理界面:

这里写图片描述

这里写图片描述

这里写图片描述

输入:
Maven Integration搜索:

这里写图片描述

安装。

这里写图片描述

这里写图片描述

安装完成。

配置全局工具

进入
这里写图片描述

jdk配置

这里写图片描述

不勾选自动安装,
这里写图片描述
需要配置 java_home
在centos服务器上面查一下javahome

echo $JAVA_HOME

这里写图片描述

空值,未配置,找一下java在哪里

which java

这里写图片描述

查一下原始安装路径:

ls -lrt /usr/bin/java

这里写图片描述
继续查下去。

ls -lrt /etc/alternatives/java

这里写图片描述

好了,jdk的准确位置是:

/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64/

编辑/etc/profile文件中配置JAVA_HOME

vim /etc/profile

这里写图片描述

在最后面添javahome变量

#set java environment
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

这里写图片描述

执行使其生效:

source /etc/profile

这里写图片描述

好了,jdk在jenkins的配置如下:

这里写图片描述

maven配置

这里写图片描述

在服务器上面找maven有没有安装先。

这里写图片描述

有安装,那么就按照信息填写—对了,检查一下maven_home有没有设置,顺便设定一下:

echo $MAVEN_HOME

这里写图片描述

没设定,那么

vim /etc/profile

在最后面添加:

#set maven home
export MAVEN_HOME=/usr/share/maven
export PATH=${MAVEN_HOME}/bin:${PATH}

然后

source /etc/profile

这里写图片描述

jenkins排坑及账户修正

注意,安装jenkins之后它会在系统创建一个用户账号,jenkins,但是这个jenkins是无法正常使用的,在很多时候,譬如你自定义pipeline脚本需要先
"su jenkins"的时候,然后执行命令行时候,会报错的,
详细你可以看看我的一篇草稿排错排坑文章:
Host key verification failed -解决jenkins调用脚本scp进行远程复制时候的权限问题(初稿)
当然这里面是排错的思考逻辑,有点乱,我这里整理一下,直接按照下面步骤来。

jenkins系统本身有bug的。jenkins安装以后系统会多了一个jenkins用户,如果你切换过去,是切换失败的,例如:

su jenkins

这里写图片描述
可以看到切换不成功依然是root账号的。

1、解决无法切换jenkins用户的问题。

根源及解释:


/etc/passwd文件中的/bin/bash被yum安装的时候变成了/bin/false.
1
然后我执行cat /etc/passwd命令,果然被改成了/bin/false

cat /etc/passwd
1
接着执行sudo vim /etc/passwd命令,把false改为bash

sudo vim /etc/passwd
1
修改完毕后,执行su jenkins命令。 
sudo vim /etc/passwd

这里写图片描述

改为:
这里写图片描述

然后执行:

su jenkins

这里写图片描述

2、解决用户名不是jenkins而是bash的bug

结果新的问题又来啦

当我切换到jenkins用户后,命令提示符的用户名不是jenkins而变成了 
-bash-4.1#

网上一查,原因是在安装jenkins时,jenkins只是创建了jenkins用户,并没有为其创建home目录。所以系统就不会在创建用户的时候,自动拷贝/etc/skel目录下的用户环境变量文件到用户家目录,也就导致这些文件不存在,出现-bash-4.1#的问题了 
以下命令是在切换到jenkins用户下执行的!(只是用户现在显示的是-bash-4.1)

这个时候呢,参考网上的做法我执行下面步骤: 
①vim ~/.bash_profile 
执行上面的命令,即使没有.bash_profile文件,linux会自动创建。 
②然后再添加这句

export PS1='[\u@\h \W]\$'
1
 PS1:命令行提示符环境变量
1
2
具体可以参考:http://zhidao.baidu.com/link?url=rMCdJazfyycZlY5xN-peNO-pUwTcPMROlXvrZZjE2EV9fDA7513e1JsiGXiWPlBWgArqrHNGu4yBvwNSY0Y79_

③我们最后再刷新.bash_profile文件,使其起作用

source ~/.bash_profile

首先:
这里写图片描述

然后:

source ~/.bash_profile

这里写图片描述

3、账号开启免密登录
当你要执行jenkins任务时候你可能会发现出现这个问题:
这里写图片描述
根源有:
解释一二没看出大区别,不过解释2详细,按照解释2来执行:

sudo: no tty present and no askpass program specified



由于帐号并没有开启免密码导致的 



假设当前帐号为abc

切换到root下  



1    打开sudoers

vi /etc/sudoers

2    添加免密码

abc ALL = NOPASSWD: ALL

文章标签: linux present and no askpa

靠谱的解释:

在Jenkins的使用过程中,如果在脚本中使用到sudo命令,有可能出现如下所示的错误:

sudo: no tty present and no askpass program specified

这是因为Jenkins服务器在执行sudo命令时的上下文有误,导致这个命令执行的异常。

解决方案:

在Jenkins宿主服务器上运行如下命令 
$ sudo visudo
在文件的末尾加上一行 
jenkins ALL=(ALL) NOPASSWD: ALL
保存文件(注意保存的时候修改文件名,文件名后缀不要加上默认的.tmp,即可覆盖原文件) 
Ctrl+O
退出编辑 
Ctrl+X
重启Jenkins服务 
$ /etc/init.d/jenkins restart
最后,重新执行构建任务,不会出现先前的错误。


PS:如果误操作修改了/etc/sudoers的权限来修改上述文件,则会导致如下所示的错误:

sudo :/etc/sudoers is world writable 
sudo : no valid sudoers source found, quitting 
sudo : unable to initialize poling plugin

这是Linux的一种保护机制。因此,如果出现上述误操作,则需要执行如下命令来解决: 
$ pkexec chmod 0440 /etc/sudoers

好,试试:

sudo visudo

这里写图片描述

后面加上:

jenkins ALL=(ALL) NOPASSWD: ALL

这里写图片描述

/etc/init.d/jenkins restart

重启,然后测试一下是不是还要密码:
这里写图片描述
测试成功,免密登录。

jenkins集成gradle

更新于:2018-09-29
最近玩一下gradle这个编译工具,发现还真的是挺好用的,就是idea上面的bug有点多。
如何配置gradle请看:
centos7下配置gradle4

假如你有一个项目,之前可以用maven构建的,不过你现在换了gradle,即使已经配置好环境变量,依然会出现这错误的:
在这里插入图片描述

好了,怎么解决好?
Cannot run program “gradle” in Jenkins
这兄弟也有这问题,我们注意到了:
在这里插入图片描述

在这里插入图片描述

嗯。。。之前配置maven也经过这个步骤,所以我们可以得出。。jenkins要调用某个可执行程序其实都是要配置的。好了,方向确定,那么,找一找可以找到参考资料了:
Android Jenkins+Git+Gradle持续集成-实在太详细

我们接下来一步一步来实现。

先看看gradle插件安装了没有。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

虽然我安装了,但我还是更新了一下。

首先,到系统管理-》全局设置&路径:
在这里插入图片描述

配置gradle home:
在这里插入图片描述

保存一下,然后到 系统设置-》全局工具配置:
在这里插入图片描述

看到了gradle:
在这里插入图片描述

然后,
在这里插入图片描述

保存一下。
这样就没问题了???
不不不----这样还是有问题的。。

在这里插入图片描述

jenkins的path跟实际环境下相差甚远。。所以我习惯在写代码的时候export 一下。。

譬如:

在这里插入图片描述

这样才是可行方案。
加上去的效果如何?请看下面:
在这里插入图片描述
虽然还是失败了,但是已经可以识别gradle了,阶段目的已经达到。

或者,直接每次都用:

source /etc/profile

脚本权限问题,譬如,删除提示没权限

在Jenkins中运行shell脚本经常遇到权限问题,解决起来非常麻烦,我们索性来个终极解决办法,就是给jenkins一个root权限,这样就不会再遇到权限问题了。

  1. vim /etc/sysconfig/jenkins

  2. 找到$JENKINS_USER改为 “root”:

$JENKINS_USER=“root”
3)然后更改Jenkins home,webroot和日志的所有权:

chown -R root:root /var/lib/jenins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins
4).重新启动Jenkins并检查用户是否已被更改

service jenkins restart
这样我们就给jenkins设置了root权限,我们再运行shell脚本就不会提示权限问题了。

总结

jenkins是一个基础的持续集成及运维工具,然而不用不知道,竟然会有一些隐藏的bug的,而且网上的资料都是入门级别,完全没有提到自定义脚本运行时候种种问题,感觉都是摸着石头过河,或者都是码农兼任运维人员。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值