gitlab ci/cd搭建及使用笔记

记录下使用gitlab的ci/cd的devops构建过程中,一些易忘点或者踩坑点:

  1. 官方文档中英文(建议英文)
    https://docs.gitlab.com/ee/ci/yaml/artifacts_reports.html
    https://gitlab.cn/docs/jh/ci/pipelines/schedules.html
  2. 为什么创建了流水线后,触发了一次流水线之后会自动不停地创建流水线?
    如果你在你的工程设置中,让流水线给你自动生成tag,该tag的提交就会被push到代码库,而如果你每禁用push事件或每指定具体push规则,每次push又会创建运行新的流水线,因此造成了死循环;
    解决方法要么把流水线改为手动触发,要么禁用push触发,要么就细化push触发规则
    一个手动触发的案例如下:
stages:          # List of stages for jobs, and their order of execution- build- release- package- test- deploy#workflow:
#  rules:#- if: '$CI_PIPELINE_SOURCE == "push"'#  when: never
#    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'build_job:       # This job runs in the build stage, which runs first.stage: buildrules:- if: '$CI_PIPELINE_SOURCE == "push"'when: manual# - if: $CI_PIPELINE_SOURCE == 'merge_request_event'script:- work_root=`pwd`- echo "wortroot:${work_root} " >> release.log- chmod +x script/build_control.sh && sh script/build_control.sh >> release.log- tar -cf output.tar build >> release.logartifacts:paths:- output.tar- release.logexpire_in: 1 weekrelease_job:stage: releaseneeds: ["build_job"]#rules:#  - if: '$CI_PIPELINE_SOURCE == "push"'#    when: neverscript:- echo "$CI_PIPELINE_SOURCE" >> release.log- echo "running release_job" >> release.log- export CI_COMMIT_TAG=`date +"%Y%m%d%H%M%S"`- echo "$CI_COMMIT_TAG" >> release.log- export ci_commit_branch=${CI_COMMIT_BRANCH}- echo "$CI_COMMIT_BRANCH" >> release.log- release-cli create --description "release $CI_COMMIT_TAG" --tag-name "${ci_commit_branch}.v.$CI_COMMIT_TAG"dependencies:- build_job
  1. 为什么我在一些阶段的产出文件无法在最终流程结束后找到也无法被下一个阶段使用?
    这是因为每个阶段都会删除上一阶段的数据,重新拉取运行,如果你希望你上一个阶段的脚本执行产出被保留,需要使用artifacts,上面的案例也有
  2. gitlabrunner可以自己装在自己的服务器上,不一定要用它推荐的镜像
  3. 为什么找不到CI_COMMIT_TAG环境变量?或者无法把gitlab-runner里面的环境变量带到流水线的脚本里?
    目前这是gitlab设计的一个已知问题,把gitlab流水线的专有变量带到gitlab-runner所在实例可采用示例中export方式,然后你就可以直接使用了。

两个比较多的案例
https://zhuanlan.zhihu.com/p/510820543
https://blog.51cto.com/busy/6543293

未完待续…

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

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

相关文章

SQL注入(SQL Injection)详解

SQL注入(SQL Injection)是一种代码注入技术,它通过在应用程序的输入字段中插入或“注入”恶意的SQL语句,从而操控后端数据库服务器执行非预期的命令。这种攻击方式常用于绕过应用程序的安全措施,未经授权地访问、修改或…

小程序源码-模版 100多套小程序(附源码)

一、搭建开发环境 搭建环境可以从这里开始: 微信小程序从零开始开发步骤(一)搭建开发环境 - 简书 二、程序示例 1、AppleMusic https://download.csdn.net/download/m0_54925305/89977187 2、仿B站首页 https://download.csdn.net/downlo…

安装baidubce库

直接pip install baidubce会带来一系列后续文件缺失问题,应该: pip install bce-python-sdk

【鉴权】提升 JWT 安全性的最佳实践:防范常见风险与应对策略

目录 引言一、JWT简介二、JWT的安全风险与防护措施2.1 签名算法不安全2.2 中间人攻击(MITM)2.3 重放攻击2.4 防止JWT泄露2.5 密钥管理与轮换2.6 验证JWT的来源和受众2.7 监控与审计 三、提高 JWT 安全性的关键措施3.1 选择安全的签名算法3.2 强制使用 HT…

Java实习面经系列(一)

1.自我介绍 2.问项目有关 了.线程池的理解 4.hashmap扩容,为什么扩两倍 5.jvm新生代老年代 6.垃圾回收算法 7.聚簇索引和非聚簇索引区别,b树,跳表,二叉树比较。哈希索引和b树的索引比较 8.存储引擎 9.回表是什么 10.MySQL语句查询…

【Java】-- 异常

