持续集成交付CICD:Jenkins流水线实现Nexus制品晋级策略

这篇具有很好参考价值的文章主要介绍了持续集成交付CICD:Jenkins流水线实现Nexus制品晋级策略。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、理论

1.开发测试运维环境

二、实验

1.Nexus制品晋级策略


一、理论

1.开发测试运维环境

(1)开发测试运维环境

1)持续集成开发环境(DEV: Development Environment)
直接通过源代码编译打包,其会跑单元测试,服务API自动化测试,服务UI自动化测试

2)测试环境(Test: Test Environment)
部署带版本的组件,服务API自动化测试,服务UI自动化测试

3)系统集成环境(SIT, System Integration Test Environment)
部署带版本的组件,服务API自动化测试,服务UI自动化测试,多系统集成API测试,多系统集成UI自动化测试。

4)用户可接受性测试环境(UAT, User acceptance Test Environment)
部署带版本的组件,此环境主要用来进行软件产品的验收,用户(客户方)会直接参与,用户根据需求功能文档进行验收,当然在用户验收前可以可以跑API自动化测试和UI自动化测试。此外根据客户项目合同要求,可能需要出具可接受性测试报告:包括但不限于,功能性测试报告,安全测试报告,性能测试报告等

5)预生产环境(STAGING, Staging Environment)
部署带版本的组件,一般在直接上生产环境之前,会进行一些基本健康测试[自动或者手工],有的时候还会进行模拟生产环境的真实数据进行Dry Run,其Dry Run很多时候都是在正常生产环境的配置和网络条件下进行的,Dry Run之后,没有问题了,就会把预生产环境切换回来,或者直接上生产环境; 从预生产环境集群切换到生产环境集群的方法有: 蓝绿部署,A/B测试,金丝雀部署【灰度发布】等方法。

6)生产环境(Prod: Production Environment)
部署带版本的组件,正式生产环境。

7)灾备环境(DR: Disaster Recovery Environment)
部署带版本的组件,对于一些服务可用性,可连续性有特别要求,比如关系到国计民生的系统,需要进行灾备。

持续集成交付CICD:Jenkins流水线实现Nexus制品晋级策略,持续集成交付CICD,ci/cd,运维,运维开发

二、实验

1.Nexus制品晋级策略

(1)环境

表1 主机

主机 架构 版本 IP 备注
jenkins

jenkins主节点      

2.414.2 192.168.204.15:8080

 gitlab runner

(从节点)

gitlab

gitlab 主节点       

12.10.14 192.168.204.8:82

  jenkins slave

(从节点)

tomcat nexus 3.63 192.168.204.13:8081

(2)策略

dev > uat
uat > stag
stag > prod

(3)新建流水线

持续集成交付CICD:Jenkins流水线实现Nexus制品晋级策略,持续集成交付CICD,ci/cd,运维,运维开发

(4)添加参数

持续集成交付CICD:Jenkins流水线实现Nexus制品晋级策略,持续集成交付CICD,ci/cd,运维,运维开发

持续集成交付CICD:Jenkins流水线实现Nexus制品晋级策略,持续集成交付CICD,ci/cd,运维,运维开发

(5)查看效果

持续集成交付CICD:Jenkins流水线实现Nexus制品晋级策略,持续集成交付CICD,ci/cd,运维,运维开发

(6)选择raw(hosted)仓库

持续集成交付CICD:Jenkins流水线实现Nexus制品晋级策略,持续集成交付CICD,ci/cd,运维,运维开发

(7)创建

持续集成交付CICD:Jenkins流水线实现Nexus制品晋级策略,持续集成交付CICD,ci/cd,运维,运维开发持续集成交付CICD:Jenkins流水线实现Nexus制品晋级策略,持续集成交付CICD,ci/cd,运维,运维开发持续集成交付CICD:Jenkins流水线实现Nexus制品晋级策略,持续集成交付CICD,ci/cd,运维,运维开发

(8)完成创建

持续集成交付CICD:Jenkins流水线实现Nexus制品晋级策略,持续集成交付CICD,ci/cd,运维,运维开发

(9)修改流水线代码

