1. 变量使用

1.1 使用预定义的环境变量

//比如构建 Docker 镜像,定义缓存目录

  1. variables:
  2. REGISTRY: $CI_REGISTRY/edu-java-demo/edu-java-spring
  3. MAVEN_OPTS: "-Dmaven.repo.local=$CI_PROJECT_DIR/.m2"
  4. ...

1.2 创建一个自定义环境变量

创建自定义环境变量有两种方式:

  • .gitlab-ci.yml
  • gitlab UI 页面

    • 项目变量
    • 组变量

(1)通过 UI 定义

组变量: 组页面 -> 设置 -> CI/CD -> 变量

5.2 变量的创建与使用 - 图1

项目变量:设置 -> CI/CD -> 变量

5.2 变量的创建与使用 - 图2

(2) .gitlab-ci.yml 中定义

在 .gitlab-ci.yml 中定义变量,可以在两个地方,全局和job中

  1. variables:
  2. TEST: "HELLO WORLD"
  3. job1
  4. variables:
  5. TEST2: "HELLO WORLD2"

2.3 变量使用示例

//gitlab-ci.yml

  1. variables:
  2. REGISTRY: $CI_REGISTRY/edu-java-demo/edu-java-spring
  3. test_variabl:
  4. stage: test
  5. variables:
  6. JOB: test variable
  7. script:
  8. - echo "${CI_PROJECT_DIR}"
  9. - echo "${AISHANGWEI}"
  10. - echo "${HARBOR_USER}/${HARBOR_PW}"
  11. - echo "${REGISTRY}"
  12. - echo $JOB
  13. - echo "--------------"
  14. - export

