Jenkins入门:linux系统docker下安装jenkins、 并以自动化的方式 用Maven构建Java应用 - Go语言中文社区

Jenkins入门:linux系统docker下安装jenkins、 并以自动化的方式 用Maven构建Java应用


本篇博客介绍如何使用Jenkins编排并构建一个使用Maven管理的简单Java应用程序。该应用包含若干单元测试,用于检查main方法。 测试结果保存在JUnit XML报告中。了解Jenkins详细介绍,点击查看Jenkins官方文档

1. Jenkins 是什么?

Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。
Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。

2. 安装Jenkins

Jenkins通常作为一个独立的应用程序在其自己的流程中运行, 内置Java servlet 容器/应用程序服务器(Jetty)。
配置要求:
软件配置:Java 8—​无论是Java运行时环境(JRE)还是Java开发工具包(JDK)都可以。
安装软件:使用Linux下安装的Docker容器(因为这可以在任何支持的操作系统macOS,Linux和Windows或云服务上运行Docker镜像)

1.打开终端窗口
2.下载 jenkinsci/blueocean 镜像并使用以下docker run 命令将其作为Docker中的容器运行 :

注意:jenkinsci/blueocean image 镜像 捆绑了所有Blue Ocean插件和功能,每次发布Blue Ocean新版本时,都会发布新镜像。

docker run 
  --rm 
  -u root 
  -p 8080:8080 
  -v jenkins-data:/var/jenkins_home 
  -v /var/run/docker.sock:/var/run/docker.sock 
  -v "$HOME":/home 
  jenkinsci/blueocean

