持续集成交付CICD:基于 GitLabCI 与 JenkinsCD 实现后端项目发布

目录

一、实验

1. GitLabCI环境设置

2.优化GitLabCI共享库代码

3.JenkinsCD 发布后端项目

4.再次优化GitLabCI共享库代码

5.JenkinsCD 再次发布后端项目


一、实验

1. GitLabCI环境设置

(1)GitLab给后端项目添加CI配置路径

(2)项目添加runnner

(3)修改项目本地CI文件,避免运行远程流水线报错

(4)分支RELEASE-1.1.1 添加到受保护分支

(5)修改共享库代码

修改CI.yaml

.pipelineInit:tags:- buildstage: .prevariables:GIT_CHECKOUT: "true"script:- ls -l.cibuild:tags:- buildstage: buildscript:- echo "${BUILD_SHELL}"- ${BUILD_SHELL}artifacts:paths:- ${ARTIFACT_PATH}.citest:tags:- buildstage: testscript:- echo "${TEST_SHELL}"- ${TEST_SHELL}# artifacts:# reports:#   - junit: ${TEST_REPORTS}.sonarscan:tags: - buildstage: sonarscanscript: |-sonar-scanner -Dsonar.host.url=http://192.168.204.8:9000 \-Dsonar.projectKey=${CI_PROJECT_NAME}\-Dsonar.projectName=${CI_PROJECT_NAME} \-Dsonar.projectVersion=${CI_COMMIT_SHA} \-Dsonar.login=${SONAR_AUTH_TOKEN} \-Dsonar.ws.timeout=30 \-Dsonar.projectDescription=${CI_PROJECT_TITLE} \-Dsonar.links.homepage=${CI_PROJECT_URL} \-Dsonar.links.ci=${CI_PIPELINE_URL} \-Dsonar.sources=src \-Dsonar.sourceEncoding=UTF-8 \-Dsonar.java.binaries=target/classes \-Dsonar.java.test.binaries=target/test-classes \-Dsonar.java.surefire.report=target/surefire-reports \-Dsonar.core.codeCoveragePlugin=jacoco \-Dsonar.jacoco.reportPaths=target/jacoco.exec.pushartifact:tags:- buildstage: pushartifactscript:|-if [[ ${PROJECT_TYPE} == "java" ]];thenpkgName=`ls target/ | grep -e "^maven.*jar$"`cd target/mv ${pkgName} ${CI_PROJECT_NAME}-${CI_COMMIT_SHA}.jarcurl -X POST "http://192.168.204.13:8081/service/rest/v1/components?repository=${CI_PROJECT_NAMESPACE}" \-H "accept: application/json" \-H "Content-Type: multipart/form-data" \-F "raw.directory=/${CI_PROJECT_NAMPESPACE}/${CI_PROJECT_NAME}/${{CI_COMMIT_SHA}}/" \-F "raw.asset1=@${CI_PROJECT_NAME}-${VERSION}.jar;type=application/java-archive" \-F "raw.asset1.filename=${CI_PROJECT_NAME}-${{CI_COMMIT_SHA}}.jar" -u admin:Admin123elseecho "PROJECT_TYPE ERROR [java]"fi

修改Nexus仓库地址。

修改前:

修改后:

(6)手动运行Pipeline

(7) 成功

(8)Nexus查看制品(存在目录不统一问题)

2.优化GitLabCI共享库代码

(1) 修改CI.yaml

