Linux 环境下搭建 Jenkins(Hudson)平台

安装jenkins:
安装 jenkins 有两种方式:
安装方式一: 
[java] view plain copy
  1. sudo java -jar jenkins.war –httpPort=18080 –ajp13Port=18009  
但是很多时候我们是使用SSH方式到目标机器上的,放我们关闭SSH连接时,这个命令也会被中断,jenkins服务会被终止,我们不可能一直保持这SSH连接,怎么办?可以把这行命令写成 shell 脚本,然后使用 nohup sh jenkins.sh &
命令启动这个脚本,这样jenkins就能正常提供服务了。
安装方式二:安装 RPM包
为了能够使用jenkins库,首先需要导入jenkins库的 key:
[java] view plain copy
  1. sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo sudo rpm –import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key  
安装软件(以jenkins-x.x.x.rpm为例):yum install jenkins-x.x.x.rpm
   删除软件:yum remove jenkins-x.x.x.rpm或者yum erase jenkins-x.x.x.rpm
   升级软件:yum upgrade jenkins或者yum update jenkins
   查询信息:yum info jenkins
开启服务(关闭,重启):  
[java] view plain copy
  1. sudo service jenkins start|stop|restart  
检查jenkins是否安装完成: localhost:8080 (默认是8080 端口,如果采用安装方式一,那么就需要指定的端口)
运行job时遇到的问题:
 mvn:command not found
遇到的问题: 不能使用MVN命令;
排查过程:
①Jenkins 默认创建进程,启动任务的用户名是 jenkins,使用root权限查看passwd,可以看到这个用户默认情况下 ssh 为false,也就是说这个用户默认情况下是不能使用ssh进行登录的,除非修改 passwd中相应字段为 bash,然后sourse;
jenkins:x:500:500:mengqc:/home/jenkins:/bin/fasle
passwd文件的格式:  注册名:口令:用户标识号:组标识号:用户名:用户主目录:命令解释程序
②默认情况下 Jenkins 的安装目录是 /var/lib/jenkins/ ,项目根目录是 /var/lib/jenkins/jobs/workspace

从目录上看,就知道这个是需要 root 权限才能执行一些命令,但是我们通过界面 执行一些命令使用的是admin用户,纵使我们在 根目录下 能适应mvn命令,但是问题也不能解决。

还有一个简单的测试Maven 是否加入到了环境变量中的方法,在执行mvn命令时,填写maven安装的绝对路径,如果能够执行,说明不是权限的问题,而是环境变量的问题。


解决方案一:
①安装 ssh slave 插件;
②启动slave 服务;
③jenkins-系统管理-节点管理:重新设置 slave机器的 Remote FS root 为 /home/admin/xxx
(主要是添加了workspace的目录) $ITEM_ROOTDIR
④把master的节点数设为0,这样默认情况下就会使用 slave节点。
问题:
如果修改 工作目录(Remote FS root),可能会遇到:
[java] view plain copy
  1. “main”java.lang.NoclassDefFoundError:hudson/maven/agent/Main  
原因:我们修改了slave的工作目录,但是slave服务没有重启导致;
解决方法:使用我们的脚本 对slave进行 重启操作。
解决方案二:
在 /home/admin/目录下新建一个工作目录,然后将 /var/lib/jenkins目录设置成一个跳转链接 ,链接到admin目录下 [sudo ln -s /home/admin/xxx/  /var/lib/jenkins] ,然后将/var/lib/jenkins 目录下的文件 mv 到/home/admin/xxx/ 目录下。
mvn和一些基本的命令是可以运行了,但是运行shell脚本时还是没有权限,因为 新建的这个跳转连接user=root ,group=root,并且对这个链接 使用chown/chgrp 都是没有效果的,执行一些操作命令是还是没有权限;

解决方案三:修改默认 jenkins 用户为 admin
①安装jenkins 
Java代码  (我们一般使用的是admin权限)
[java] view plain copy
  1. sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo    
  2. sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key    
  3. sudo yum install jenkins    
  4. rpm -ql jenkins    


