5、环境变量使用

128 阅读1分钟

目的: 安全(涉及敏感信息,比如oss 的Id 和Secret)+方便

官方参考文档: https://docs.gitlab.cn/jh/ci/yaml/

1、哪里可以定义:

1、.gitlab-ci.yml中自己定义

# .gitlab-ci.yml  全局+job变量

variables:      # 全局变量
  DEPLOY_SITE: "https://example.com/"

deploy_job:
  stage: deploy
  script:
    - deploy-script --url $DEPLOY_SITE --path "/"

deploy_review_job:
  stage: deploy
  variables:           # job变量
    REVIEW_PATH: "/review"  
  script:
    - deploy-review-script --url $DEPLOY_SITE --path $REVIEW_PATH

2、项目中gitlab 设置的变量

job_deploy_oss_dev:
  stage: deploy
  tags: 
    - test
  script:
    - wget http://gosspublic.alicdn.com/ossutil/1.6.18/ossutil64
    - chmod 755 ossutil64
    - ./ossutil64 config -e ${endPoint} -i ${accessKeyID} -k ${accessKeySecret} -L CH --loglevel debug -c ~/.ossutilconfig
    - ./ossutil64 -c ~/.ossutilconfig cp -r -f dist/ oss://hkcicd/
  only:
    - dev
  when: manual

注意点: 如果勾选了mask 遮罩,流水线日志里面就不会打印出:

3、官方预定义的变量

Predefined variables reference: https://docs.gitlab.com/ee/ci/variables/predefined_variables.html

2、变量类型:

  • key:value
  • 文件

3、哪里可以使用

官方参考文档: https://docs.gitlab.com/ee/ci/variables/where_variables_can_be_used.html

  • environment: name
  • environment: url
job_deploy_main:
  stage: deploy
  image: docker
  tags: 
    - test
  script:
    - docker build -t testimageprod .
    - if [ $(docker ps -aq --filter name=mycicd-containerprod) ]; then docker rm -f mycicd-containerprod;fi
    - docker run -d -p 8082:80 --name mycicd-containerprod testimageprod
  environment:
    name: silvaProd   # 可以用变量替代
    url: http://1.116.55.82:8082 # 可以用变量替代
  only:
    - main
  when: manual
  • include
  • image
  • services: []
  • services: []:name
  • cache: key
cache-job:
  script:
    - echo "This job uses a cache."
  cache:
    key: binaries-cache-$CI_COMMIT_REF_SLUG
    paths:
      - binaries/
  • artifacts: name
  • scrit 、before_script、after_script
  • only: variables:[]
  • except: variables:[]
  • reles: if
workflow:
  rules:
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
    - if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS
      when: never
    - if: $CI_COMMIT_BRANCH