005.Gitlab CICD变量使用

文章目录

变量介绍

预定义变量

gitlab cicd预定义了大量的变量,也可以手动新增自定义变量。

其中各种变量涉及了项目信息、操作信息等。

在流水线处理的时候可以使用变量实现更丰富的控制。

项目信息类
变量名 描述 示例
CI_PROJECT_ID 当前项目唯一ID 12345678
CI_PROJECT_DIR 项目下载的目录
CI_PROJECT_NAME 项目名称 myapp
CI_PROJECT_DESCRIPTION commit的描述
CI_PROJECT_NAMESPACE 项目的组
CI_PROJECT_NAMESPACE_ID 项目的组ID
CI_PROJECT_TITLE 项目标题 My first Project
CI_PROJECT_PATH 项目全路径 mygroup/myapp
CI_PROJECT_PATH_SLUG URL友好路径 my-group-my-project
CI_PROJECT_URL 项目Web访问地址 https://gitlab.linuxsb.com/mygroup/myapp
CI_PROJECT_VISIBILITY 项目可见性 private/internal/public
版本控制类
变量名 描述 示例
CI_COMMIT_AUTHOR commit的作者 Xianghy
CI_COMMIT_DESCRIPTION commit的描述
CI_COMMIT_MESSAGE commit的信息 Fix critical bug
CI_COMMIT_SHA 当前提交的完整SHA值 1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p
CI_COMMIT_SHORT_SHA 前8位提交SHA(适合短标签) 1a2b3c4d
CI_COMMIT_REF_NAME 构建的分支或标签名称 main
CI_COMMIT_BRANCH commit分支名称(标签触发时为空) 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_TITLE commit的标题,commit信息的第一行
CI_COMMIT_DEFAULT_BRANCH 默认分支
流水线执行类
变量名 描述 示例
CI_BUILDS_DIR 编译的根目录
CI_PIPELINE_ID 流水线唯一ID 98765432
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的ID 10
CI_RUNNER_DESCRIPTION Runner描述 my-shared-runner
CI_RUNNER_TAGS Runner标签列表(逗号分隔) study_runner
CI_RUNNER_VERSION GitLab Runner版本 16.8.1
CI_SERVER_HOST GitLab服务器域名 gitlab.linuxsb.com
CI_SERVER_PORT GitLab服务器端口 443
CI_SERVER_PROTOCOL 使用协议 https
CI_SERVER_URL GitLab实例地址 https://gitlab.linuxsb.com
作业执行类
变量名 描述 示例
CI_JOB_ID 作业唯一ID 345678
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 有效。

变量使用

预定义变量使用

创建流水线

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

shell 复制代码
[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
提交流水作业
shell 复制代码
[root@gitclient myapp]# git add .gitlab-ci.yml
[root@gitclient myapp]# git commit -m "Test env"

[root@gitclient myapp]# git push origin main

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

自定义变量使用

创建流水线

在compile 和 build 两个 job 中,都打印了 IP 和 PORT 变量。

且一个是全局变量,一个是局部变量,观察打印的结果是否符合预期。

shell 复制代码
[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
提交流水作业
shell 复制代码
[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

查看作业情况:

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

图形UI创建变量

UI自定义变量

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

进入 myapp 项目 ------> 设置 ------> CI/CD ------> 变量。

添加用户名的变量:

变量名: USERNAME

变量值: Xianghy

添加用户密码的变量:

变量名: PASSWORD

变量值: Xiangpassword123

且设置为隐藏。

创建流水线

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

shell 复制代码
[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

提交流水作业

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

[root@gitclient myapp]# git push origin main

查看作业情况:

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

相关推荐
Linux运维老纪10 小时前
GitLab之搭建(Building GitLab)
linux·mysql·云计算·gitlab·运维开发
MarkHD14 小时前
第十七天 - Jenkins API集成 - 流水线自动化 - 练习:CI/CD流程优化
ci/cd·自动化·jenkins
萌狼蓝天16 小时前
[CI]Docker构建时传递CI的唯一生成号作为版本号(SpringBoot、Vue)
spring boot·ci/cd·docker
啊卡无敌1 天前
记一次gitlab服务器负载过高问题处理
服务器·gitlab·github
西柚啊2 天前
从零到一:前端CI/CD工作流搭建实践
ci/cd
云攀登者-望正茂2 天前
实践 DevOps 项目:使用 Terraform、Helm、SonarQube 和 GitLab CI/CD 在 AWS EKS 上实践全栈部署
自动化·devops·terraform
kfhj3 天前
DevOps与Docker的关系
运维·docker·容器·devops
元气满满的热码式3 天前
解决制作CI流水线时的no host异常报错
linux·服务器·ci/cd·云原生·kubernetes
晓风残月淡3 天前
持续集成与Jenkins安装使用教程
运维·ci/cd·jenkins