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二. 使用 .gitlab-ci.yml 文件:
\n您可以在作业中或 .gitlab-ci.yml 文件的顶层使用变量关键字。如果变量位于顶层,则它\xe2\x80\x99全局可用,并且所有作业都可以使用它。如果 it\xe2\x80\x99 在作业中定义,则只有该作业可以使用它。
\nvariables:\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"\nRun Code Online (Sandbox Code Playgroud)\n确保在 .gitlab-ci.yaml 文件中仅存储非敏感变量
\n查看官方文档以获取更多信息和示例。
\n| 归档时间: |
|
| 查看次数: |
3457 次 |
| 最近记录: |