目的: 安全(涉及敏感信息,比如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