如何在 gitlab-ci.yml 文件中通过 ssh 设置变量值

How to set variable value over ssh in gitlab-ci.yml file

我正在尝试为我的 GitLab Runner 设置一个环境变量,我使用 ssh 命令检索该值。我厌倦了在 workflow 中设置变量,如下所示。问题是ssh命令没有执行,被当作字符串处理。

workflow:
  rules:
    - if: $CI_PIPELINE_SOURCE == "schedule"
      when: always
      variables:
        TABLE_STATUS: ssh gitlab-runner@$TARGET_HOST "source $DRIVE_PATH/config/.config && mysql -u $USER -p$PASSWORD -e \"SELECT IF(MONTH(datetime) = MONTH(NOW()), IF(status = 1, 'TRUE', 'FALSE'), 'FALSE') FROM schema.table WHERE table_name = 'tbl_name';\" "
        BRANCH: prod
        DRIVE_PATH: /path/to/prod
    - when: always

ssh 命令在脚本中有效,但我不知道如何在脚本之前将值赋给变量。

直接在你的变量中使用字符串命令确实可能会导致...一个字符串值。

执行命令应该涉及,如,子shell命令$(xxx)

在你的情况下,来自 , using the before_script directive:

before_script:
   TABLE_STATUS=$(ssh gitlab-runner@$TARGET_HOST "source $DRIVE_PATH/config/.config && mysql ...)