• GitLab CI/CD关键词(五):变量 variables


    转载自:https://cloud.tencent.com/developer/article/1978778

    简介

    在GitLab CI/CD中变量对于业务的实现起着非常大做作用,用户可以使用环境中的预设变量,或自定义的变量来是实现各种各样的需求。在GitLab CI/CD中定义变量的方式也有很多种。

    变量variables

    在GitLab CI/CD中 用户可以自定义变量,可以使用预设变量,一些变量也会表明当前的流水线状态,比如当前操作的是那个分支,分支是不是在合并中?这些都可以通过变量获取到。在使用变量时,最常用的是在 script,before_script,after_script这三个关键词中使用。也有在cache中使用的。总是变量的引入让流水线变得更加灵活丰富。下面介绍一下变量的定义与使用

    预设变量

    首先是流水线中的预设变量,这些都是GitLab CI/CD自动注入到当前环境的。很多是只读的变量,不允许用户修改。这些变量都是使用 以CI开头,大写_的方式组成。如 预设变量 CI_COMMIT_AUTHOR,它是用于表明 提交的作者,格式为:名称<邮箱>

    在GitLab CI/CD中有非常多的预设变量,但大致又分为以下几种。

    • 通用
    • MR流水线专用
    • PR流水线专用

    具体可以查看官方的链接

    官方提供的预设变量实在太多了,于是我为读者总结了一些常用的预设变量,并将描述翻译成了中文,大家可以点击此链接查看

    .gitlab-ci.yml 文件中定义变量

    .gitlab-ci.yml文件中定义变量,需要使用variables关键词。如下例子

    variables:
      DEPLOY_SITE: "https://example.com/"
    
    deploy_job:
      stage: deploy
      script:
        - deploy-script --url $DEPLOY_SITE --path "/"
    
    deploy_review_job:
      stage: deploy
      variables:
        REVIEW_PATH: "/review"
      script:
        - deploy-review-script --url $DEPLOY_SITE --path $REVIEW_PATH
    

    关键词variables 既是一个全局关键词,也是一个作业关键词,当使用它在文件顶部定义变量时,而不是某一个作业内,那么这些变量将对整个流水线可见。

    如果使用它在某个作业下定义变量,那么这些变量只能在当前作业内可见。变量的值可用是一个字符串,或者字母数字 下划线组成的字符。可以使用变量来定义一个新的变量,如下

    variables:
      DEPLOY_SITE: "https://example.com/"
      BU: "${DEPLOY_SITE}time"
    

    如果你想要描述一个变量的含义的话,可以使用 variables:description 如下

    variables:
      DEPLOY_ENVIRONMENT:
        value: "staging"
        description: "The deployment target. Change this variable to 'canary' or 'production' if needed."
    

    如果你想要查看所有的变量可以在script中使用 script: export 来打印所有变量。

    在UI页面上定义变量

    除了在.gitlab-ci.yml文件中定义变量,我们还可以通过GitLab UI来定义新的变量

    如下


    在此处声明的变量可以进行水印,或者设置为只在保护分支使用。

    这是项目级别的变量定义,开发者也可以设置群组级别的变量,二者使用范围不一样。

    项目级别的变量,在当前项目,所有流水线都可见。

    群组级别的变量在当前群组下所有的项目的所有流水线都可见。

    在Runner配置文件中定义变量

    有些变量可以在runner的配置文件下定义值,设置之后对于使用该runner的流水线,这些变量都会生效。可配置的变量大致有这些

    • GIT_STRATEGY
    • GIT_SUBMODULE_STRATEGY
    • GIT_CHECKOUT
    • GIT_CLEAN_FLAGS
    • GIT_FETCH_EXTRA_FLAGS
    • GIT_SUBMODULE_UPDATE_FLAGS
    • GIT_DEPTH (shallow cloning)
    • GIT_CLONE_PATH (custom build directories)
    • TRANSFER_METER_FREQUENCY (artifact/cache meter update frequency)
    • ARTIFACT_COMPRESSION_LEVEL (artifact archiver compression level)
    • CACHE_COMPRESSION_LEVEL (cache archiver compression level)
    • CACHE_REQUEST_TIMEOUT (cache request timeout)

    其他手段定义变量

    手动运行作业时

    手动触发流水线时注入变量



    定时运行时

    哪些地方可以使用变量

    • after_script
    • artifacts:name
    • before_script
    • cache:key
    • environment:name
    • environment:url
    • except:variables:[]
    • image
    • include
    • only:variables:[]
    • resource_group
    • rules:if
    • script
    • services:[]:name
    • services:[]
    • tags
    • variables
  • 相关阅读:
    Java知识点总结
    Eclipse使用中遇到的问题及解决
    Ubuntu--64位系统安装32位的库
    Ubuntu--防火墙的使用
    Ubuntu--手动配置IP地址,网关,DNS
    tcp echo_server
    模板类继承-成员变量不可访问的问题
    brpc channel -负载均衡-NamingService三者之间的关系
    头文件依赖顺序风格
    brpc namingservice的调用栈
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/16377413.html
Copyright © 2020-2023  润新知