pipleline jenkins file dockerfile springboot

# docker方式部署
#!/usr/bin/env groovy
// 定义变量名
def registry = "192.168.58.14"
def docker_registry_auth = "harbor14key"

// 流水线脚本
pipeline {
    agent any
    stages {
        stage('拉取代码'){
            steps {
              git credentialsId:'4df6a08b-8e4a-4308-91ed-3acd90c1be31',url: 'git@192.168.58.13:java1/helloworld.git'
              echo '拉取成功'
            }
        }

        stage('代码编译'){    
           steps {
             sh """
                # 环境变量
                PATH=$PATH:/usr/lib/jvm/java-11-openjdk-11.0.18.0.10-1.el7_9.x86_64/bin
                JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.18.0.10-1.el7_9.x86_64/
                PATH=$PATH:/usr/local/apache-maven-3.5.4/bin
                
                # 代码编译
                mvn clean package -Dmaven.test.skip=true
                sleep 2
                """ 
           }
        }

        stage('构建镜像'){
           steps {
                withCredentials([usernamePassword(credentialsId: "${docker_registry_auth}", passwordVariable: 'password', usernameVariable: 'username')]) {
                sh '''#!/bin/bash
                        SERVER_NAME=helloworld
                        JAR_NAME=helloworld-1.0-SNAPSHOT
                        JENKINS_HOME=/var/lib/jenkins/workspace/helloworld
                        
                        # 等待三秒
                        echo sleep 3s
                        sleep 1
                        echo sleep 2s
                        sleep 1
                        echo sleep 1s
                        sleep 1
                              
                        echo "结束进程完成"
                        
                        # JENKINS_HOME
                        cd /var/lib/jenkins/workspace/helloworld/target
                        
                        # JENKINS_HOME
                        cp /var/lib/jenkins/workspace/helloworld/Dockerfile /var/lib/jenkins/workspace/helloworld/target
                        
                        # 修改文件权限  JAR_NAME
                        chmod 755 helloworld-1.0-SNAPSHOT.jar
                        
                        echo "看看docker能不能用"
                        docker -v
                        
                        echo "停止容器"
                        # 停止容器
                        docker stop helloworld
                        
                        echo "删除容器"
                        # 删除容器
                        docker rm helloworld
                        echo "删除镜像"
                        # 删除镜像
                        docker rmi helloworld
                        echo "打包镜像"
                        # 打包镜像
                        docker build -t helloworld -f Dockerfile .
                        docker tag helloworld 192.168.58.14/test/helloworld
                        echo "push image"
                        docker login 192.168.58.14 -u admin -p Harbor12345
                        docker push 192.168.58.14/test/helloworld
                        echo "运行镜像"
                        # 运行镜像
                        docker run -d -p 8090:8090 --name helloworld helloworld
                '''
                echo '运行成功'
                }
           } 
        }

        stage('部署到Docker'){
           steps {
                sshPublisher(publishers: [sshPublisherDesc(configName: 'node1', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''docker rm -f helloworld |true
                docker login 192.168.58.14 -u admin -p Harbor12345
                docker pull 192.168.58.14/test/helloworld
                docker run -d -p 8090:8090 --name helloworld 192.168.58.14/test/helloworld
                ''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
                 echo 'Credentials SUCCESS'
            }
        }
    }
}

dockerfile springboot

FROM openjdk:8-jdk-slim
COPY *.jar /app.jar
CMD ["--server.port=8090"]
EXPOSE 8090
ENTRYPOINT ["java", "-jar", "/app.jar"]

k8s 部署

#!/usr/bin/env groovy
// 定义变量名
def registry = "192.168.58.14"
def docker_registry_auth = "harbor14key"
 
// 流水线脚本
pipeline {
    agent any
    stages {
        stage('拉取代码'){
            steps {
              git credentialsId:'4df6a08b-8e4a-4308-91ed-3acd90c1be31',url: 'git@192.168.58.13:root/hesp.git'
              echo '拉取成功'
            }
        }
 
        stage('代码编译'){    
           steps {
             sh """
                # 环境变量
                PATH=$PATH:/usr/lib/jvm/java-11-openjdk-11.0.18.0.10-1.el7_9.x86_64/bin
                JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.18.0.10-1.el7_9.x86_64/
                PATH=$PATH:/usr/local/apache-maven-3.5.4/bin
                
                # 代码编译
                mvn clean package -Dmaven.test.skip=true
                sleep 2
                """ 
           }
        }
 
        stage('构建镜像'){
           steps {
                withCredentials([usernamePassword(credentialsId: "${docker_registry_auth}", passwordVariable: 'password', usernameVariable: 'username')]) {
                sh '''#!/bin/bash
                        SERVER_NAME=hesp
                        JAR_NAME=hesp-1.0-SNAPSHOT
                        JENKINS_HOME=/var/lib/jenkins/workspace/desk
                        
                        # 等待三秒
                        echo sleep 3s
                        sleep 1
                        echo sleep 2s
                        sleep 1
                        echo sleep 1s
                        sleep 1
                              
                        echo "结束进程完成"
                        
                        # JENKINS_HOME
                        cd /var/lib/jenkins/workspace/desk/target
                        
                        # JENKINS_HOME
                        cp /var/lib/jenkins/workspace/desk/Dockerfile /var/lib/jenkins/workspace/desk/target
                        
                        # 修改文件权限  JAR_NAME
                        chmod 755 hesp-1.0-SNAPSHOT.jar
                        
                        echo "看看docker能不能用"
                        docker -v
                        
                        echo "停止容器"
                        # 停止容器
                        docker stop hesp
                        
                        echo "删除容器"
                        # 删除容器
                        docker rm hesp
                        echo "删除镜像"
                        # 删除镜像
                        docker rmi hesp
                        echo "打包镜像"
                        # 打包镜像
                        docker build -t hesp -f Dockerfile .
                        docker tag hesp 192.168.58.14/test/hesp
                        echo "push image"
                        docker login 192.168.58.14 -u admin -p Harbor12345
                        docker push 192.168.58.14/test/hesp
                        echo "运行镜像"
                        # 清理镜像
                        docker rmi hesp
                        docker rmi 192.168.58.14/test/hesp
                '''
                echo '运行成功'
                }
           } 
        }
        
        stage('node2 pull image'){
           steps {
                sshPublisher(publishers: [sshPublisherDesc(configName: 'node2', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''docker rm -f helloworld |true
                docker login 192.168.58.14 -u admin -p Harbor12345
                docker pull 192.168.58.14/test/hesp
                ''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
                 echo 'Credentials SUCCESS'

            }
        }
        
        stage('部署到k8s'){
           steps {
                sshPublisher(publishers: [sshPublisherDesc(configName: 'node1', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''docker rm -f helloworld |true
                docker login 192.168.58.14 -u admin -p Harbor12345
                docker pull 192.168.58.14/test/hesp
                scp -r root@192.168.58.10:/var/lib/jenkins/workspace/desk/desk01.yaml /root
                cd /root
                kubectl delete -f desk01.yaml -n test
                kubectl apply -f desk01.yaml -n test
                ''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
                 echo 'Credentials SUCCESS'

            }
        }
    }
}
FROM openjdk:8-jdk-slim
COPY *.jar /app.jar
CMD ["--server.port=8189"]
EXPOSE 8189
ENTRYPOINT ["java", "-jar", "/app.jar"]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在引用\[1\]中,pipeline是指一种工作流,用于定义和管理机器学习的流程。在这个例子中,使用了Kubeflow Pipelines(kfp)库来创建一个名为"My pipeline"的pipeline,并定义了两个参数param_1和param_2,以及一个步骤my_step。\[1\] 在引用\[2\]中,提到了Debug调试查看管道内部元素的方法。可以通过获取Netty服务器程序的ChannelPipeline,并进行Debug调试来查看其中的元素结构。\[2\] 在引用\[3\]中,列举了一些与pipeline相关的组件和概念,包括Unsafe、head、inBound事件传播、tail、outBound事件传播和异常传播。这些都是与Netty中的pipeline相关的内容。\[3\] #### 引用[.reference_title] - *1* [pipelines sdk简介](https://blog.csdn.net/crazybean_lwb/article/details/109325975)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【Netty】Netty 核心组件 ( Pipeline | ChannelPipeline )](https://blog.csdn.net/han1202012/article/details/106597668)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Netty源码_04_Pipleline组件源码解析(二)](https://blog.csdn.net/qq_36963950/article/details/108203773)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值