currentBuild.description = "trigger by ${params.updatePolicy}"
pipeline {
    agent {
        label "build"
    }
    stages {
        stage("PullArtifact") {
            steps {
                script {
                    env.version = "${params.artifactUrl}".split('/')[-2]
                    env.appName = "${params.artifactUrl}".split('/')[-3]
                    env.buName = "${params.artifactUrl}".split('/')[-4]
                    env.pkgName = "${params.artifactUrl}".split('/')[-1]
                    sh """
                        curl ${params.artifactUrl} -o ${env.pkgName} -u admin:Admin123
                         """
                }
            }
        }
        stage("UpdateArtifact") {
            steps {
                script {
                    switch ("${params.updatePolicy}") {
                        case "dev>uat":
                            repoName = "david-uat"
                            targetDir = "${env.buName}/${env.appName}/${env.version}/"
                            PushRawArtifacts(repoName, targetDir, "./", "${env.pkgName}")
                            break;
                        case "uat>stag":
                            repoName = "david-stag"
                            targetDir = "${env.buName}/${env.appName}/${env.version}/"
                            PushRawArtifacts(repoName, targetDir, "./", "${env.pkgName}")
                            break;
                        case "stag>prod":
                            repoName = "david-prod"
                            targetDir = "${env.buName}/${env.appName}/${env.version}/"
                            PushRawArtifacts(repoName, targetDir, "./", "${env.pkgName}")
                            break;
                        default:
                            println("xxxxxxxxx")
                    }
                }
            }
        }
    }
}

//上传制品
    def PushRawArtifacts(repoName,targetDir, filePath, pkgName ){
        withCredentials([usernamePassword(credentialsId: '318df1ad-083b-4158-ac88-2f584446563e', passwordVariable: 'TOKEN', usernameVariable: 'USER')]) {
            sh """
            curl -X POST "http://192.168.204.13:8081/service/rest/v1/components?repository=${repoName}" \
            -H "accept: application/json" \
            -H "Content-Type: multipart/form-data" \
            -F "raw.directory=${targetDir}" \
            -F "raw.asset1=@${filePath}/${pkgName};type=application/java-archive" \
            -F "raw.asset1.filename=${pkgName}" \
            -u "${USER}":"${TOKEN}"
        """
        }
    }

持续集成交付CICD:Jenkins流水线实现Nexus制品晋级策略,持续集成交付CICD,ci/cd,运维,运维开发

(10)开始构建(dev>uat)

持续集成交付CICD:Jenkins流水线实现Nexus制品晋级策略,持续集成交付CICD,ci/cd,运维,运维开发

(11)查看日志持续集成交付CICD:Jenkins流水线实现Nexus制品晋级策略,持续集成交付CICD,ci/cd,运维,运维开发

(12)查看Nexus

持续集成交付CICD:Jenkins流水线实现Nexus制品晋级策略,持续集成交付CICD,ci/cd,运维,运维开发

(13)开始构建(uat>stag)

持续集成交付CICD:Jenkins流水线实现Nexus制品晋级策略,持续集成交付CICD,ci/cd,运维,运维开发

(14)查看日志

持续集成交付CICD:Jenkins流水线实现Nexus制品晋级策略,持续集成交付CICD,ci/cd,运维,运维开发

(15)Nexus查看

持续集成交付CICD:Jenkins流水线实现Nexus制品晋级策略,持续集成交付CICD,ci/cd,运维,运维开发

(16)开始构建(stag>prod)

持续集成交付CICD:Jenkins流水线实现Nexus制品晋级策略,持续集成交付CICD,ci/cd,运维,运维开发

(17) 查看日志

持续集成交付CICD:Jenkins流水线实现Nexus制品晋级策略,持续集成交付CICD,ci/cd,运维,运维开发

(18)Nexus查看

持续集成交付CICD:Jenkins流水线实现Nexus制品晋级策略,持续集成交付CICD,ci/cd,运维,运维开发文章来源地址https://www.toymoban.com/news/detail-759190.html