命令说明:
--rm (可选) jenkinsci/blueocean 关闭时自动删除Docker容器。如果您需要退出Jenkins,这可以保持整洁。
-d (可选)jenkinsci/blueocean 在后台运行容器(即“分离”模式)并输出容器ID。如果您不指定此选项, 则在终端窗口中输出正在运行的此容器的Docker日志。
-p 49000:8080 映射,第一个数字代表主机上的端口,第二个代表容器的端口。您将通过端口49000访问主机上的Jenkins。
-p 50000:50000(可选)将 jenkinsci/blueocean 容器的端口50000 映射到主机上的端口50000
-v jenkins-data:/var/jenkins_home (可选,但强烈建议)映射在容器中的/var/jenkins_home 目录到具有名字 jenkins-data 的volume。 如果这个卷不存在,那么这个 docker run 命令会自动为你创建卷。 如果您希望每次重新启动Jenkins(通过此 docker run … 命令)时保持Jenkins状态,则此选项是必需的 。 如果你没有指定这个选项,那么在每次重新启动后,Jenkins将有效地重置为新的实例。
-v /var/run/docker.sock:/var/run/docker.sock (可选 /var/run/docker.sock 表示Docker守护程序通过其监听的基于Unix的套接字。 该映射允许 jenkinsci/blueocean 容器与Docker守护进程通信, 如果 jenkinsci/blueocean 容器需要实例化其他Docker容器,则该守护进程是必需的。 如果运行声明式管道,其语法包含agent部分用 docker
-v "$HOME":/home 将主机上的$HOME 目录 (即你的本地)映射到 (通常是 /Users/ 目录) 到容器的 /home 目录。

如果你希望或需要使用 docker exec 命令通过一个终端/命令提示符来访问 Jenkins/Blue Ocean Docker 容器,
你可以添加如 --name jenkins-tutorials 选项(与上面的 docker run ), 这将会给Jenkins/Blue Ocean Docker容器一个名字 “jenkins-tutorials”。

这意味着你可以通过 docker exec 命令访问Jenkins/Blue Ocean 容器(通过一个单独的终端 /命令提示窗口) ,

例如: docker exec -it jenkins-tutorials bash

  1. 解锁Jenkins
    当在终端/命令提示窗口出现两组星号时, 浏览
    http://localhost:8080 并等待 Unlock Jenkins 页面出现。
    在这里插入图片描述
  2. 再次从终端/命令提示窗口, 复制自动生成的字母数字密码(在两组星号之间)。
    在这里插入图片描述
  3. 在 Unlock Jenkins 页面, 粘贴该密码到 Administrator password 字段并点击 Continue。
  4. 在Customize Jenkins 页面点击 Install suggested plugins。等待安装插件
  5. 创建一个管理员用户,开始使用Jenkins

停止:在终端/命令提示窗口输入 Ctrl-C停止 Jenkins/Blue Ocean Docker 容器,
重启:运行相同的 docker run ... 命令

3. 用Maven构建Java应用

配置要求:
安装软件:Git和GitHub Desktop.

通过将应用程序源代码所在的示例仓库fork到你自己的Github账号中, 并clone到本地

  1. 请确保你登陆了你的GitHub账户。
  2. 将示例仓库 simple-java-maven-app fork到你的账户的Github仓库中。
  3. 将你的GitHub账户中的 simple-java-maven-app 仓库clone到你的本地机器。
  1. 回到Jenkins,如果有必要的话重新登录,点击 Welcome to Jenkins! 下方的 create new jobs
    注意: 如果你无法看见以上内容,点击左上方的 New Item 。
  2. 在 Enter an item name 域中,为新的流水线项目指定名称(例如 simple-java-maven-app)。
  3. 向下滚动并单击 Pipeline,然后单击页面末尾的 OK 。
  4. ( 可选 ) 在下一页中,在 Description 字段中填写流水线的简要描述 (例如 一个演示如何使用Jenkins构建Maven管理的简单Java应用程序的入门级流水线。
  5. 点击页面顶部的 Pipeline 选项卡,向下滚动到 Pipeline 部分。
  6. 在 Definition 域中,选择 Pipeline script from SCM 选项。此选项指示Jenkins从源代码管理(SCM)仓库获取你的流水线, 这里的仓库就是你clone到本地的Git仓库。
  7. 在 SCM 域中,选择 Git。
  8. 在 Repository URL 域中,填写你本地仓库的 目录路径:/home/GitHub/simple-java-maven-app
  9. 点击 Save 保存你的流水线项目。你现在可以开始创建你的 Jenkinsfile,这些文件会被添加到你的本地仓库。

首先,创建一个初始流水线来下载Maven Docker镜像,并将其作为Docker容器运行(这将构建你的简单Java应用)。 同时添加一个“构建”阶段到流水线中,用于协调整个过程。

  1. 在本地的git仓库跟目录创建一个Jenkinsfile 文本文件
pipeline {
    agent {
        docker {
            image 'maven:3-alpine' 
            args '-v /root/.m2:/root/.m2' 
        }
    }
    stages {
        stage('Build') { 
            steps {
                sh 'mvn -B -DskipTests clean package' 
            }
        }
    }
}

image:下载maven容器,在Docker中与jenkins相互独立运行
args:在暂时部署的Maven Docker容器的 /root/.m2 (即Maven仓库)目录 和Docker主机文件系统的对应目录之间创建了一个相互映射,防止每次重启Docker,丢失jenkins仓库
stage(‘Build’):定义一个‘test’stage显示在Jenkins UI上
sh ‘mvn step’:运行Maven命令干净地构建你的Java应用(不运行任何tests)

  1. 运行以下命令提交文本文件到git仓库:
    git add .
    git commit -m “Add initial Jenkinsfile”
  2. 在jenkins页面 This job has not been run 消息框中,点击 Run,然后快速点击右下角出现的 OPEN 链接

jenkins流水线做了如下几个动作
a.将项目排入队列等待在agent上运行。
b.下载Maven Docker镜像,并且将其运行在Docker中的一个容器中
c. 在Maven容器中运行 Build 阶段 (Jenkinsfile 中所定义的)。在这期间,Maven会下载构建你的Java应用所需的工件, 这些工件最终会被保存在Jenkins的本地Maven仓库中(Docker的主机文件系统)。
d.构建成功页面变成绿色
在这里插入图片描述

  1. 复制以下“stage(Test)”声明式流水线代码,并粘贴到 Jenkinsfile 中 Build 阶段的下方:
pipeline {
    agent {
        docker {
            image 'maven:3-alpine'
            args '-v /root/.m2:/root/.m2'
        }
    }
    stages {
        stage('Build') {
            steps {
                sh 'mvn -B -DskipTests clean package'
            }
        }
        stage('Test') { 
            steps {
                sh 'mvn test' 
            }
            post {
                always {
                    junit 'target/surefire-reports/*.xml' 
                }
            }
        }
    }
}

stage(‘Test’):定义一个‘test’stage显示在Jenkins UI上
sh ‘mvn test’:执行Maven命令运行Java应用的单元测试。 生成一个JUnit XML报告
junit :用于归档JUnit XML报告,可以在流水线运行的 Tests 页面获取结果

  1. 提交修改内容到git上,运行jenkins,查看jenkins运行结果
    在这里插入图片描述
版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/Queen_xzx/article/details/98092165
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