当前位置:   article > 正文

gitee-jenkins-测试服务器|部署+跑通入门简单案例,问题发现与处理_怎么在测试服务器搭jenkins

怎么在测试服务器搭jenkins

操作准备

cicd的整个流程就是:
1.开发通过git或svn这样的版本控制工具进行代码集成

2.运维或测试通过jks或其他cicd工具进行持续的交付和部署

这里使用尚硅谷教程中非常形象的流程图,传统的集成,构建,测试,都由一位管理员完成,这样不仅风险大,发版也麻烦,使用jks能够自动化的完成这些操作。

测试功能需要的环境:
1.可以拉取的仓库

可以是github,可以是gitlab,可以是gitee,因为gitlab安装耗费资源过大,github要外网,云服务器不好整,我这里采用gitee作为仓库基础。(所以相当于要把git给学学咋用)

2.可以部署jks的服务器

可以是各种系统centos,ubuntu等,我采用阿里云服务器并用docker安装jks。

3.可以部署需要测试的服务的服务器

比如说我这里使用maven的pom作为依赖配置运行jar文件,我的环境就需要jre和maven。

部署

镜像仓库部署

首先需要去找个远程版本控制仓库,啥都行,最好可以配个开发工具,毕竟之后要用也不怎么会去敲命令行,这里可以查看这个教程。

【精选】【Git】Intellij IDEA+Gitee(码云) 的使用_intellij idea gitee_网友小锋的博客-CSDN博客

踩坑:我踩得一个坑其实挺没脑子的,我就是gitee创建了一个仓库,idea自己又建了一个,我第一步不是从仓库clone出来,所以就冲突很大,在push的时候就报错,除非我强制去推送,这样肯定是不好,毕竟版本控制工具肯定是要确保这种风险的。所以我按正常的push流程走了一遍就行了。

jenkins部署

直接按照官网部署流程即可。可以使用docker和直接war包安装,我两者都试过了,遇到的问题也贴在下面了。哎,感觉官网的这个镜像搞得也不是很行。得我自己去找版本,不想找了已经。

 可以注意的是,查看密码正常就上面贴着的这个,docker方式就查看挂载出来的文件路径(我的路径为/var/lib/docker/volumes/jenkins-data/_data/secrets),或者直接进去docker查看,官方文档都写的很详细了,不需要我多赘述。

官网链接​​​​​安装Jenkins

我curl成功之后基本是部署完成了,防火墙上开个端口应该就能访问了,一个jks就得要跑快2g的内存,幸好我买了4g的。而且用docker部署东西是挺快的。

 成功:

centos7都要不支持了,时代变了。

war包安装遇到的问题:

1.我使用官方命令切换端口监听的时候,发现启动后访问不了,去掉参数则成功。

java -jar jenkins.war --httpPort=9999

原因:防火墙没开

排错过程:

一开始想着大概率是我此时安装的版本不是官方推荐版本,旧版可能不支持在初始化时指定端口。干脆就搞个新的得了。新的也不行,然后本机curl了一下,通的,才发现原来是防火墙没开,因为之前开过8080才成功,我错了,是我错怪jks了。

  1. # search jdk version
  2. yum search java| grep jdk
  3. #
  4. yum install java-11-openjdk
  5. # 因为我之前匹配的是java1.8的jks,现在要卸载java8的依赖,如果只卸载jdk还会残留一些乐色,直接模糊匹配卸了即可
  6. yum remove java*
  7. #版本展示
  8. [root@iZwz9il39hpzhymghz7a8jZ ~]# java -version
  9. openjdk version "11.0.20" 2023-07-18 LTS
  10. OpenJDK Runtime Environment (Red_Hat-11.0.20.0.8-1.el7_9) (build 11.0.20+8-LTS)
  11. OpenJDK 64-Bit Server VM (Red_Hat-11.0.20.0.8-1.el7_9) (build 11.0.20+8-LTS, mixed mode, sharing)
docker安装遇到的问题:
用官方镜像,会显示部分插件安装失败。

解决过程:

