1、JENKINS情况介绍
使用docker安装JENKINS,教程可以在网上搜到,步骤执行;
2、服务器情况介绍
JENKINS部署在A服务器上面,要把项目从gitlab上面拉取下来,然后编译推送jar到B服务器,然后通过docker-compose build framework(构建新镜像) 和 docker-compose up framework -d(启动项目执行)命令启动 ,此处要注意这些命令必须在docker文件下执行,然后在root等文件下执行,会报错
3、目前使用到命令
pipeline {
agent any
stages {
stage('拉取代码') {
agent none
steps {
git credentialsId: 'gitlab_xblict', url: 'XXX.git',branch: 'master'
}
}
stage('编译 & 打包') {
agent none
steps {
sh 'cd ./framework-service'
sh 'cd ./framework-service; mvn -Dmaven.test.skip=true -gs `pwd`/settings.xml clean package'
sh 'echo 正在构建 '
}
}
stage('推送 & 构建 & 部署') {
agent none
steps {
sshPublisher(publishers: [sshPublisherDesc(configName: '10.XX.126.XX', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''cd /root/docker-compose-rational-agriculture
pwd
docker-compose build framework
docker-compose up framework -d''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/', remoteDirectorySDF: false, removePrefix: 'framework-service/framework-module-system/framework-system-start/target/', sourceFiles: 'framework-service/framework-module-system/framework-system-start/target/framework-system-start-1.0.0.jar ')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: true)])
}
}
}
environment {
DOCKER_CREDENTIAL_ID = ''
GITEE_CREDENTIAL_ID = ''
KUBECONFIG_CREDENTIAL_ID = ''
REGISTRY = 'XXX.XX.XX.Xx:8000'
BRANCH_NAME = 'master'
}
}
4、执行步骤
1、拉取代码-这个不是我做的,没有对应的问题
2、编译 & 打包
此处可能存在的问题, sh 'cd ./framework-service; mvn -Dmaven.test.skip=true -gs `pwd`/settings.xml clean package' 需要放在一行执行,因为settings.xml文件有可能路径不正确,我这个项目就是下面还多了一个路径,导致出现mvn不能执行。
3、推送到远程服务器比较复杂(个人理解)
a、第一次尝试,SSH的方式链接到远程服务器,自己在服务器链接,具体操作步骤自己搜索,记住要在JENKINS镜像里面操作,然后输入命令 sh 'scp /var/jenkins_home/workspace/rational-agriculture-server/framework-service/framework-module-system/framework-system-start/target/framework-system-start-1.0.0.jar root@10.XX.126.XX:/root/docker-compose-rational-agriculture/ra-system/' ,是可以把jar复制到B服务器上,但是不能执行docker-compose build framework和docker-compose up framework -d 这两个命令,找了好长时间也没找到,理解的还是不够深入
b、第二次尝试,通过sshPublisher: Send build artifacts over SSH这种方式执行的,执行步骤如下:
先配置Dashboard-系统配置,里面找到 Publish over SSH ,如果没有找到,需要在插件里面安装一下,请自行百度,然后在服务器执行远程链接命令,这边生成的key用的是id_rsa里面的值,注意这边要用ssh-keygen -m PEM -t rsa -b 4096 命令来生成密钥,然后在做其他操作。不然会出现jenkins.plugins.publish_over.BapPublisherException: Failed to add SSH key. Message [invalid privatekey: [B@ba77e81]] 的错误信息
Path to key和key的值随便写一个,然后下面的值填写好,Remote Directory一般写根路径比较好。然后点Test Configuration,出现success,就表示链接成功了。
然后配置流水线命令
选择流水线语法 ,配置信息
点击生成流水线脚本,复制到流水线里面执行。如果出现SSH: Transferred 0 file(s)的情况,可能是路径没有配置正确,
参考博客(这个里面更详细,我这篇只是记录一下):Publish Over SSH插件的使用(jenkins远程服务器发送文件)_Koma-forever的博客-CSDN博客