到了这里,关于持续集成交付CICD:Jenkins流水线实现Nexus制品晋级策略的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 实战:Docker+Jenkins+Gitee构建CICD流水线

    实战:Docker+Jenkins+Gitee构建CICD流水线

    持续集成和持续交付一直是当下流行的开发运维方式,CICD省去了大量的运维时间,也能够提高开发者代码集成规范。开发者在开发完需求功能后可以直接提交到gitee,然后jenkins直接进行代码编译和一体化流水线部署。通过流水线部署可以极大的提高devops效率,也是企业信息自

    2024年02月14日
    浏览(14)
  • CI-持续集成 — 软件工业“流水线”技术实现

    CI-持续集成 — 软件工业“流水线”技术实现

    持续集成(Continuous Integration)是一种软件开发实践。在本系列文章的前一章节已经对其背景及理论体系进行了介绍。本小节则承接前面提出的理论构想进行具体的技术实现。 《Google软件测试之道》: \\\"每天,Google都要测试和发布数百万个源文件,亿万行代码。数以亿计的构建

    2024年02月12日
    浏览(17)
  • Docker+Jenkins(blueocean)+Gitee构建CICD流水线实战

    vim /etc/profile export JAVA_HOME=/home/jdk/jdk1.8.0_301 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin source /etc/profile vim /etc/profile export MAVEN_HOME=/home/maven/apache-maven-3.8.6 export PATH=$PATH:$MAVEN_HOME/bin source /etc/profile docker pull jenkinsci/blue

    2024年02月11日
    浏览(18)
  • Jenkins流水线整合k8s实现代码自动集成和部署

    Jenkins流水线整合k8s实现代码自动集成和部署

    1、安装好k8s集群 这里先要搭建好一个K8s集群,笔者这边就采用使用了一个一主一丛的k8s集群,k8s集群的版本使用1.19.5版本,服务器的配置:2核4G,操作系统: CentOS Linux release 7.9.2009 (Core) 主机名         ip k8smaster 192.168.19.8 k8sworker         192.168.19.9 具体的安装步骤可以

    2024年02月05日
    浏览(35)
  • 持续集成流水线:如何通过自动化解放你的双手?

    持续集成流水线:如何通过自动化解放你的双手?

    你好,我是黄俊彬。 在过去的很多咨询项目中,我遇到了很多团队都没有很好运用持续集成流水线的实践。从团队协作的角度上来看,在版本发布过程中,经常出现测试依赖开发手工生成制品、版本发布也从开发本地出版本的问题。 而且项目架构如果从单体演进至组件化架

    2023年04月10日
    浏览(11)
  • 持续集成交付CICD:Jenkins Pipeline与远程构建触发器

    持续集成交付CICD:Jenkins Pipeline与远程构建触发器

    目录 一、实验 1.Jenkins Pipeline本地构建触发器 2.Jenkins Pipeline与远程构建触发器(第一种方式) 3.Jenkins Pipeline与远程构建触发器(第二种方式) 4.Jenkins Pipeline与远程构建触发器(第三种方式) 二、问题 1.pipeline插件依赖安装报错 2.控制台输出环境变量名冲突 3.并行构建job存在

    2024年02月03日
    浏览(15)
  • Azure DevOps构建CICD流水线

    Azure DevOps构建CICD流水线

    Azure AKS Azure CR Azure DevOps .NET Core示例 Dockerfile deploy.yaml Java示例 Dockerfile deploy.yaml 注册Azure AD应用 打开Azure portal,导航到Azure AD 选择应用注册,点击新注册 输入应用名称,点击注册 创建客户端密码 分配应用订阅的参与者角色 导航到订阅,选择Access control(IAM),点击添加按钮,

    2024年02月09日
    浏览(18)
  • jenkins流水线实现xjar加固

    jenkins流水线实现xjar加固

    xjar的定义 功能特性 xjar使用 修改项目中的pom.xml,一般都是开发改 jenkins流水线配置 查看jenkins工作目录 远端服务器配置–☞需要授权的服务器 获取授权服务器信息 执行脚本 脚本内容, 1.判断镜像是否存在 2.把xjar.go解压,需要有go环境 3.制作镜像,然后把镜像制作成tar包

    2024年02月07日
    浏览(13)
  • PingCode DevOps 团队:企业CICD流水线可能会遇到的问题及解法

    CICD 流水线是指一系列自动化的构建、测试和部署步骤,用于将应用程序从开发到生产环境的过程。在 CICD 流水线中,每个步骤都是自动化的,并且在完成后会触发下一个步骤的执行。 CICD 流水线可以帮助团队更快地交付产品,减少手动错误,并提高软件质量。通过自动化构

    2024年02月10日
    浏览(11)
  • 使用 Jenkins、Gitlab、Harbor、Helm、k8s 来实现流水线作业

    使用 Jenkins、Gitlab、Harbor、Helm、k8s 来实现流水线作业

    使用 Jenkins、Gitlab、Harbor、Helm、Kubernetes 来实现一个完整的持续集成和持续部署的流水线作业 开发人员提交代码到 Gitlab 代码仓库 通过 Gitlab 配置的 Jenkins Webhook 触发 Pipeline 自动构建 Jenkins 触发构建构建任务,根据 Pipeline 脚本定义分步骤构建 先进行代码静态分析,单元测试

    2024年04月27日
    浏览(17)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包