我一开始以为是镜像源的问题,结果我配置了才发现是版本不对,对应插件安装不上。不过也留着配置镜像源的方法之后可以参考

1是配置镜像源,可以参考如下教程,不得不说写的很不错。

Jenkins 更换国内源 安装插件飞快 - JPinsz - 博客园 (cnblogs.com)

2是使用中国的docker镜像,我看了一下,这个最近的镜像都是好久之前的,所以我打算采用配置镜像源的方式
Docker 安装 Jenkins , 并解决初始安装插件失败_使用docker部署jenkins初始化全部报错-CSDN博客

后来跳过插件安装,直接进来看报错,发现其实是jks版本不够,我原本为2.346貌似。刚好学一下升级jks,就很简单,载了war包之后,丢到jenkins挂载在外面的home目录下,解压并替换原本的war文件夹。升级到了2.426.1。

 然后可恶的是直接说这个版本马上不支持这部分系统和java11了,我又降回去了,官方的镜像适配的也不是很好啊。。

jenkins在初始化之后容器会突然失败

重启就能解决,因为我docker run时加了 -rm参数,所以容器自动消失了,无法看到错误日志,懒得排查了,重新run一遍就好了。

测试服务器部署

装个jdk就好了,跟jks的java环境部署类似。

测试案例

测试一个maven部署代码的案例

配置

plugins插件安装

安装maven集成插件(通过这个插件可以用其创建maven项目)

Publish over ssh(通过这个插件,可以将打包后的jar通过ssh发布)

tools配置

要跑maven项目的话,需要在系统配置中添加配置maven和ssh,为之后代码拉取和执行做准备

1.maven查看官方文档来配置和下载

Maven – Installing Apache Maven

配置环境变量步骤

  1. # 添加环境变量
  2. vim /etc/profile
  3. MAVEN_HOME=/root/apache-maven-3.8.6
  4. export PATH=${MAVEN_HOME}/bin:${PATH}
  5. source /etc/profile
  6. [root@iZwz9il39hpzhymghz7a8jZ /]# mvn --version
  7. Apache Maven 3.8.6 (84538c9988a25aec085021c365c560670ad80f63)
  8. Maven home: /root/apache-maven-3.8.6
  9. Java version: 11.0.20, vendor: Red Hat, Inc., runtime: /usr/lib/jvm/java-11-openjdk-11.0.20.0.8-1.el7_9.x86_64
  10. Default locale: en_US, platform encoding: UTF-8
  11. OS name: "linux", version: "3.10.0-1160.11.1.el7.x86_64", arch: "amd64", family: "unix"

2.ssh配置

这里我采用密码方式,并且配置成功

问题记录:

1.下载缓慢

解决方法:加下镜像源

我的localsettiing目录不改,就默认就好了。

可以参考这篇文章:centos7下安装Maven_centos7安装maven-CSDN博客

  1. <mirror>
  2. <!--This sends everything else to /public -->
  3. <id>nexus</id>
  4. <mirrorOf>*</mirrorOf>
  5. <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
  6. </mirror>
  7. <mirror>
  8. <!--This is used to direct the public snapshots repo in the
  9. profile below over to a different nexus group -->
  10. <id>nexus-public-snapshots</id>
  11. <mirrorOf>public-snapshots</mirrorOf>
  12. <url>http://maven.aliyun.com/nexus/content/repositories/snapshots/</url>
  13. </mirror>
  14. <mirror>
  15. <!--This is used to direct the public snapshots repo in the
  16. profile below over to a different nexus group -->
  17. <id>nexus-public-snapshots1</id>
  18. <mirrorOf>public-snapshots1</mirrorOf>
  19. <url>https://artifacts.alfresco.com/nexus/content/repositories/public/</url>
  20. </mirror>