.pipelineInit:tags:- buildstage: .prevariables:GIT_CHECKOUT: "true"script:- ls -l.cibuild:tags:- buildstage: buildscript:- echo "${BUILD_SHELL}"- ${BUILD_SHELL}artifacts:paths:- ${ARTIFACT_PATH}.citest:tags:- buildstage: testscript:- echo "${TEST_SHELL}"- ${TEST_SHELL}# artifacts:# reports:#   - junit: ${TEST_REPORTS}.sonarscan:tags: - buildstage: sonarscanscript: |-sonar-scanner -Dsonar.host.url=http://192.168.204.8:9000 \-Dsonar.projectKey=${CI_PROJECT_NAME}\-Dsonar.projectName=${CI_PROJECT_NAME} \-Dsonar.projectVersion=${CI_COMMIT_SHA} \-Dsonar.login=${SONAR_AUTH_TOKEN} \-Dsonar.ws.timeout=30 \-Dsonar.projectDescription=${CI_PROJECT_TITLE} \-Dsonar.links.homepage=${CI_PROJECT_URL} \-Dsonar.links.ci=${CI_PIPELINE_URL} \-Dsonar.sources=src \-Dsonar.sourceEncoding=UTF-8 \-Dsonar.java.binaries=target/classes \-Dsonar.java.test.binaries=target/test-classes \-Dsonar.java.surefire.report=target/surefire-reports \-Dsonar.core.codeCoveragePlugin=jacoco \-Dsonar.jacoco.reportPaths=target/jacoco.exec.pushartifact:tags:- buildstage: pushartifactscript:|-if [[ ${PROJECT_TYPE} == "java" ]];thenpkgName=`ls target/ | grep -e "^maven.*jar$"`cd target/mv ${pkgName} ${CI_PROJECT_NAME}-${CI_COMMIT_SHA}.jarcurl -X POST "http://192.168.204.13:8081/service/rest/v1/components?repository=${CI_PROJECT_NAMESPACE}" \-H "accept: application/json" \-H "Content-Type: multipart/form-data" \-F "raw.directory=/${CI_PROJECT_NAME}/${{CI_COMMIT_SHA}}/" \-F "raw.asset1=@${CI_PROJECT_NAME}-${VERSION}.jar;type=application/java-archive" \-F "raw.asset1.filename=${CI_PROJECT_NAME}-${{CI_COMMIT_SHA}}.jar" -u admin:Admin123elseecho "PROJECT_TYPE ERROR [java]"fi

修改Nexus上传目录。

修改前:

修改后:

(2)手动运行Pipeline

(3)成功

(4)Nexus查看制品(存在版本号不统一问题)

3.JenkinsCD 发布后端项目

(1)查看ansible被控端状态

(2)拿到上一次GitLabCI上传到Nexus的版本号,在Jenkins上手动构建流水线

(3)Blue Ocean查看

4.再次优化GitLabCI共享库代码

(1 )修改CI.yaml

.pipelineInit:tags:- buildstage: .prevariables:GIT_CHECKOUT: "true"script:- ls -l.cibuild:tags:- buildstage: buildscript:- echo "${BUILD_SHELL}"- ${BUILD_SHELL}artifacts:paths:- ${ARTIFACT_PATH}.citest:tags:- buildstage: testscript:- echo "${TEST_SHELL}"- ${TEST_SHELL}# artifacts:# reports:#   - junit: ${TEST_REPORTS}.sonarscan:tags: - buildstage: sonarscanscript: |-sonar-scanner -Dsonar.host.url=http://192.168.204.8:9000 \-Dsonar.projectKey=${CI_PROJECT_NAME}\-Dsonar.projectName=${CI_PROJECT_NAME} \-Dsonar.projectVersion=${CI_COMMIT_SHA} \-Dsonar.login=${SONAR_AUTH_TOKEN} \-Dsonar.ws.timeout=30 \-Dsonar.projectDescription=${CI_PROJECT_TITLE} \-Dsonar.links.homepage=${CI_PROJECT_URL} \-Dsonar.links.ci=${CI_PIPELINE_URL} \-Dsonar.sources=src \-Dsonar.sourceEncoding=UTF-8 \-Dsonar.java.binaries=target/classes \-Dsonar.java.test.binaries=target/test-classes \-Dsonar.java.surefire.report=target/surefire-reports \-Dsonar.core.codeCoveragePlugin=jacoco \-Dsonar.jacoco.reportPaths=target/jacoco.exec.pushartifact:tags:- buildstage: pushartifactscript:|-if [[ ${PROJECT_TYPE} == "java" ]];thenVERSION=`echo ${CI_COMMIT_BRANCH} | sed 's/RELEASE-//g'`pkgName=`ls target/ | grep -e "^maven.*jar$"`cd target/mv ${pkgName} ${CI_PROJECT_NAME}-${VERSION}.jarcurl -X POST "http://192.168.204.13:8081/service/rest/v1/components?repository=${CI_PROJECT_NAMESPACE}" \-H "accept: application/json" \-H "Content-Type: multipart/form-data" \-F "raw.directory=/${CI_PROJECT_NAME}/${VERSION}/" \-F "raw.asset1=@${CI_PROJECT_NAME}-${VERSION}.jar;type=application/java-archive" \-F "raw.asset1.filename=${CI_PROJECT_NAME}-${VERSION}.jar" -u admin:Admin123elseecho "PROJECT_TYPE ERROR [java]"fi

修改分支变量。

修改前:

修改后:

(2)Nexus删除后端项目1.1.1分支的制品

已删除

