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"'
                }         
            }         
        }
    }
    
  • 相关阅读:
    Android 定制RadioButton样式
    TabActivity的不同实现
    android源码的目录
    让我们一起来做最漂亮的Android界面
    【Android布局】在程序中设置android:gravity 和 android:layout_Gravity属性
    iPhone iPad 各种控件默认高度
    互联网的的一些历史资料收集
    Android vs iPhone icon设计指南
    android获取手机cpu是单核还是多核的方法
    前端必读:浏览器内部工作原理
  • 原文地址:https://www.cnblogs.com/alaska/p/13604774.html
Copyright © 2011-2022 走看看