2.构建时maven报错

  1. [ERROR] COMPILATION ERROR :
  2. [INFO] -------------------------------------------------------------
  3. [ERROR] Source option 5 is no longer supported. Use 6 or later.
  4. [ERROR] Target option 1.5 is no longer supported. Use 1.6 or later.
  5. [INFO] 2 errors
  6. [INFO] -------------------------------------------------------------
  7. [INFO] ------------------------------------------------------------------------
  8. [INFO] BUILD FAILURE
  9. [INFO] ------------------------------------------------------------------------
  10. [INFO] Total time: 26.116 s
  11. [INFO] Finished at: 2023-11-17T12:54:58+08:00
  12. [INFO] ------------------------------------------------------------------------
  13. Waiting for Jenkins to finish collecting data
  14. [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project test: Compilation failure: Compilation failure:
  15. [ERROR] Source option 5 is no longer supported. Use 6 or later.
  16. [ERROR] Target option 1.5 is no longer supported. Use 1.6 or later.
  17. [ERROR] -> [Help 1]
  18. [ERROR]
  19. [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
  20. [ERROR] Re-run Maven using the -X switch to enable full debug logging.
  21. [ERROR]
  22. [ERROR] For more information about the errors and possible solutions, please read the following articles:
  23. [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

解决方法:改pom配置文件

gpt:这个错误是由于Maven编译的时候,版本设置错误导致的。错误信息提示"Source option 5 is no longer supported. Use 6 or later."和"Target option 1.5 is no longer supported. Use 1.6 or later.",意思是你的Java源代码版本和目标Java版本过低,不再被支持,至少需要6以上版本。

可以参考:maven-compiler-plugin 插件详解-CSDN博客

3、发现部分模块都显示404

原因:

这个错误是由于Jenkins(一种持续集成工具)的CSRF保护机制导致的。当你尝试执行某些需要验证的操作(比如通过API触发构建)时,Jenkins会要求你提供一个有效的crumb(也就是CSRF令牌)。 解决这个问题的方法有两种:

1. 关闭Jenkins的CSRF保护。你可以在Jenkins的系统设置里找到这个选项。不过请注意,关闭CSRF保护可能会增加你的系统被攻击的风险。

2. 在你的请求中包含一个有效的crumb。你可以先通过Jenkins的API获取一个crumb,然后将其包含在你的请求中。以下是获取crumb的示例代码(使用curl命令): ``` curl -u username:password 'http://jenkins_url/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)' ``` 这条命令会返回一个形如"Jenkins-Crumb:xxxxx"的字符串,你需要将其作为一个header添加到你的请求中。

解决方法,配置兼容跨站:

测试案例运行

1.设置git仓库地址与分支等

2.设置pom.xml配置文件的地址

3.设置构建后操作,将跑完的jar包丢到服务器上

初步尝试,最简单的拉取并在本地跑通了,部分版本jks无法使用模糊匹配,其中ssh的目录位置需要多注意和尝试。首先从远程拉取的文件会默认带上前缀,可以用参数排除,例如我就排除了target目录,然后因为ssh登录会自动进入到登录用户的目录而不是根目录,配置需要注意这个。此时我的传送文件的路径如下:

  1. [root@VM-12-13-centos test]# pwd
  2. /root/jenkins_repository/test
  3. [root@VM-12-13-centos test]# ll
  4. total 4
  5. -rw-r--r-- 1 root root 2206 Nov 21 11:29 jks_test-1.0-SNAPSHOT.jar

日志:

  1. Waiting for Jenkins to finish collecting data
  2. [JENKINS] Archiving /root/.jenkins/workspace/test/pom.xml to org.example/jks_test/1.0-SNAPSHOT/jks_test-1.0-SNAPSHOT.pom
  3. [JENKINS] Archiving /root/.jenkins/workspace/test/target/jks_test-1.0-SNAPSHOT.jar to org.example/jks_test/1.0-SNAPSHOT/jks_test-1.0-SNAPSHOT.jar
  4. channel stopped
  5. SSH: Connecting from host [iZwz9il39hpzhymghz7a8jZ]
  6. SSH: Connecting with configuration [test_server] ...
  7. SSH: EXEC: completed after 200 ms
  8. SSH: Disconnecting configuration [test_server] ...
  9. SSH: Transferred 1 file(s)
  10. Finished: SUCCESS

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号