Jenkins

星期六一 2024-3-22 157 3/22

Jenkins下载

在Jenkins官网可以下载所需的war包,使用java -jar jenkins.war即可运行Jenkins,默认运行在8080端口注意Jenkins和本机的jdk是否兼容,否则无法运行Jenkins官网

环境配置

​ 在首次登录Jenkins的时候会提示输入密码,同时,该界面会告知你初始密码在哪里,一般在/root/.jenkins/secrets/文件夹中的一个带password的文件中。然后下载推荐插件即可,如果下载出错也不必惊慌,因为有的插件用不到,只要必须的插件下载了就可以了。然后就是创建用户,完了就进到Jenkins中了。

​ 在首次进入Jenkins中后需要去下载maven插件Maven Integration,ssh的相关插件SSH Agent PluginSSH Build Agents plugin(这是在添加节点的时候Launch method没有Launch agents via SSH的时候需要下载的)插件下载失败看下面的错误总结中的插件下载爆红,安装Publish Over SSH用于将构建完成的jar包发送到所需的服务器中

​ Jenkins是以Java代码运行的,所以要确保配置好了Java环境,同时安装git,maven,maven要契合自己项目的maven,否则会报错,在错误总结中有maven3.3的安装方法,在系统配置→全局工具配置→Maven(最下面)中配置maven的安装路径(他会检测是不是maven目录,如果路径有错会提示)

Jenkins

Jenkins新建任务

d1201需要替换成自己jar包的名或者缩写,脚本都放在root文件夹下,xxoo文件夹可以更名为自己想命名的文件夹名称

  1. 点击新建任务
  2. 输入任务名称,点击构建一个maven项目,点击确定
  3. 点击git,在url中输入仓库地址(如果有密码需要添加一个凭证)需要在虚拟机中安装git,否则会报错,注意观察分支如果不一样的话需要输入正确的分支
  4. build中需要配置maven,在在系统配置→全局工具配置→Maven(最下面)中配置maven的安装路径,这个刚刚配置过了
  5. bulid中还要写好pom位置,
  6. 进行一次测试运行,也可以不测试,如果依赖安装太慢可以改一下maven的阿里云镜像
  7. 点击Post Steps中的Add post bulid step,选择Send files or execute commands over SSH,此时SSH Server的name中是空的,需要添加一台服务器:先保存配置,然后返回,点击系统管理→系统配置→在Publish over ssh中的SSH Server中添加服务器,name自己起,Hostname是IP地址,username是用户名,点击高级,在password中写入密码,注意端口号,以及可以设置跳板机(如果需要的话),下面可以测试连接,出现success代表连接成功。此时返回到任务配置面板,就有了刚刚配置好的服务器,Source files是要传过去的文件,可以使用通配符,Remove prefix是要过滤掉的路径,,Remote directory是要传到服务器的那个文件加中注意:这个值得是root的子文件夹,所有传过去的文件都在root文件夹中,Exec command指的是文件传输完成后要执行的指令请阅读一下事务总结中的‘ssh命令没有执行的问题’,因为我在此卡了很久,刚开始我直接在这里写的命令,后面发现任务执行可以顺利进行,没有报错,但是就是没有启动jar包我的指令是nohup java -jar /root/xxoo/$appname*.jar >mylog.log 2>&1 &,这个命令应该在配置好root的环境变量就好了,但我最终选用的方案是使用了一个shell脚本使用./f.sh d1201来启动这个脚本,脚本内容:
    # /root
    
    #获取传入的参数
    appname="$1"
    echo "arg:$1"
    
    nohup java -jar /root/xxoo/$appname*.jar >mylog.log 2>&1 &
    
    #获取正在运行的jar包pid
    pid=ps -ef | grep $1 | grep 'java -jar /root/xxoo' | awk '{printf $2}' #如果pid为空,提示一下 if [ -z "$pid" ]; then echo "$appname start faild!!" else echo "$appname start success!!" fi
  8. 我们在启动这个jar包之前需要关闭之前的Java进程,并且删除之前的jar包,操作流程如下:
    1. 点击Pre steps
    2. 点击Add pre-build step
    3. 选择Send files or execute commands over SSH

    这里我们只需要在Exec command中输入命令就好了,输入./x.sh d1201,脚本内容:

    #! /bin/bash
    
    #删除历史数据
    rm -rf xxoo
    
    #获取传入的参数
    appname=$1
    echo "arg:$1"
    
    #获取正在运行的jar包pid
    pid=ps -ef | grep $1 | grep 'java -jar /root/xxoo' | awk '{printf $2}' echo $pid #如果pid为空,提示一下,否则,执行kill命令 if [ -z $pid ]; #使用-z做空值判断 then echo "$appname not start" else kill -9 $pid echo "$appname stoping..." check=ps -ef | grep -w $pid | grep 'java -jar /root/xxoo' if [ -z $check ]; then echo "$appname pid:$pid is stop" else echo "$appname stop failed" fi fi
  9. 此时这个任务就部署完成了,需要注意的点就是下面的Jenkins超时机制

