【问题标题】:How to set up env variables in gitlab-ci.yaml?如何在 gitlab-ci.yaml 中设置环境变量?
【发布时间】:2021-08-17 00:50:03
【问题描述】:

我的 gitlab ci-cd 配置文件使用了许多环境变量。为了设置它们,我使用 gitlab ci-cd 秘密变量。

例如dev deploy-part:

- echo "====== Deploy to dev server ======"
# Add target server`s secret key
- apk add git openssh bash
- mkdir ~/.ssh
- echo $DEV_SERVER_SECRET_KEY_BASE_64 | base64 -d > ~/.ssh/id_rsa
- chmod 700 ~/.ssh && chmod 600 ~/.ssh/*
- echo "Test ssh connection for"
- echo "$DEV_SERVER_USER@$DEV_SERVER_HOST"
- ssh -o StrictHostKeyChecking=no -T "$DEV_SERVER_USER@$DEV_SERVER_HOST"
# Delploy
- echo "Setup target server directories"
- TARGET_SERVER_HOST=$DEV_SERVER_HOST TARGET_SERVER_USER=$DEV_SERVER_USER TARGET_SERVER_APP_FOLDER=$DEV_SERVER_APP_FOLDER pm2 deploy pm2.config.js dev setup 2>&1 || true
- echo "make deploy"
- TARGET_SERVER_HOST=$DEV_SERVER_HOST TARGET_SERVER_USER=$DEV_SERVER_USER TARGET_SERVER_APP_FOLDER=$DEV_SERVER_APP_FOLDER pm2 deploy pm2.config.js dev

我在项目中有 5 个存储库和 3 个服务器(dev、preprod、prod)。所以我必须管理许多变量。使用 gitlab ci-cd 秘密变量来管理它们,这很伤人。我看不到它,改变它 - 只删除和创建。我同意将它用于秘密 ssh 密钥,但它不适合指定文件夹、主机等的名称。

还有其他方法可以为 ci-cd 脚本提供变量吗?

【问题讨论】:

  • 您是否找到了将 GitLab ENV 传递给脚本的方法(通过 process.env 或其他方法)?

标签: continuous-integration gitlab devops continuous-deployment gitlab-ci-runner


【解决方案1】:

您可以通过多种方式定义自定义变量:

我。使用 GUI:

II. 使用 .gitlab-ci.yml 文件

您可以在作业中或 .gitlab-ci.yml 文件的顶层使用 variables 关键字。如果变量在顶层,它是全局可用的,所有作业都可以使用它。如果它是在作业中定义的,则只有该作业可以使用它。

variables:
  TEST_VAR: "All jobs can use this variable's value"

job1:
  variables:
    TEST_VAR_JOB: "Only job1 can use this variable's value"
  script:
    - echo "$TEST_VAR" and "$TEST_VAR_JOB"

确保在 .gitlab-ci.yaml 文件中仅存储非敏感变量

查看official documentation 了解更多信息和示例。

【讨论】:

    猜你喜欢
    • 2019-12-14
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    • 2020-02-29
    • 2020-01-10
    • 1970-01-01
    • 2019-07-02
    相关资源
    最近更新 更多