②. 配置jenkins 
Java代码  
// edit JENKINS_PORT, JENKINS_USER  
sudo vi /etc/sysconfig/jenkins  (把 JENKINS_USER 设置为 admin)
③. 修改jenkins权限(如果修改JENKINS_USER情况下) 
Java代码  
[java] view plain copy
  1. ####  
  2. sudo chown -R admin /usr/lib/jenkins    
  3. sudo chgrp -R admin /usr/lib/jenkins   
  4. ####  
  5. sudo chown -R admin /var/log/jenkins   
  6. sudo chgrp -R admin /var/log/jenkins    
  7. sudo chown -R admin /var/lib/jenkins    
  8. sudo chgrp -R admin /var/lib/jenkins    
  9. sudo chown -R admin /var/cache/jenkins   
  10. sudo chgrp -R admin /var/cache/jenkins (这个如果不改,会出现404)  

④. 启动jenkins 
Java代码  
sudo /sbin/service jenkins start 
或者  sudo service jenkins start

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/387386.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android APK 打包过程 MD

Markdown版本笔记我的GitHub首页我的博客我的微信我的邮箱MyAndroidBlogsbaiqiantaobaiqiantaobqt20094baiqiantaosina.comAndroid APK 打包流程 MD 目录 目录APK 的打包流程整体流程资源的编译和打包资源ID资源索引概况具体打包过程aapt阶段aidl阶段Java Compiler阶段dex阶段a…

可用于 主成分分析、R型因子分析、简单相应分析 的R语言函数总结

一、主成分分析 主成分分析是多元统计分析的一种常用的降维方法,它以尽量少的信息损失,最大程度将变量个数减少,且彼此间互不相关。提取出来的新变量成为主成分,主成分是原始变量的线性组合。 1.1 KMO检验和Bartlett球形检验 在…

[国家集训队]墨墨的等式

Description 墨墨突然对等式很感兴趣,他正在研究a1x1a2y2…anxnB存在非负整数解的条件,他要求你编写一个程序,给定N、{an}、以及B的取值范围,求出有多少B可以使等式存在非负整数解。 Input 输入的第一行包含3个正整数,…

Storm简介

Storm是实时流式数据处理框架,支持多种编程语言 应用案例: realtime analytics online machine learning continuous computation distributed RPC ETL 性能:a million tuples per second per node 可扩展、高容错 结合消息队列和数据库…

持续集成之Jenkins安装部署

安装JDKJenkins是Java编写的,所以需要先安装JDK,这里采用yum安装,如果对版本有需求,可以直接在Oracle官网下载JDK。 [rootlinux-node1 ~]# yum install -y java-1.8.0 安装Jekins [rootlinux-node1 ~]# cd /etc/yum.repos.d/ […

2019/2/18 Python今日收获

Python day15——032,033异常处理:你不可能总是对的 1. Python标准异常总结AssertionError断言语句(assert)失败AttributeError尝试访问未知的对象属性EOFError用户输入文件末尾标志EOF(Ctrld)FloatingPoin…

Shell01

shell是一个命令解释器,是操作系统的最外层。 把用户的输入解释给操作系统,将操作系统的输入结果返回给用户。 硬件-->kernel-->shell-->外围应用程序 shell脚本:将命令或语句写入文件,进行操作系统管理。 shell脚本…

jenkins svn tomcat ant自动部署

Jenkins Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括: 1、持续的软件版本发布/测试项目。 2、监控外部调用执行的工作。 跟其他持续集成相比,它的主要优点有: 开源,即免…

Shell02

局部变量 1、普通字符串变量 变量名value 变量名value #单引号中不进行变量解析,原样输出,应用不多 变量名"value" #双引号会解析变量 例: a1123 a2234 a3"345" echo "a1$a1" echo "a2$a2&quo…

553 mail from must equal authorized user解决方法

