jenkins 安装

系统 center-os

1、

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]
原因:jenkins 需要jdk ,可能是没有安装jdk ,如果确认已经安装了jkd 可能是安装的jdk的目录不对,

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

 7、修改端口

新版本的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、第三步: 登录到远程机器不用输入密码

  1. $  ssh 用户名字@192.168.x.xxx
  2. 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、构建时还报了个这样的错

           21:04:45 ERROR: Failed to parse POMs 21:04:45 java.io.IOException: Cannot run program "/opt/java/jdk1.8.0_181/bin/java" (in directory "/opt/jenkins/homeDir/workspace/national-common-dependency"): error=13, Permission denied

解决:

java.io.IOException: Cannot run program "/opt/jdk/jre/bin/java": error=13, Permission denied
Permission denied已经提示很清楚了,没有权限,解决方法:

   执行命令: chmod 777 /opt/jdk/jre/bin/java

简直崩溃..

原文地址:https://www.cnblogs.com/feiye512/p/9803002.html