Java+Jenkins实现自动化打包部署流程

发布于:2024-10-18 ⋅ 阅读:(11) ⋅ 点赞:(0)

目录

jenkins简介

前置依赖

1. jdk17+

2.apache maven 3.8.6

3.git

4.docker

5.下载jenkins

启动配置jenkins

优缺点对比

Jenkins 的优点:

Jenkins 的缺点:


jenkins简介

Jenkins 是一个开源的自动化服务器,可以用于自动化各种任务,包括构建、测试和部署软件。Jenkins 支持多种插件,使其能够与几乎所有流行的软件工具集成,如 Git、Subversion、Maven、Ant、Docker 等。

以下是 Jenkins 的一些主要特点:

  1. 自动化构建和测试:Jenkins 可以自动执行构建和测试过程,帮助开发者快速发现代码中的错误。

  2. 持续集成(CI):Jenkins 支持持续集成,即频繁地将代码变更集成到主分支中,确保代码的稳定性。

  3. 持续部署(CD):通过 Jenkins,可以实现持续部署,自动化地将软件部署到生产环境中。

  4. 插件生态系统:Jenkins 拥有一个庞大的插件生态系统,这些插件可以扩展 Jenkins 的功能,使其能够适应不同的开发和部署需求。

  5. 分布式构建:Jenkins 支持分布式构建,可以在多台机器上并行执行任务,提高构建速度。

  6. 易于配置:Jenkins 提供了 Web 界面,使得配置和管理任务变得简单。

  7. 丰富的社区支持:由于 Jenkins 是开源的,它拥有一个活跃的社区,社区成员会贡献新的插件和功能,同时也提供支持和帮助。

  8. 可扩展性:Jenkins 可以通过编写自己的插件或使用现有的插件来扩展其功能。

  9. 多平台支持:Jenkins 可以在多种操作系统上运行,包括 Windows、Linux 和 macOS。

  10. 安全性:Jenkins 提供了多种安全机制,包括用户认证和授权,确保构建过程的安全性。

Jenkins 通常用于软件开发的自动化流程中,帮助团队提高效率,减少人为错误,并加快软件交付的速度

前置依赖

1. jdk17+

oracle jdk 下载地址:  Java Downloads | Oracle

openjdk 下载地址:https://openjdk.org/install/

2.apache maven 3.8.6

下载地址: Maven – Download Apache Maven

3.git

4.docker

安装可参考 windows10 vagrant+VirtualBox安装docker_vagrant 6.0下载-CSDN博客

5.下载jenkins

下载地址:https://get.jenkins.io/war/

启动配置jenkins

启动命令:java -jar -Dpermissive-script-security.enabled=true -Djava.awt.headless=true -Xmx1024m jenkins.war --httpPort=10000

启动后访问http://127.0.0.1:10000端口,按照默认安装模式,等待安装完成后进入到主页面

进入系统管理

找到全局工具配置

配置maven

配置git,用于拉取代码,配置完成后应用并保存。

编写部署的jenkins.groovy代码,用于构建流水线发布,该文件位置在您实际的项目代码根目录。内容仅仅为演示,流程步骤可自行拓展。

请将文件中的服务目录、应用名称、景象仓库地址等换成您实际地址。

def createVersion() {
    return new Date().format('yyyyMMddHHmmss') + "_${env.BUILD_ID}"
}

def createVersionTime() {
    return new Date().format('yyyyMMddHHmmss')
}

pipeline {
    agent any
    environment {
        _APP_NAME = '你的应用名称'
        _APP_VERSION = '1.0.0'
        _VERSION = "${_APP_VERSION}_${createVersion()}"
        _HARBOR_TAG = "-dev-${createVersionTime()}"
    }
    stages {
        stage('Build') { 
            steps {
                echo 'Building..'
                sh "cd ${env.WORKSPACE}"
                sh 'source ~/.bash_profile'
                sh 'mvn clean install -am  -Dmaven.test.skip=true'
            }
        }

        stage('Build Docker') {
            steps {
                echo 'Build ..'
                sh "mv ${env.WORKSPACE}/服务目录/target/服务目录-1.0.jar ${env.WORKSPACE}/服务目录/"
                sh "cd ${env.WORKSPACE}/服务目录/"
                sh "chmod +x ${env.WORKSPACE}/服务目录/服务目录-1.0.jar"
                sh "chmod 777 ${env.WORKSPACE}/服务目录/服务目录-1.0.jar"
                sh "docker build --rm -t ${env._APP_NAME}:${env._VERSION} -f ${env.WORKSPACE}/服务目录/Dockerfile ${env.WORKSPACE}/服务目录/"
            }
        }

        stage('push Docker') {
            steps {
                echo 'docker tag ..'
                sh "docker tag ${env._APP_NAME}:${env._VERSION} 镜像仓库地址/目录/${env._APP_NAME}:${env._VERSION}"
                sh "docker login harbor镜像仓库地址 -u 用户名 -p 密码"
                sh "docker push 镜像仓库地址/目录/${env._APP_NAME}:${env._VERSION}"

                sh "docker tag ${env._APP_NAME}:${env._VERSION} 镜像仓库地址/目录/${env._APP_NAME}:latest"
                sh "docker push 镜像仓库地址/目录/${env._APP_NAME}:latest"
            }
        }

    }
}

编写Dockerfile文件,并将它放  到服务目录/Dockerfile 的位置。

FROM openjdk:11
EXPOSE 8991
EXPOSE 9999
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo "Asia/Shanghai" > /etc/timezone
WORKDIR /声明工作目录
COPY ./source-1.0.jar source-1.0.jar
ENTRYPOINT ["sh","-c","服务启动的命令"]

文件目录存放见截图

接下来进行jennkins配置,点击新建任务,输入名称后选择流水线并点击确定按钮。

配置git地址以及登录凭证,并指定代码分支

配置流水线写好的.groovy文件,点击应用保存

点击立即构建开始部署发布,可点击任务Console Outout查看执行的完整流程步骤,至此jenkins的配置安装部署成功。

优缺点对比

Jenkins 的优点:

  1. 功能测试与部署:Jenkins 可以自动完成代码的编译、打包和部署,减轻运维人员的工作负担。
  2. 持续集成:Jenkins 作为一个开源的持续集成引擎,支持自动化构建、测试和部署流程,提高开发效率和代码质量。
  3. 易于安装与配置:Jenkins 易于安装和配置,方便开发人员、运维人员和测试人员使用。
  4. 插件生态系统:Jenkins 拥有丰富的插件生态系统,可以集成各种工具和服务。
  5. 可扩展性与灵活性:Jenkins 的可扩展性和灵活性使其能够适应各种规模和复杂度的项目。
  6. 分布式构建:Jenkins 支持分布式构建,提高了构建效率。
  7. 强大的社区支持:作为开源项目,Jenkins 拥有活跃的社区和广泛的用户基础。

Jenkins 的缺点:

  1. 性能问题:Jenkins 反应可能较慢,特别是在资源消耗较大的情况下,页面跳转切换时可能会感到延迟和卡顿。
  2. 插件系统:虽然插件系统提供了扩展性,但过多的插件可能导致易用性降低,且插件配置可能复杂。
  3. Docker 集成体验:Jenkins 的 Docker 集成体验不够好,插件众多且配置复杂。
  4. 调试困难:Jenkins 的调试过程可能比较麻烦,没有本地或服务器上的命令行调试功能。
  5. 界面老旧:Jenkins 的界面可能显得老旧,尽管新的插件如 BlueOcean 提供了改进的界面。

这些优缺点可以帮助用户更好地理解 Jenkins 是否适合他们的持续集成和持续部署需求。