基于Docker的Jenkins流水线构建Java项目实战

步骤

  • 拉取镜像并启动容器
  • 安装插件
  • 配置Git
  • 配置Maven
  • 配置jdk
  • 全局工具配置
  • 系统配置
  • 创建流水线任务

拉取镜像并启动容器


# 拉取镜像
docker pull jenkins/jenkins

# 运行容器
docker run -d --name myjenkins -p 7512:8080 -v <宿主机目录路径>/jenkins:/var/jenkins_home jenkins/jenkins

# 有可能会遇到容器内时区与宿主机时区不致情况

# 在<宿主机目录路径>/Jenkins中创建app文件夹,用于存放JDK和Maven
# 此时需要进入容器修改时区
docker exec -it -u root myjenkins /bin/bash

# 查看当前时区
cat /etc/timezone

# 将时区设置为上海
echo Asia/Shanghai > /etc/timezone

# 再次查看当前时区
cat /etc/timezone

安装插件

  • Git plugin
  • Maven Integration plugin
  • Publish Over SSH

配置Git


# 进入Jenkins容器
docker exec -it myjenkins /bin/bash

# 进入工作目录
cd /var/jenkins_home

# 配置git账号用户名(与登录的Git账号名一致)
git config --global user.name 'xxx'

# 生成密钥
ssh-keygen -t rsa
# 生成后密钥对会放在/var/jenkins_home/.ssh/中
# 将公钥添加到Gitlab

# 测试看能否成功拉取代码
git clone git@xxx.git

配置Maven

在Maven官网下载Maven并解压到 <宿主机目录路径>/Jenkins/app/

配置JDK

在Oracle官网下载JDK并解压到 <宿主机目录路径>/Jenkins/app/

全局工具配置

  • 名称:myjdk8

  • JAVA_HOME:/var/jenkins_home/app/jdk1.8.0_411

  • 名称:mymaven

  • MAVEN_HOME:/var/jenkins_home/app/apache-maven-3.9.6

全局配置

  • SSH Servers
    • Name:testserver
    • Hostname:57.198.78.21
    • Username:root
    • Remote Directory:/

创建流水线任务

# 流水线脚本
pipeline {
    agent any

    tools {
        jdk 'myjdk8'
        maven 'mymaven'
    }

    stages {
        stage('步骤1') {
            steps {
                git branch: 'master', url: 'git@xxx:xxx.git'
                sh 'mvn -DskipTests clean install'
            }
        }
        stage('步骤2') {
            steps {
                git branch: 'dev', url: 'git@xxx:xxx.git'
                sh 'mvn -DskipTests clean package'
            }
        }
        stage('步骤3') {
            steps {
                sshPublisher(publishers: [sshPublisherDesc(configName: 'testserver', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'cd /home/api; docker stop myapi ; docker rm myapi ; docker rmi myapi; docker build -t myapi . ; docker run -d --name myapi -p 8081:8080 myapi', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/home/api', remoteDirectorySDF: false, removePrefix: 'target/', sourceFiles: 'target/xxx.jar')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
                echo '远程部署完成'
            }
        }
    }
}
  • 11
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值