持续集成Jenkins (四)Jenkins+git+maven项目构建、自动化部署

  1. GIT配置

1.1 前言:需要安装 git 客户端.

yum install git

1.2 Jenkins 配置插件  Git 

在仪表盘选择Manage Jenkins>>Plugin Manager>>进入如下页面,可以选择可选的插件,安装完成后的插件在installed里面可以看到,我这里已经安装了

持续集成Jenkins (四)Jenkins+git+maven项目构建、自动化部署_第1张图片

1.3 Jenkins 选择 git 路径

持续集成Jenkins (四)Jenkins+git+maven项目构建、自动化部署_第2张图片

在后面的构建过程可以看到,使用的就是 /usr/bin/git 去拉取远程 git 仓库。

持续集成Jenkins (四)Jenkins+git+maven项目构建、自动化部署_第3张图片

2. Jenkins 配置Git

2.1 新建任务

持续集成Jenkins (四)Jenkins+git+maven项目构建、自动化部署_第4张图片

2.2 创建任务

持续集成Jenkins (四)Jenkins+git+maven项目构建、自动化部署_第5张图片

2.3 配置Source Code Management

这里选择Git,然后如图配置:输入仓库地址,填入验证信息。其他按需更改。

持续集成Jenkins (四)Jenkins+git+maven项目构建、自动化部署_第6张图片

登录gitee账号选择仓库地址获取: 

持续集成Jenkins (四)Jenkins+git+maven项目构建、自动化部署_第7张图片

2.4 配置Credentials

持续集成Jenkins (四)Jenkins+git+maven项目构建、自动化部署_第8张图片

当前使用 username+password类型,并填写访问 git 的用户名、密码。

2.5 配置构建步骤

持续集成Jenkins (四)Jenkins+git+maven项目构建、自动化部署_第9张图片

从 pom.xml 进行构建 maven 项目,并配置编译打包的命令。打包命令,不要加mvn,默认前缀会加;一般为空即可,如果有需要再添加内容;可添加maven命令。

clean package -Dmaven.test.skip=true(清除以前的包,重新打包,并跳过测试) 

3. 开始构建

点击立即构建

持续集成Jenkins (四)Jenkins+git+maven项目构建、自动化部署_第10张图片

查看Console Output查看信息,如下图所示:可以看见由Git从仓库拉取代码,并在本地执行的一个过程。

持续集成Jenkins (四)Jenkins+git+maven项目构建、自动化部署_第11张图片

构建成功:

持续集成Jenkins (四)Jenkins+git+maven项目构建、自动化部署_第12张图片

4. 构建过程中的问题

4.1 maven依赖问题

/m2/repository/org/springframework/boot/spring-boot-starter-parent/2.2.3.RELEASE/spring-boot-starter-parent-2.2.3.RELEASE.pom.part.lock (没有那个文件或目录)
ERROR: Failed to parse POMs
org.apache.maven.project.ProjectBuildingException: Some problems were encountered while processing the POMs:
[WARNING] 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: org.projectlombok:lombok:jar -> duplicate declaration of version (?) @ line 71, column 21
[FATAL] Non-resolvable parent POM for com.testnode:redis_tools:1.0-SNAPSHOT: Could not transfer artifact org.springframework.boot:spring-boot-starter-parent:pom:2.2.3.RELEASE from/to alimaven (http://maven.aliyun.com/nexus/content/groups/public/): /m2/repository/org/springframework/boot/spring-boot-starter-parent/2.2.3.RELEASE/spring-boot-starter-parent-2.2.3.RELEASE.pom.part.lock (没有那个文件或目录) and 'parent.relativePath' points at no local POM @ line 12, column 13

    at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:397)
    at hudson.maven.MavenEmbedder.buildProjects(MavenEmbedder.java:370)
    at hudson.maven.MavenEmbedder.readProjects(MavenEmbedder.java:340)
    at hudson.maven.MavenModuleSetBuild$PomParser.invoke(MavenModuleSetBuild.java:1330)
    at hudson.maven.MavenModuleSetBuild$PomParser.invoke(MavenModuleSetBuild.java:1124)
    at hudson.FilePath.act(FilePath.java:1200)
    at hudson.FilePath.act(FilePath.java:1183)
    at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.parsePoms(MavenModuleSetBuild.java:985)
    at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.doRun(MavenModuleSetBuild.java:689)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:522)
    at hudson.model.Run.execute(Run.java:1896)
    at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:543)
    at hudson.model.ResourceController.execute(ResourceController.java:101)
    at hudson.model.Executor.run(Executor.java:442)
Finished: FAILURE

构建过程发生上面的报错,原因是maven拉取依赖失败。需要修改 setting.xml 中的配置,我使用的配置内容如下:





  /usr/local/maven_repository

    
  

  
  

  
  

  
    
     alimaven
     central
     aliyun maven
     https://maven.aliyun.com/repository/central
    

     
    alimaven 
    aliyun maven 
    http://maven.aliyun.com/nexus/content/groups/public/ 
     central 
      
  
     
  

4.2 权限问题

持续集成Jenkins (四)Jenkins+git+maven项目构建、自动化部署_第13张图片

由于我jenkins使用的不是 root 用户,而是 jenkins 用户,所以在build生成 war 后,没有权限将 war 生成到 maven 目录下,需要进行授权:

chown -R jenkins /usr/local/maven_repository

5. 自动化部署(未完……)

5.1 插件安装

(1)安装SSH插件

如果没有安装SSH插件的话,是不支持配置远程SSH的,这里可以去插件里面看下,是否安装了。 (2) 新增全局配置

环境配置, 管理Jenkins-->Configure System 找到 Publish over SSH,点击新增,新增SSH Server,输入Hostname,Username,Password,点击Test Configuration,提示:Success 代表SSH连通远端服务器,保存即可。

持续集成Jenkins (四)Jenkins+git+maven项目构建、自动化部署_第14张图片

注:如果没有勾选 Use password authentication, or use a different key这个选项,点击测试连接,会报错:jenkins.plugins.publish_over.BapPublisherException: Failed to connect and initialize SSH connection

创建Jenkins访问私钥:SSH

6. 单独编译子模块

Jenkins构建Maven多模块项目时,单独编译子模块,并且不触发构建其它模块。

配置:

  1. Root POM指向父pom.xml

  1. Goals and options指定构建模块的参数:mvn -pl service01-web -am clean package,单独构建jsoft-web项目以及它所依赖的其它项目。

  1. 编译多个子模块,使用多个 -pl 参数,为: -pl service01 -pl service02 。

通过上面的操作之后确实能单独构建了,但可能会同时触发Jenkins上的其它模块的项目,可以通过屏蔽下游项目来限制

持续集成Jenkins (四)Jenkins+git+maven项目构建、自动化部署_第15张图片

选中即可实现不自动触发下游的项目。

你可能感兴趣的:(#,jenkins,jenkins,git,ci/cd,构建,maven)