//输出如下

  1. Running with gitlab-runner 12.10.0 (c553af1a)
  2. on host20133-docker 6FzQVSkX
  3. Preparing the "docker" executor
  4. 00:00
  5. Using Docker executor with image harbor.xiodi.cn/tools/alpine:3.11 ...
  6. Pulling docker image harbor.xiodi.cn/tools/alpine:3.11 ...
  7. Using docker image sha256:cc0abc535e36a7ede71978ba2bbd8159b8a5420b91f2fbc520cdf5f673640a34 for harbor.xiodi.cn/tools/alpine:3.11 ...
  8. Preparing environment
  9. 00:03
  10. Running on runner-6fzqvskx-project-1-concurrent-0 via bcff4f9f7900...
  11. Getting source from Git repository
  12. 00:02
  13. Fetching changes with git depth set to 50...
  14. Reinitialized existing Git repository in /builds/edu-java-demo/edu-java-spring/.git/
  15. From https://gitlabtest.xiodi.cn/edu-java-demo/edu-java-spring
  16. * [new ref] refs/pipelines/10 -> refs/pipelines/10
  17. 59dd48f..e15e65b feature-1 -> origin/feature-1
  18. Checking out e15e65bb as feature-1...
  19. Removing public/
  20. Removing vendor/
  21. Skipping Git submodules setup
  22. Restoring cache
  23. 00:01
  24. Downloading artifacts
  25. 00:02
  26. Running before_script and script
  27. 00:02
  28. $ echo "${CI_PROJECT_DIR}"
  29. /builds/edu-java-demo/edu-java-spring
  30. $ echo "${AISHANGWEI}"
  31. aishangwei-group
  32. $ echo "${HARBOR_USER}/${HARBOR_PW}"
  33. harbor/xiodi.cn123
  34. $ echo "${REGISTRY}"
  35. /edu-java-demo/edu-java-spring
  36. $ echo $JOB
  37. test variable
  38. $ echo "--------------"
  39. --------------
  40. $ export
  41. export AISHANGWEI='aishangwei-group'
  42. export CI='true'
  43. export CI_API_V4_URL='https://gitlabtest.xiodi.cn/api/v4'
  44. export CI_BUILDS_DIR='/builds'
  45. export CI_BUILD_BEFORE_SHA='59dd48fbff2995d9fcf982192f68800dacf042c8'
  46. export CI_BUILD_ID='21'
  47. export CI_BUILD_NAME='test_variabl'
  48. export CI_BUILD_REF='e15e65bb132cebbe73e5f7a23b5f33a5ffd6b9b3'
  49. export CI_BUILD_REF_NAME='feature-1'
  50. export CI_BUILD_REF_SLUG='feature-1'
  51. export CI_BUILD_STAGE='test'
  52. export CI_BUILD_TOKEN='[MASKED]'
  53. export CI_COMMIT_BEFORE_SHA='59dd48fbff2995d9fcf982192f68800dacf042c8'
  54. export CI_COMMIT_BRANCH='feature-1'
  55. export CI_COMMIT_DESCRIPTION=''
  56. export CI_COMMIT_MESSAGE='change gitlab-ci
  57. '
  58. export CI_COMMIT_REF_NAME='feature-1'
  59. export CI_COMMIT_REF_PROTECTED='false'
  60. export CI_COMMIT_REF_SLUG='feature-1'
  61. export CI_COMMIT_SHA='e15e65bb132cebbe73e5f7a23b5f33a5ffd6b9b3'
  62. export CI_COMMIT_SHORT_SHA='e15e65bb'
  63. export CI_COMMIT_TITLE='change gitlab-ci'
  64. export CI_CONCURRENT_ID='0'
  65. export CI_CONCURRENT_PROJECT_ID='0'
  66. export CI_CONFIG_PATH='.gitlab-ci.yml'
  67. export CI_DEFAULT_BRANCH='dev'
  68. export CI_DISPOSABLE_ENVIRONMENT='true'
  69. export CI_JOB_ID='21'
  70. export CI_JOB_JWT='[MASKED]'
  71. export CI_JOB_NAME='test_variabl'
  72. export CI_JOB_STAGE='test'
  73. export CI_JOB_TOKEN='[MASKED]'
  74. export CI_JOB_URL='https://gitlabtest.xiodi.cn/edu-java-demo/edu-java-spring/-/jobs/21'
  75. export CI_NODE_TOTAL='1'
  76. export CI_PAGES_DOMAIN='example.com'
  77. export CI_PAGES_URL='http://edu-java-demo.example.com/edu-java-spring'
  78. export CI_PIPELINE_ID='10'
  79. export CI_PIPELINE_IID='10'
  80. export CI_PIPELINE_SOURCE='push'
  81. export CI_PIPELINE_URL='https://gitlabtest.xiodi.cn/edu-java-demo/edu-java-spring/pipelines/10'
  82. export CI_PROJECT_DIR='/builds/edu-java-demo/edu-java-spring'
  83. export CI_PROJECT_ID='1'
  84. export CI_PROJECT_NAME='edu-java-spring'
  85. export CI_PROJECT_NAMESPACE='edu-java-demo'
  86. export CI_PROJECT_PATH='edu-java-demo/edu-java-spring'
  87. export CI_PROJECT_PATH_SLUG='edu-java-demo-edu-java-spring'
  88. export CI_PROJECT_REPOSITORY_LANGUAGES=''
  89. export CI_PROJECT_TITLE='edu-java-spring'
  90. export CI_PROJECT_URL='https://gitlabtest.xiodi.cn/edu-java-demo/edu-java-spring'
  91. export CI_PROJECT_VISIBILITY='private'
  92. export CI_REGISTRY_PASSWORD='[MASKED]'
  93. export CI_REGISTRY_USER='gitlab-ci-token'
  94. export CI_REPOSITORY_URL='https://gitlab-ci-token:[MASKED]@gitlabtest.xiodi.cn/edu-java-demo/edu-java-spring.git'
  95. export CI_RUNNER_DESCRIPTION='host20133-docker'
  96. export CI_RUNNER_EXECUTABLE_ARCH='linux/amd64'
  97. export CI_RUNNER_ID='4'
  98. export CI_RUNNER_REVISION='c553af1a'
  99. export CI_RUNNER_SHORT_TOKEN='6FzQVSkX'
  100. export CI_RUNNER_TAGS='host20133-docker, docker'
  101. export CI_RUNNER_VERSION='12.10.0'
  102. export CI_SERVER='yes'
  103. export CI_SERVER_HOST='gitlabtest.xiodi.cn'
  104. export CI_SERVER_NAME='GitLab'
  105. export CI_SERVER_PORT='443'
  106. export CI_SERVER_PROTOCOL='https'
  107. export CI_SERVER_REVISION='869bc26464b'
  108. export CI_SERVER_TLS_CA_FILE='/builds/edu-java-demo/edu-java-spring.tmp/CI_SERVER_TLS_CA_FILE'
  109. export CI_SERVER_URL='https://gitlabtest.xiodi.cn'
  110. export CI_SERVER_VERSION='12.10.0'
  111. export CI_SERVER_VERSION_MAJOR='12'
  112. export CI_SERVER_VERSION_MINOR='10'
  113. export CI_SERVER_VERSION_PATCH='0'
  114. export FF_CMD_DISABLE_DELAYED_ERROR_LEVEL_EXPANSION='false'
  115. export FF_NETWORK_PER_BUILD='false'
  116. export FF_USE_LEGACY_BUILDS_DIR_FOR_DOCKER='false'
  117. export FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY='true'
  118. export FF_USE_LEGACY_VOLUMES_MOUNTING_ORDER='false'
  119. export GITLAB_CI='true'
  120. export GITLAB_FEATURES=''
  121. export GITLAB_USER_EMAIL='dev01@aishangwei.net'
  122. export GITLAB_USER_ID='3'
  123. export GITLAB_USER_LOGIN='dev01'
  124. export GITLAB_USER_NAME='dev01'
  125. export HARBOR_PW='xiodi.cn123'
  126. export HARBOR_USER='harbor'
  127. export HOME='/root'
  128. export HOSTNAME='runner-6fzqvskx-project-1-concurrent-0'
  129. export JOB='test variable'
  130. export OLDPWD='/'
  131. export PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
  132. export PWD='/builds/edu-java-demo/edu-java-spring'
  133. export REGISTRY='/edu-java-demo/edu-java-spring'
  134. export SHLVL='2'
  135. Running after_script
  136. 00:01
  137. Saving cache
  138. 00:02
  139. Uploading artifacts for successful job
  140. 00:02
  141. Job succeeded