1. 异常的概念与体系结构 1.1 异常的概念 在Java中,将程序执行过程中发生的不正常行为称为异常。 public class Test {public static void main(String[] args) {//算术(ArithmeticException)异常 // int a 5/0; // System.…

从零开始:利用Portainer CE和cpolar搭建NextCloud私有云存储

文章目录 前言1. 在PortainerCE中创建NextCloud容器2. 公网远程访问本地NextCloud容器2.1 内网穿透工具安装3.2 创建远程连接公网地址 3. 固定NextCloud私有云盘公网地址 前言 本文将介绍如何在本地利用Portainer CE的可视化界面创建NextCloud私有云盘容器,并通过c…

[安洵杯 2019]easy_web 详细题解

知识点: 编码转换 命令执行 linux空格_关键字绕过 打开页面 发现url 是 /index.php?imgTXpVek5UTTFNbVUzTURabE5qYz0&cmd 有img参数和cmd参数 cmd参数是没赋值的,随便赋值为123456 页面没有反应 鼠标移动到图片下面时发现有东西,当然直接查看页面源代码也可以发现 尝…

第2章 数据的表示和运算

王道学习 考纲内容 (一)数制与编码 进位计数制及其相互转换;定点数的编码表示 (二)运算方法和运算电路 基本运算部件:加法器;算术逻辑单元(ALU)…

Web3 游戏周报(11.03 - 11.09)

回顾上周的区块链游戏概况,查看 Footprint Analytics 与 ABGA 最新发布的数据报告。 【11.03 - 11.09】Web3 游戏行业动态: Ton Accelerator 推出名为「Synergy」的 500 万美元计划,旨在推动跨链创新,创造 TON 用户与 EVM 网络适应…

CHS许可管理系统

在数字化时代,软件已成为企业运营的核心。为确保软件的合规使用,一个高效、智能的许可管理系统至关重要。CHS许可管理系统正是这样一款专为现代企业设计的软件合规管理解决方案,旨在帮助企业轻松应对软件许可管理的挑战。 一、智能许可管理&…

数据分析:16s差异分析DESeq2 | Corncob | MaAsLin2 | ALDEx2

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍DESeq2原理计算步骤结果Corncob原理计算步骤结果MaAsLin2原理计算步骤结果ALDEx2原理计算步骤结果加载R包数据链接数据预处理微生物数据样本信息提取物种名称过滤零值保留结果读取…

【Android】ubutun 创建Androidstudio桌面快捷方式

此方法不仅适合Androidstudio,其他应用的快捷方式创建同理。 创建桌面快捷方式 进入桌面 cd ~/Desktop创建.desktop文件 touch androidStudio.desktop编辑.desktop文件 [Desktop Entry] TypeApplication Terminalfalse NameAndroid Studio Comment android stu…

Apache POI 操作Word常用方法

系列文章目录 一、Java使用Apache POI导出excel 二、Apache POI 操作Excel常用方法 三、Apache poi 拆分单元格并赋值 四、使用easypoi模板方法导出excel 五、Apache poi给excel单元格添加下拉框或数据验证 六、Apache poi操作Word常用方法 文章目录 系列文章目录一、介绍二、…

你对安装在自己网站上的wordpress插件了解吗?

有不少用wordpress建站的人,喜欢用插件实现一些功能,使用插件是可以很方便的实现一些功能,但是,使用插件也会带来不少的问题。关于这个,这里就不讲了,网上可以搜索出一堆相关的内容来,这里只提出…

H.264/H.265播放器EasyPlayer.js无插件H5播放器关于WASM的压缩优化

在当今的Web开发领域,流媒体播放器的性能和效率至关重要,尤其是在处理大型视频文件和高分辨率视频流时。EasyPlayer.js RTSP播放器作为一款先进的流媒体播放器,它在WebAssembly(WASM)的压缩优化方面表现出色&#xff0…

使用 Python 从 REST URL 下载文件

使用 Python 从 REST URL 下载文件,可以使用 requests 库来简化文件的下载和保存过程。以下是一个示例代码,展示了如何从给定的 REST API 或 URL 下载文件并保存到本地。 1、问题背景 我们需要编写一个脚本,从一个支持 REST URL 的网站下载一…

EKS+EBS

下面我们介绍一下如何在EKS中实现动态、可扩展高效的存储 总共用到五个内容: 1、ebs卷:物理存储资源,充当底层存储基础 2、ebs csl驱动:桥梁,允许K8s管理ebs 3、PV和PVC: 通过匹配让Pod挂载所需的持久存储 4、Pod的挂载…

SpringMVC学习记录(三)之响应数据

SpringMVC学习记录(三)之响应数据 一、页面跳转控制1、快速返回模板视图2、转发和重定向 二、返回JSON数据1、前置准备2、ResponseBody 三、返回静态资源1、静态资源概念2、访问静态资源 /*** TODO: 一个controller的方法是控制层的一个处理器,我们称为h…

利用EasyPOI导出Excel,内容中含有图片

需求背景 做一个OCR识别的功能,需要导出原图和识别出来的结果的图纸,将数据导出. 解决方案 EasyPOI中可以用字节类型,导出图片,可以将图片存放的url 转成字节,然后导出.但是整个导出过程耗时较久。 具体代码 /*** 草图OCR识别记录-导出.** @param response: Http…