IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 微服务Devops方案 -> 正文阅读

[系统运维]微服务Devops方案

1.gitlab推送事件webhook触发jenkins流水线

2.maven插件jib-maven-plugin直接构建docker镜像

?

?

def projectNameChoose = []
def projectEnvironmentStr = "开发环境"
def projectNameChooseStr = []
def projectEnvironment = "dev"

pipeline {
  agent any
  options {
    buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '3'))
  }
  stages {
    stage("EnvPrepare") {
        steps {
            script{
                timeout(time: 600, unit: 'SECONDS') {
                    try{
                        projectEnvironmentStr = input message: '请选择部署环境', ok: '执行',
                        parameters: [
                            choice(
                                name: 'projectEnvironmentStr',
                                choices: ['开发环境', '生产环境', '测试环境'], description: '请选择部署环境'
                            )
                        ]
                        switch("${projectEnvironmentStr}"){
                            case '开发环境':
                                projectEnvironment="dev"
                                break;
                            case '生产环境':
                                projectEnvironment="prod"
                                break;
                            case '测试环境':
                                projectEnvironment="test"
                                break;
                            default:
                                println('error env')
                        }
                    } catch(err) {
                        println("未选择")
                    }
                }
            }
        }
    }
    stage("ModuleSelect") {
        steps {
            script{
                timeout(time: 600, unit: 'SECONDS') {
                    try{
                        projectNameChooseStr = input message: '请选择部署模块', ok: '执行',
                        parameters: [
                            booleanParam(defaultValue: false, name: 'gscmService'),
                            booleanParam(defaultValue: false, name: 'baan10Service'),
                            booleanParam(defaultValue: false, name: 'baan11Service'),
                            booleanParam(defaultValue: false, name: 'baan16Service'),
                            booleanParam(defaultValue: false, name: 'baan53Service'),
                            booleanParam(defaultValue: false, name: 'baan166Service'),
                            booleanParam(defaultValue: false, name: 'baan197Service'),
                            booleanParam(defaultValue: false, name: 'baan200Service'),
                            booleanParam(defaultValue: false, name: 'scm-auth2'),
                            booleanParam(defaultValue: false, name: 'cronService'),
                            booleanParam(defaultValue: false, name: 'scm-gateway'),
                            booleanParam(defaultValue: false, name: 'scm-mqService'),
                            booleanParam(defaultValue: false, name: 'scm-tx-manager'),
                            booleanParam(defaultValue: false, name: 'plmService'),
                            booleanParam(defaultValue: false, name: 'contService'),
                            booleanParam(defaultValue: false, name: 'evalService'),
                            booleanParam(defaultValue: false, name: 'kbiService'),
                            booleanParam(defaultValue: false, name: 'greeproService'),
                            booleanParam(defaultValue: false, name: 'stsService'),
                            booleanParam(defaultValue: false, name: 'scm-flowable')
                        ]
                    } catch(err) {
                        projectNameChoose = [
                            "gscmService",
                            "plmService","contService","evalService","kbiService","greeproService","stsService",
                            "baan10Service","baan11Service","baan16Service","baan53Service","baan166Service","baan197Service","baan200Service",
                            "scm-auth2","scm-flowable","cronService","scm-gateway","scm-mqService","scm-tx-manager"
                        ];
                        println("未选择")
                    }
                }
                for (projectName in projectNameChooseStr) {
                   def name = projectName.toString()
                   if(name.split("=")[1] == "true"){
                        projectNameChoose.add(name.split("=")[0])
                   }
                }
            }
        }
    }
    stage('Build') {
          steps {
                sh "mvn clean package jib:dockerBuild -Dmaven.test.skip=false -P${projectEnvironment}"
          }
    }
    stage('Deploy') {
        steps {
            script {
                for(int i=0;i<projectNameChoose.size();i++){
                   def modulename = projectNameChoose.get(i);
                   withDockerRegistry(registry: [credentialsId: '180686-Harbor', url: 'https://Dimage.gree.com']) {
                        def docker_img_name="${modulename}".toLowerCase()
                        sh "sudo docker tag Dimage.gree.com/scm/microservice/${docker_img_name}:1.0-SNAPSHOT Dimage.gree.com/scm/microservice/${docker_img_name}_${projectEnvironment}:v${BUILD_NUMBER}"
                        sh "sudo docker push Dimage.gree.com/scm/microservice/${docker_img_name}_${projectEnvironment}:v${BUILD_NUMBER}"
                        sh "sudo docker tag Dimage.gree.com/scm/microservice/${docker_img_name}_${projectEnvironment}:v${BUILD_NUMBER} Dimage.gree.com/scm/microservice/${docker_img_name}_${projectEnvironment}:latest"
                        sh "sudo docker push Dimage.gree.com/scm/microservice/${docker_img_name}_${projectEnvironment}:latest"
                   }
                }
            }
        }
    }
  }
}

注:jenkins的Extended Choice Parameter插件无法使用与blueocean,要使用原来的Parameter的Boolean?Parameter来实现多选框选择

<plugin>
                    <groupId>com.google.cloud.tools</groupId>
                    <artifactId>jib-maven-plugin</artifactId>
                    <version>2.2.0</version>
                    <configuration>
                        <skip>${jib.skip}</skip>
                        <from>
                            <image>Dimage.gree.com/scm/openjdk:8-alpine</image>
                            <auth>
                                <username>username</username>
                                <password>password</password>
                            </auth>
                        </from>
                        <to>
                            <image>Dimage.gree.com/scm/microservice/${jib.repository.name}:${project.version}</image>
                        </to>
                        <allowInsecureRegistries>true</allowInsecureRegistries>
                        <container>
                            <labels>
                                <label>
                                    org.opencontainers.image.authors="11252536969@qq.com"
                                </label>
                            </labels>
                            <mainClass>${jib.main.class}</mainClass>
                            <creationTime>USE_CURRENT_TIMESTAMP</creationTime>
                        </container>
                    </configuration>
                </plugin>

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-09-08 11:09:04  更:2021-09-08 11:09:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 14:42:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码