docker、docker-compose的安装请看这里https://blog.youkuaiyun.com/andyLyysh/article/details/126738190?spm=1001.2014.3001.5502
jenkins安装请看这里https://blog.youkuaiyun.com/andyLyysh/article/details/128585967?spm=1001.2014.3001.5502
1、创建pipeline任务
2、配置任务
2.1 配置git仓库地址拉取代码
2.2、使用maven构建项目
在pipeline script中引入maven工具,使用 tools 来引入需要的工具
图中的maven工具的名称maven3.8.6,必须要与Global Tool Configuration中配置安装的maven名称一致
关于jdk的建议,Jenkins容器默认使用的是openjdk,在我们开发中几乎都是使用orcale jdk,所以需要配置jdk,避免在打包中出现不必要的错误
2.4、配置ssh推送目标jar包到远程服务器
2.5、配置推送docker文件及docker执行命令
3、完整示例代码
pipeline {
agent any
tools {
maven "maven3.8.6"
jdk "java8"
}
stages {
stage ("拉取代码") {
steps {
git branch: 'dev', credentialsId: 'e0939905-8a6b-445d-906d-fe469c2fcb8a', url: 'http://192.168.13.226:3000/zhush/topfus-social.git'
}
}
stage ("构建项目") {
steps {
sh """
mvn clean package
"""
}
}
stage ("推送social-admin") {
steps {
sshPublisher(publishers: [sshPublisherDesc(configName: 'localserver', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''cd ~/social
pwd
cp ./social-admin.jar /data/sh/social-admin-api/''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/social', remoteDirectorySDF: false, removePrefix: 'topfus-admin-api/target/', sourceFiles: '**/social-admin.jar')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
}
}
stage ("推送Dockerfile") {
steps {
sshPublisher(publishers: [sshPublisherDesc(configName: 'localserver', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''cd ~/social
cp ./Dockerfile /data/sh/social-admin-api/''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/social', remoteDirectorySDF: false, removePrefix: 'topfus-admin-api/', sourceFiles: './topfus-admin-api/Dockerfile')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
}
}
stage ("推送docker-compose.yaml") {
steps {
sshPublisher(publishers: [sshPublisherDesc(configName: 'localserver', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''cd ~/social
cp ./docker-compose.yaml /data/sh/
cd /data/sh/
docker-compose up -d --build''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/social', remoteDirectorySDF: false, removePrefix: '', sourceFiles: './docker-compose.yaml')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
}
}
}
}