jenkins 安装
系统 center-os
1、
sudo wget -O /etc/yum.repos.d/jenkins.repo
http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo
sudo rpm --import
https://jenkins-ci.org/redhat/jenkins-ci.org.key
sudo yum install jenkins
2、sudo yum install java
3、
sudo service jenkins start/stop/restart
sudo chkconfig jenkins on
4、注意:
可能会报错,像下面这样的报错信息
Starting jenkins (via systemctl): Job
for
jenkins.service failed. See
'systemctl status jenkins.service'
and
'journalctl -xn'
for
details.
[FAILED]
If you go to /etc/init.d/
and open jenkins
file you will find:
candidates="
/etc/alternatives/java
/usr/lib/jvm/java-1.6.0/bin/java
/usr/lib/jvm/jre-1.6.0/bin/java
/usr/lib/jvm/java-1.7.0/bin/java
/usr/lib/jvm/jre-1.7.0/bin/java
/usr/lib/jvm/java-1.8.0/bin/java
/usr/lib/jvm/jre-1.8.0/bin/java
/usr/bin/java
"
这个文件里是jenkins 默认去找的 jdk 的安装目录,如果你的jdk的安装目录不在jenkins 默认去找的目录列表里,就会失败,
解决方法是把你安装的jdk的目录加上去就可以了
5、安装成功,启动成功后,访问 8080 端口,到页面指定的服务器上的目录文件里复制过来 ,登录后
就可以浪了
6、
卸载jenkins
service jenkins stop
yum clean all
yum -y remove jenkins
新版本的jenkins修改端口
新版本jenkins的配置文件在/etc/sysconfig/jenkins
vi /etc/sysconfig/jenkins
找到JENKINS_PORT="8080" 将端口修改成自己的端口。
注意:因为jenkins默认启动方式是通过jetty容器启动,如果改成80端口可能会报权限不够的异常,在linux下,如果使用1024以下的端口则需要root权限或需要更改防火墙配置放开端口限制。
8、解决jenkins内存溢出的问题
同样修改jenkins的配置文件,修改JAVA_OPTIONS参数
vi /etc/sysconfig/jenkins
找到JENKINS_JAVA_OPTIONS="-Djava.awt.headless"
修改成
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m"
具体参数根据自己的机器实际情况调整。
9、升级jenkins版本
jenkins官网升级后会在jenkins中推送需要升级的版本消息,下载最新版本的jenkins的war包。
找到jenkins.war包的安装目录,直接替换就可以了,原来安装的插件,配置什么的都可以不变。版本号变成了最新的版本号
进入到/usr/lib/jenkins目录将jenkins.war包换成需要升级的最新版的jenkins的war包
/usr/lib/jenkins/jenkins.war
重新启动,就完成了升级。
10、查看jenkins启动运行日志
vi /var/log/jenkins/jenkins.log
11、插件安装失败 那就重试
12、安装maven
注意:
用 sudo yum install jenkins
这种方式安装时系统默认用的是jenkins的用户进行安装的,所以启动也切换到jenkins 用户,所以 maven 的安装目录要对jenkins 这个用户权限开发,否则构建任务时,会因为没有权限各种找不到路径
13、ssh 免密登录
1、ssh-keygen -t rsa
2、ssh-copy-id -i .ssh/id_rsa.pub 用户名字@192.168.x.xxx
3、第三步: 登录到远程机器不用输入密码
- $ ssh 用户名字@192.168.x.xxx
- Last login: Sun Nov 16 17:22:33 2008 from 192.168.1.2
参考:https://blog.csdn.net/liu_qingbo/article/details/78383892
这里要说下,最开始按找网上说要用密钥的方式登录,但是配置的 Path to key 始终提示找不到 rsa 文件,
继续查找网上资料说,不推荐这种方式,推进下面的方式
13.2、 点开高级,配置 sshService
勾选 Use password authentication, or use a different key
完成填写之后点击右下角的Test Configuration按钮测试即可
参考:https://www.cnblogs.com/wangqianqiannb/p/7200791.html?utm_source=itdadao&utm_medium=referral
14、执行时报错
这个问题是因为权限导致的,maven是用root 安装的 ,jenkins 是用appuser 启动的,jenkins 没有权限从maven的目录获取依赖jar包,
15、构建时报错如下:
解决:在pom.xml 中的 parent 节点中添加 <relativePath>
另外,构建A项目之前,要把 A 依赖的其他项目先构建成功
16、另外,我构建A,A依赖B,同时A和B 都是 C 的子项目
在构建B 时,成功了,在构建A 时,提示找不到 B 和C
报错如下:
暂时解决方案是直接把 C 的pom文件 放到了 jenkins 需要的maven里的 仓库的对应的位置上 就可以了
按说应该是能自动生成好的,
解决:在本地用eclipse或者mvn 命令生成项目时也遇到了这个问题,就是需要把父级项目也生成一下就可以了
17、打包后,jar 文件里包含配置文件,依赖的lib包也直接在jar文件里,
需求:jar里不包含配置文件,把依赖的lib放在外面,配置文件,jar文件,及依赖的lib 在同一级目录
解决: 在pom.xml 里用 插件 maven-jar-plugin及 maven-dependency-plugin 来解决
完整的pom.xml 如下:
1 <project xmlns="http://maven.apache.org/POM/4.0.0" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4 <modelVersion>4.0.0</modelVersion> 5 <parent> 6 ..... 9 </parent> 10 <artifactId>es-api</artifactId> 11 <name>es-api</name> 12 <url>http://maven.apache.org</url> 13 <properties> 14 <java-version>1.8</java-version> 15 <junit.version>4.11</junit.version> 16 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 17 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 18 19 </properties> 20 <dependencies> 21 <dependency> 22 ..... 25 </dependency> 26 <dependency> 27 ...... 30 </dependency> 31 </dependencies> 32 <build> 33 <plugins> 34 <plugin> 35 <groupId>org.apache.maven.plugins</groupId> 36 <artifactId>maven-surefire-plugin</artifactId> 37 <configuration> 38 <!-- 略过整个单元测试的执行,不推荐 --> 39 <skip>true</skip> 40 </configuration> 41 </plugin> 42 <plugin> 43 <groupId>org.apache.maven.plugins</groupId> 44 <artifactId>maven-compiler-plugin</artifactId> 45 <configuration> 46 <source>${java-version}</source> 47 <target>${java-version}</target> 48 <encoding>${project.build.sourceEncoding}</encoding> 49 </configuration> 50 </plugin> 51 <!-- 打JAR包 --> 52 <plugin> 53 <groupId>org.apache.maven.plugins</groupId> 54 <artifactId>maven-jar-plugin</artifactId> 55 <configuration> 56 <!-- 不打包资源文件(配置文件和依赖包分开) --> 57 <excludes> 58 <exclude>static/**</exclude> 59 <exclude>templates/**</exclude> 60 <exclude>*.yml</exclude> 61 <exclude>*.properties</exclude> 62 <exclude>*.xml</exclude> 63 <exclude>*.txt</exclude> 64 </excludes> 65 <archive> 66 <manifest> 67 <addClasspath>true</addClasspath> 68 <!-- MANIFEST.MF 中 Class-Path 加入前缀 --> 69 <classpathPrefix>. esApi_lib/</classpathPrefix> 70 <!-- jar包不包含唯一版本标识 --> 71 <useUniqueVersions>false</useUniqueVersions> 72 <!--指定入口类 --> 73 <mainClass>.....</mainClass> 74 </manifest> 75 <!-- <manifestEntries> MANIFEST.MF 中 Class-Path 加入资源文件目录 <Class-Path>./resources/</Class-Path> 76 </manifestEntries> --> 77 </archive> 78 <outputDirectory>${project.build.directory}</outputDirectory> 79 </configuration> 80 </plugin> 81 82 <!-- 该插件的作用是用于复制依赖的jar包到指定的文件夹里 --> 83 <plugin> 84 <groupId>org.apache.maven.plugins</groupId> 85 <artifactId>maven-dependency-plugin</artifactId> 86 <executions> 87 <execution> 88 <id>copy-dependencies</id> 89 <phase>package</phase> 90 <goals> 91 <goal>copy-dependencies</goal> 92 </goals> 93 <configuration> 94 <outputDirectory>${project.build.directory}/esApi_lib/</outputDirectory> 95 </configuration> 96 </execution> 97 </executions> 98 </plugin> 99 </plugins> 100 <finalName>esApi</finalName> 101 </build> 102 </project>
参考:
https://www.cnblogs.com/feiye512/p/10240010.html
https://www.cnblogs.com/selier/p/9510326.html
18、后续操作 借鉴:https://www.cnblogs.com/ityouknow/archive/2017/11/26/7899349.html
19、构建时还报了个这样的错
java.io.IOException: Cannot run program "/opt/jdk/jre/bin/java": error=13, Permission denied
Permission denied已经提示很清楚了,没有权限,解决方法:
执行命令: chmod 777 /opt/jdk/jre/bin/java
简直崩溃..