如何在 gitlab-ci.yaml 中设置环境变量?

Ale*_*zev 5 continuous-integration continuous-deployment gitlab gitlab-ci-runner devops

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

例如,开发部署部分:

- 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
Run Code Online (Sandbox Code Playgroud)

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

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

小智 1

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

\n

一、使用GUI:

\n\n

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

\n

您可以在作业中或 .gitlab-ci.yml 文件的顶层使用变量关键字。如果变量位于顶层,则它\xe2\x80\x99全局可用,并且所有作业都可以使用它。如果 it\xe2\x80\x99 在作业中定义,则只有该作业可以使用它。

\n
variables:\n  TEST_VAR: "All jobs can use this variable\'s value"\n\njob1:\n  variables:\n    TEST_VAR_JOB: "Only job1 can use this variable\'s value"\n  script:\n    - echo "$TEST_VAR" and "$TEST_VAR_JOB"\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

查看官方文档以获取更多信息和示例。

\n