在配置发送邮件通知,验证其正确性时,出现"553 mail from must equal authorized user"提示的错误; 原因在于没有在"系统管理(Manage Jenkins)"的"系统设置(Configure system&…

3.1 读入一个参数

已知正方形的边长&#xff0c;求出其面积。 输入样例&#xff1a; 1 2 3 4 输出样例&#xff1a; 1 4 9 16 #include<iostream> #include<fstream> using namespace std;int main() {ifstream cin("test.txt");//向OJ提交时&#xff0c;注释此句i…

[Apple开发者帐户帮助]八、管理档案(2)创建临时配置文件(iOS,tvOS,watchOS)...

创建临时配置文件以在设备上运行您的应用程序而无需Xcode。在开始之前&#xff0c;您需要一个App ID&#xff0c;一个分发证书和多个注册设备。 有关完整的临时配置文件工作流程&#xff0c;请转到Xcode帮助中的分发到已注册设备&#xff08;iOS&#xff0c;tvOS&#xff0c;wa…

Ant Build.xml

题记&#xff1a;用 Eclipse 3 &#xff0b;Tomcat 5 做东东&#xff0c;用起来还是比较爽。但是调试时每次手动Deploy到Tomcat中&#xff0c;比较麻烦。今用Ant来完成之。 1。打开Eclipse&#xff0c;在项目的根路径下建立builds.xml文件。 这个是Ant配置的关键。其内容如下&…

3.2 读入两个参数

计算两个整数的差。 输入样例&#xff1a; 1 3 5 7 输出样例&#xff1a; -2 -2 #include<iostream> #include<fstream> using namespace std;int main() {ifstream cin("test.txt");//向OJ提交时&#xff0c;注释此句int num1, num2;while (cin &g…

解决做好一个机器学习项目的3个问题

机器学习是目前人工智能最令人激动的研究方向之一。我们可能更关注机器学习算法的实现细节&#xff0c;沉浸于机器学习所需要的数学功底&#xff0c;但对于机器学习从业者来说&#xff0c;如何更好更快速的实现一个机器学习项目更值得关注。 正如吴恩达在《机器学习》这门课中所…

数据挖掘的相关知识例子

一、贝叶斯 贝叶斯定理由英国数学家贝叶斯 ( Thomas Bayes 1702-1761 ) 发展&#xff0c;用来描述两个条件概率之间的关系&#xff0c;比如 P(A|B) 和 P(B|A)。按照乘法法则&#xff0c;可以立刻导出&#xff1a;P(A∩B) P(A)*P(B|A)P(B)*P(A|B)。如上公式也可变形为&#xf…

3.3 1!到n!的和

求1! 2! ... n! 的结果。 输入样例&#xff1a; 3 6 输出样例 9 873 #include<iostream> #include<fstream> using namespace std;int main() {ifstream cin("test.txt");//向OJ提交时&#xff0c;注释此句int num;while (cin >> num){int…

[币严区块链]以太坊(ETH)Dapp开发入门教程之宠物商店领养游戏

阅读本文前&#xff0c;你应该对以太坊、智能合约有所了解&#xff0c;如果你还不了解&#xff0c;建议你先看以太坊是什么 除此之外&#xff0c;你最好还了解一些HTML及JavaScript知识。 本文通过实例教大家来开发去中心化应用&#xff0c;应用效果如图: 项目背景 Pete有一个…

怎么通俗易懂地解释贝叶斯网络和它的应用?

作者&#xff1a;小杰链接&#xff1a;https://www.zhihu.com/question/28006799/answer/38996563来源&#xff1a;知乎著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。英语原文&#xff1a;http://www.norsys.com/tutorials/netica/secA/tut…

3.4 等比数列

已知q与n&#xff0c;求等比数列之和&#xff1a;1 q q^2 ... q^n 输入样例&#xff1a; 6 0.3 5 1.3 输出样例&#xff1a; 1.428 12.756 #include<iostream> #include<fstream> #include<cmath> using namespace std;int main() {ifstream cin(…