九、流水线部署项目

发布时间 2023-05-25 20:42:20作者: shigp1

一、修改SSH Server配置


 
找到SSH server:
 

 
修改远程路径从/data改成/。我这里的my_server0是腾讯云主机。

二、配置流水线项目

还是使用原来的my_pipeline项目,进入my_pipeline的配置页面:
 

 
定义选择Pipeline script from SCM。并配置gitee仓库url和选择登录账号。

 

 
选择分支和Jenkinsfile路径。

三、编写Jenkinsfile


 
进入流水线语法并生成Jenkins命令:
 

 
配置SSH server:
 

 
命令如下:

cd /data
sudo docker stop my_test || true
sudo docker rm my_test || true
sudo docker rmi my_test || true
sudo docker build -t my_test  .
sudo docker run -d --name my_test -p 8500:8500 --privileged=true my_test:latest

生成流水线脚本:
 

 
这个脚本主要是将jar包通过SSH Server上传到服务器,并部署到Docker中。

在my_test项目的跟路径新建Jenkinsfile,并将上面的流水线脚本复制到下面的step中:

pipeline {
    agent any
    tools {
            maven 'my_maven'
    }
    stages {
        stage('Build') {
            steps {
                sh 'mvn -B -DskipTests clean package'
            }
        }

        stage("Deploy") {
            steps {
                    sshPublisher(publishers: [sshPublisherDesc(configName: 'my_server0', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''
                           cd /data
                           sudo docker stop my_test || true
                           sudo docker rm my_test || true
                           sudo docker rmi my_test || true
                           sudo docker build -t my_test  .
                           sudo docker run -d --name my_test -p 8500:8500 --privileged=true my_test:latest''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/data', remoteDirectorySDF: false, removePrefix: 'target/', sourceFiles: 'target/my-test-0.0.1-SNAPSHOT.jar')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])

            }
        }
    }
}

Deploy里面的steps就是上面生成的流水线脚本。并提交到git中。

 

构建流水线:
 

 

 
可以看到所有的stage,还有每个stage的执行时间。

 

查看日志:
 

 
从控制台中看到构建成功:
 

 
my_server0是腾讯云主机,可以登录到腾讯云主机并进入/data目录,运行ls可以看到my-test-0.0.1-SNAPSHOT.jar。