当前位置: 首页 > news >正文

005.Gitlab CICD变量使用

文章目录

    • 变量介绍
      • 预定义变量
        • 项目信息类
        • 版本控制类
        • 流水线执行类
        • runner环境类
        • 作业执行类
        • 容器注册类
        • 其他类别
      • 自定义变量
    • 变量使用
      • 预定义变量使用
        • 创建流水线
        • 提交流水作业
      • 自定义变量使用
        • 创建流水线
        • 提交流水作业
    • 图形UI创建变量
      • UI自定义变量
      • 创建流水线
      • 提交流水作业

变量介绍

预定义变量

gitlab cicd预定义了大量的变量,也可以手动新增自定义变量。
其中各种变量涉及了项目信息、操作信息等。
在流水线处理的时候可以使用变量实现更丰富的控制。

项目信息类
变量名描述示例
CI_PROJECT_ID当前项目唯一ID12345678
CI_PROJECT_DIR项目下载的目录
CI_PROJECT_NAME项目名称myapp
CI_PROJECT_DESCRIPTIONcommit的描述
CI_PROJECT_NAMESPACE项目的组
CI_PROJECT_NAMESPACE_ID项目的组ID
CI_PROJECT_TITLE项目标题My first Project
CI_PROJECT_PATH项目全路径mygroup/myapp
CI_PROJECT_PATH_SLUGURL友好路径my-group-my-project
CI_PROJECT_URL项目Web访问地址https://gitlab.linuxsb.com/mygroup/myapp
CI_PROJECT_VISIBILITY项目可见性private/internal/public
版本控制类
变量名描述示例
CI_COMMIT_AUTHORcommit的作者Xianghy
CI_COMMIT_DESCRIPTIONcommit的描述
CI_COMMIT_MESSAGEcommit的信息Fix critical bug
CI_COMMIT_SHA当前提交的完整SHA值1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p
CI_COMMIT_SHORT_SHA前8位提交SHA(适合短标签)1a2b3c4d
CI_COMMIT_REF_NAME构建的分支或标签名称main
CI_COMMIT_BRANCHcommit分支名称(标签触发时为空)feature/login
CI_COMMIT_TAG打tag标签名称(仅标签触发时存在)v1.0.0-release
CI_COMMIT_TAG_MESSAGE打tag标签信息
CI_COMMIT_TIMESTAMP提交时间戳2023-08-20T12:34:56Z
CI_COMMIT_TITLEcommit的标题,commit信息的第一行
CI_COMMIT_DEFAULT_BRANCH默认分支
流水线执行类
变量名描述示例
CI_BUILDS_DIR编译的根目录
CI_PIPELINE_ID流水线唯一ID98765432
CI_PIPELINE_IID项目内流水线编号123
CI_PIPELINE_SOURCE流水线触发来源push/web/schedule/api
CI_PIPELINE_URL获取URL详情的URL
CI_PIPELINE_TRIGGERED是否由触发词启动true/false
CI_PIPELINE_CREATED_AT流水线创建时间2023-08-20T12:34:56Z
runner环境类
变量名描述示例
CI_RUNNER_ID执行Runner的ID10
CI_RUNNER_DESCRIPTIONRunner描述my-shared-runner
CI_RUNNER_TAGSRunner标签列表(逗号分隔)study_runner
CI_RUNNER_VERSIONGitLab Runner版本16.8.1
CI_SERVER_HOSTGitLab服务器域名gitlab.linuxsb.com
CI_SERVER_PORTGitLab服务器端口443
CI_SERVER_PROTOCOL使用协议https
CI_SERVER_URLGitLab实例地址https://gitlab.linuxsb.com
作业执行类
变量名描述示例
CI_JOB_ID作业唯一ID345678
CI_JOB_NAME作业名称build
CI_JOB_STAGE所属阶段test
CI_JOB_STATUS作业状态success/failed
CI_JOB_MANUAL是否手动触发true/false
CI_JOB_TOKEN作业临时令牌xxxxxxxx
CI_JOB_TIMEOUT作业的超时
CI_JOB_STARTED_AT作业开始时间2023-08-20T12:34:56Z
容器注册类
变量名描述示例
CI_REGISTRY容器注册中心地址registry.linuxsb.com
CI_REGISTRY_IMAGE项目容器镜像地址registry.linuxsb.com/mygroup/myapp
CI_REGISTRY_USER注册用户名gitlab-ci-token
CI_REGISTRY_PASSWORD注册临时密码[动态生成]
CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX依赖代理前缀 linuxsb.com:443/my-group/dependency_proxy/containers
其他类别
变量名描述示例
CI_DEBUG_TRACE开启详细调试日志true
CI_DISPOSABLE_ENVIRONMENT是否为临时环境true
CI_OPEN_MERGE_REQUESTS关联的合并请求123,456
CI_KUBERNETES_ACTIVE是否在K8s环境运行true

自定义变量

gitlab cicd中的自定义变量,可以直接在 .gitlab-ci.yml 文件中通过 variables 关键字定义。也可以在图形界面进行创建。

在 .gitlab-ci.yml 配置文件中,定义 variables 关键字有两种作用范围,一种的全局变量,一种的局部变量。
全局变量表示对 .gitlab-ci.yml 文件有效,即表示对文件内的所有作业 job 有效。
局部变量就是在特定 job 中定义,仅对当前 job 有效。

