zoukankan      html  css  js  c++  java
  • [代码上线]-jenkins部署docker容器

    第1章 pipeline写法

    pipeline{ 
        agent any 
    
        parameters {
            gitParameter name: 'git_version', 
                         branchFilter: 'origin/(.*)',
                         type: 'PT_TAG',
                         defaultValue: 'v1.0',
                         description: '发布新版本'
            choice(name: 'base_image', choices: ['nginx:1.16','nginx:1.17'],description: '请选择基础镜像版本')
            choice(name: 'deploy_env', choices: ['deploy','rollback'],description: 'deploy: 发布版本
    rollback: 回滚版本')               
                 
        }
    
        stages{
            stage("下载代码"){ 
                steps{
                    checkout([$class: 'GitSCM', 
                                       branches: [[name: '*/master']], 
                                       doGenerateSubmoduleConfigurations: false, 
                                       extensions: [[$class: 'RelativeTargetDirectory', 
                                       relativeTargetDir: 'game']], 
                                       submoduleCfg: [], 
                                       userRemoteConfigs: [[credentialsId: 'b8c1f793-47ed-4903-995d-2273673d8f87', 
                                       url: 'git@10.0.0.200:dev/docker-pipeline.git']]])
                }
            } 
    
            stage("编译镜像"){
                when {
                    environment name: 'deploy_env', value: 'deploy'
                }
                steps{
                    writeFile file: "Dockerfile", text: """FROM 10.0.0.205/base_image/${params.base_image}
    ADD game /usr/share/nginx/html/"""
                    sh "docker build -t 10.0.0.205/image/game:${params.git_version} . && docker push 10.0.0.205/image/game:${params.git_version}"               
                } 
            }
    
            stage("推送镜像"){
                when {
                    environment name: 'deploy_env', value: 'deploy'
                }
                steps{
                    sh "docker build -t 10.0.0.205/image/game:${params.git_version} . && docker push 10.0.0.205/image/game:${params.git_version}"               
                }         
            }
    
            stage("部署容器"){
                when {
                    environment name: 'deploy_env', value: 'deploy'
                }         
                steps{
                    sh 'ssh 10.0.0.204 "docker stop game && docker rm game && docker run --name game -p 80:80 -d 10.0.0.205/image/game:${git_version} && docker ps"'
                }
            } 
    
            stage("清理构建镜像"){
                when {
                    environment name: 'deploy_env', value: 'deploy'
                }        
                steps{
                    sh "docker rmi 10.0.0.205/image/game:${params.git_version}"
                }
            }
    
            stage("回滚容器"){
                when {
                    environment name: 'deploy_env', value: 'rollback'
                }
    
                steps{
                    sh 'ssh 10.0.0.204 "docker stop game && docker rm game && docker run --name game -p 80:80 -d 10.0.0.205/image/game:${git_version} && docker ps"'
                }         
            }         
        }
    }
    
  • 相关阅读:
    6.24Java网络编程之IP
    Network
    Network
    Network
    Network
    ES
    JavaWeb
    ES
    ES
    ES
  • 原文地址:https://www.cnblogs.com/alaska/p/13604774.html
Copyright © 2011-2022 走看看