(3)GitLab手动运行Pipeline

(4) 成功

(5)Nexus查看制品

5.JenkinsCD 再次发布后端项目

(1)Jenkins上手动构建流水线

(2)Blue Ocean 查看

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/285811.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ElementUI,修改el-cascader的默认样式

Element UI 中的下拉弹窗是通过在整个body标签末尾动态添加div实现的,所以修改样式时,必须要定义全局样式才能实现样式覆盖,那怎样才能避免全局的样式污染呢? 解决办法:通过给组件添加自定义的 popper-class 属性来避…

Mysql查询使用group_concat函数后,如果查询无结果,仍会返回一条空数据

1、在查询中使用了group_concat 函数,简单例子如下: select GROUP_CONCAT(recordid) from s_au_user where username 121212此sql查询一个username 为121212的数据,当然肯定是查询不到的,理论上应该返回0条结果,但是…

(c语言)字符逆序——非递归

#include<stdio.h> #include<string.h> int main(int argc, char* argv[]) {char a[10000];char b[10000];gets(a);int i, c;c (int)strlen(a);for (i 0; i < c; i){b[i] a[c-i-1]; //将\0之前的元素赋值给b[]}b[c] \0; //之后在所有元素后加上\0,将…

vue看板使用电子数字

1、下载字体 https://www.dafont.com/theme.php?cat302&text0123456789 2、下载后将压缩包解压,并上传到https://link.csdn.net/?targethttps%3A%2F%2Fwww.fontsquirrel.com%2Ftools%2Fwebfont-generator 然后下载 3、项目中使用 在Vue项目中的assets中新建fonts文件夹…

OpenAI公布ChatGPT安全框架

12月19日&#xff0c;OpenAI在官网公布了“准备框架”&#xff08;Preparedness Framework&#xff09;测试版。该文档详细介绍了OpenAI是如何保证ChatGPT等产品的安全防护措施、开发和部署流程。 OpenAI表示&#xff0c;随着大模型的功能迭代不断完善&#xff0c;其能力已经开…

大创项目推荐 深度学习 opencv python 公式识别(图像识别 机器视觉)

文章目录 0 前言1 课题说明2 效果展示3 具体实现4 关键代码实现5 算法综合效果6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于深度学习的数学公式识别算法实现 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学…

文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《基于动态哈夫模型及双边匹配的电动汽车充电引导策略》

这个标题涉及两个主要概念&#xff1a;动态哈夫模型和双边匹配&#xff0c;用于制定电动汽车充电引导策略。 动态哈夫模型&#xff08;Dynamic Hawkes Model&#xff09;&#xff1a; 哈夫模型是用于描述事件发生的随机过程模型&#xff0c;特别适用于描述时间序列中的事件间的…

基于SSM的旅游管理系统论文

摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对旅游信息管理混乱&#xff0c;出错率高&#xff0c;信息安全性差&am…

喜报|亚数荣获“2023物联网场景应用品牌企业”奖项

12月5日至6日&#xff0c;以“物联中国 数智雄安”为主题的“千企雄安行&#xff1a;2023物联网产业品牌大会”在雄安新区举办。 大会由雄安新区管理委员会、中关村发展集团股份有限公司、物联中国团体组织联席会主办&#xff0c;雄安新区投资促进服务中心、北京物联网智能技术…

pytorch——豆瓣读书评价分析

任务目标 基于给定数据集&#xff0c;采用三层bp神经网络方法&#xff0c;编写程序并构建分类模型&#xff0c;通过给定特征实现预测的书籍评分的模型。 选取数据 在各项指标中&#xff0c;我认为书籍的评分和出版社、评论数量还有作者相关&#xff0c;和其他属性的关系并大。…

【网络安全】-Linux操作系统基础

文章目录 Linux操作系统目录结构Linux命令格式Linux文件和目录操作命令Linux用户和用户组操作命令Linux查看和操作文件内容命令Linux文件压缩和解压缩命令Linux网络管理命令Linux磁盘管理和系统状态命令Linux安全加固总结 Linux是一个强大的操作系统&#xff0c;广泛用于服务器…

配置OSPF与BFD联动

组网需求 如图1所示&#xff0c;SwitchA、SwitchB和SwitchC之间运行OSPF&#xff0c;SwitchA和SwitchB之间的交换仅作透传功能。现在需要SwitchA和SwitchB能快速感应它们之间的链路状态&#xff0c;当链路SwitchA-SwitchB发生故障时&#xff0c;业务能快速切换到备份链路Switch…