变量使用

预定义变量使用

创建流水线

创建一个简单的流水作业,输出相关变量。

[root@gitclient myapp]# git rm .gitlab-ci.yml

[root@gitclient myapp]# vim .gitlab-ci.yml
stages:
  - compile

compile:
  stage: compile
  script:
    - echo ${CI_COMMIT_BRANCH}
    - echo ${CI_PIPELINE_SOURCE}
    - echo ${CI_PROJECT_NAME}

  tags:
    - study-runner
提交流水作业
[root@gitclient myapp]# git add .gitlab-ci.yml
[root@gitclient myapp]# git commit -m "Test env"

[root@gitclient myapp]# git push origin main

查看作业执行情况,如下所示,能正常输出变量。
074

自定义变量使用

创建流水线

在compile 和 build 两个 job 中,都打印了 IP 和 PORT 变量。
且一个是全局变量,一个是局部变量,观察打印的结果是否符合预期。

[root@gitclient myapp]# git rm .gitlab-ci.yml

[root@gitclient myapp]# vim .gitlab-ci.yml
stages:
  - compile
  - build

variables:
  IP: "172.24.8.180"

compile:
  variables:
    PORT: 22
  stage: compile
  script:
    - echo ${IP}:${PORT}
    - echo ${CI_COMMIT_BRANCH}
    - echo ${CI_PIPELINE_SOURCE}
    - echo ${CI_PROJECT_NAME}
  tags:
    - study-runner

build:
  stage: build
  script:
    - echo ${IP}
    - echo ${PORT}
  tags:
    - study-runner
提交流水作业
[root@gitclient myapp]# git add .gitlab-ci.yml
[root@gitclient myapp]# git commit -m "Test global variable and local variable"

[root@gitclient myapp]# git push origin main

查看作业情况:
075

076

如上所示,对于 compile 都能正常打印,对于 build ,在 compile 里定义的局部变量是无法打印出来的。

图形UI创建变量

UI自定义变量

对于一些敏感数据,如用户名、密码等,建议在图形界面创建自定义变量。

077

进入 myapp 项目 ——> 设置 ——> CI/CD ——> 变量。
添加用户名的变量:
变量名: USERNAME
变量值: Xianghy

078

添加用户密码的变量:
变量名: PASSWORD
变量值: Xiangpassword123
且设置为隐藏。

079

创建流水线

创建一个引用用户名和密码的流水线,测试图形界面创建的自定义变量。

[root@gitclient myapp]# vim .gitlab-ci.yml
stages:
  - compile

variables:
  IP: "172.24.8.180"

compile:
  variables:
    PORT: 22
  stage: compile
  script:
    - echo ${IP}:${PORT}
    - echo ${CI_COMMIT_BRANCH}
    - echo ${USERNAME}
    - echo ${PASSWORD}
  tags:
    - study-runner

提交流水作业

[root@gitclient myapp]# git add .gitlab-ci.yml
[root@gitclient myapp]# git commit -m "Test webui variable"

[root@gitclient myapp]# git push origin main

查看作业情况:
080

如上所示,对于敏感数据,作业中会隐藏显示。

http://www.dtcms.com/a/121983.html

相关文章:

  • oauth2.0认证原理
  • word表格间隔设置
  • C++20 数学常数:<numbers> 头文件的革新
  • cmd清除网络共享连接凭证
  • C++高精度算法(加、减、乘)
  • 【C++】 —— 笔试刷题day_13
  • 抽象类及其特性
  • cpp(c++)win 10编译GDAL、PROJ、SQLite3、curl、libtiff
  • Easysearch VS Opensearch 数据写入与存储性能对比
  • HOW - 实现 useClickOutside 或者 useClickAway
  • 大模型本地部署系列(1) Ollama的安装与配置
  • 神经网络 | 基于脉冲耦合神经网络PCNN图像特征提取与匹配(附matlab代码)
  • 408 计算机网络 知识点记忆(6)
  • Elasticsearch DSL 中的 aggs 聚合分析
  • 数据结构实验3.3:求解迷宫路径问题
  • 西门子S7-1500与S7-200SMART通讯全攻略:从基础配置到远程IO集成
  • SQL注入(SQL Injection)
  • Ollama 与 llama.cpp 深度对比
  • [特殊字符]【高并发实战】Java Socket + 线程池实现高性能文件上传服务器(附完整源码)[特殊字符]
  • 虽然理解git命令,但是我选择vscode插件!
  • Databricks: Why did your cluster disappear?
  • 【UE5】RTS游戏的框选功能+行军线效果实现
  • Spring Boot 3.x 下 Spring Security 的执行流程、核心类和原理详解,结合用户描述的关键点展开说明,并以表格总结
  • WPF 绑定方式举例
  • LabVIEW 图像处理中常见的边缘检测算法
  • 发票真伪查验接口集成攻略-PHP批量查验发票真伪
  • 贪心算法(17)(java)可被三整除的最大整数和
  • [CISSP] [9] 安全漏洞,威胁和对策
  • 视觉分析AI赋能智慧水务多场景应用
  • S32K144的m_data_2地址不够存,重新在LD文件中配置地址区域