Jenkins集群部署

Jenkins部署集群可以缓解主服务器的压力,我们通过增加两个节点来实现Jenkins集群的部署

  1. 点击系统管理→节点管理→新建节点→输入节点名称→选择固定节点后点击确定
  2. 远程工作目录我们可以写/root
  3. 输入一个标签
  4. 启动方式选择Launch agents vis SSH
  5. 输入主机名(IP地址)
  6. 添加一个认证信息(Gredentials)也就是这台虚拟机的用户名和密码
  7. 高级中可以选择一些其他的配置,此时这个节点就相当于配置好了
  8. 同样的操作再建立一个节点
  9. 在刚才建立的任务中选择在必要的时候使用并发构建后这个任务就可以进行并发构建了

我当时遇到了的问题就是新建的两个子节点一直出错,然后我在/root目录下的.bashrc中写入了Java的环境变量,安装了配套的maven,同时在那两台Jenkins中配置好maven(就是上面的环境配置中的maven部分)然后就好了

Jenkins超时机制和日志输出(数据流重定向)

nohup java -jar /root/xxoo/d1201*.jar >mylog.log 2>&1 &

Jenkins

失误总结

  • 插件爆红的解决办法
    1. 更新Jenkins
    2. 更新仓库地址在系统管理→插件管理→高级→升级站点中的url替换为:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/dynamic-2.346/update-center.json之后重启,还不行就执行e步骤
    3. 卸载重装插件
    4. 不管这些爆红,因为很多插件因为版本问题爆红的,而且根本没用到,所以不必管
    5. 更新仓库地址的时候需要进行的操作105 find / -name default.json
      106 cd /root/.jenkins/updates/
      107 ls
      108 cat default.json
      109 ls
      110 pwd
      111 cp default.json default.json.bak
      112 ls
      114 wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/dynamic-2.346/update-center.json --no-check-certificate
      115 mv update-center.json default.json

Jenkins

  • 文件传不过去的问题
    1. 首先检查sshserver连接有没有问题
    2. 如果测试sshserver没问题,那么基本上就是因为文件路径写的有问题
    3. 不知道为啥,我在使用的时候怎么都不行,最终使用文件全称,路径使用**通配符才好
  • ssh命令没有执行的问题
    1. 首先,可以选择使用shell脚本来执行命令
    2. 其次,当我发现使用脚本来执行的时候,基础命令没有问题,但是Java找不到执行文件的时候,查阅资料才明白,每个用户都有属于自己的环境变量,我们需要在/root下配置.bashrc这个文件,在里面写上Java的环境变量才好
    3. 环境变量书写方法:source /root/.bash_profile
      export JAVA_HOME=/jdk1.8/jdk1.8.0_212/
      export PATH=.:$JAVA_HOME/bin:$PATH
  • 还遇到一个就是,maven版本不支持,就更新录一下maven:下载maven118 cd /usr/local/
    119 mkdir maven3.3.9
    120 cd maven3.3.9/
    121 wget https://archive.apache.org/dist/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
    122 tar -zxvf apache-maven-3.3.9-bin.tar.gz
    123 vi /etc/profile
    124 source /etc/profile
    125 mvn -vApache Maven 3.3.9
    126 source /etc/profile
    127 mvn -vApache Maven 3.3.9
  • Jenkins
  • 配置环境变量:
    export M2_HOME=/usr/local/maven3.3.9/apache-maven-3.3.9
    export PATH=.:$M2_HOME/bin:$PATH
- THE END -

星期六一

6月30日17:42

最后修改:2024年6月30日
1

非特殊说明,本博所有文章均为博主原创。

共有 2 条评论

  1. 你好啊

  2. 我来啦