如何在gitlab yaml中的变量中存储多行字符串

San*_*idi 11 gitlab-ci

我正在尝试将一些多行字符串(例如 ssh 私钥)存储在.gitlab-ci.yml文件的变量中

我有一个 ssh 私钥

-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAriS0+ayniFDo+y7GcNb62mupuM4EFBX+gdCEr/K8wZd/mFxY
mSGoVX2CdCDy6k+LSWbBBFtus575187fHNy045gJzI5D0PSGmPsWYqu/Rst43Qgr
R6CAOBqapM9LVBopH0pjPTv5/8iJA/G+Mw6MXGzQAAuA0ZyJoDy7d3GSVKG+k/k0
smZ+FKjDxZ3gn/e3nc5XABSywZlT91RHT6BImrxizvgHkkks1J8RBl9QoIvMSiwD
7sEElAABAoGBAN7kSADAK5vtqvFQsMAPEJLXdv5mP0IEe3IamL3MNlUYpb7yGqBr
6Jmopg+vpbkXZeMpC6uYu9F5Y6etV8yslTERxhP3yE+Fg2FFXc53jDOzkkCu+aey
PypGWE9hZXK5Wx9rqi83b9d59bCcMY5kouDSUNTmYVC3H+OxuX+2hgnJAoGBAMgC
toxjVLp+gDhRUqxe1MuTznq4GGzXB9/LuGYI078pHlYjHmWIKfHtKv5O6HqYz2pi
8mMNqt0vZC+Wbt5kZnE3Om1CgEvAPsxMUaAWq7iXSfEhqRvfwE5uJwkSxiTnRRWH
4tzSjGCP3+GqVYxUliELvwMdS1Qbo103lwVgoR4iLSrr/vWTb5NG3ms=...
-----END RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)

和输出ssh-keyscan domain.com

# xx.xx.xx.xx:22 SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
xx.xx.xx.xx ssh-rsa AAAX20sVRmUkgOn8Db46ikEhC2zBZYZ7Lv2AsaHV+isNB3QYfNKGDEMj9CvWByezJR/3DqCgK/IGLH0JfMZK9H9HR7/P1aeY7bVAg07Gdt/vYrgQtaNtkdK3qD/C0oUSQAE1a2vOzBGx1HZgtORTh8eN/h5bKW0/2GVlS+9K1MR7peECpgOBo3fu2RPwB/KFlUcrtZkdE8Em/thbXFWE/VGBwh/eoNB1
# xx.xx.xx.xx:22 SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
xx.xx.xx.xx ecdsa-sha2-nistp256 LhpT93b8rE/exS/M9QyoyjoeEuioXhffu62Ayxxl4UewOuASHaF4ylQIJSNlK+groH6Iv1QvPVKFe/n1uF1Xvk=
# xx.xx.xx.xx:22 SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
xx.xx.xx.xx ssh-ed25519 AAAAC3Nz/O/Dod2CitLhIqnePT51H
Run Code Online (Sandbox Code Playgroud)

我知道这些可以存储在 gitlab CI/CD 变量中

但我如何将其存储在 yml 文件中。

喜欢

image: creatiwww/docker-compose:latest

services:
  - docker:dind

variables:
  ssh_private_key: <private key text here but its multiline>
  ssh_known_hosts: <out put of ssh-keyscan which is also multiline>
Run Code Online (Sandbox Code Playgroud)

NeV*_*raX 20

使用>有效但不保留换行符。

|可能是任何来到这里的人都在寻找的东西。

这是两者的示例:

multi-lines-variables-test:
  variables:
    MULTI_WITHOUT_CR: >-
      Here is the first line
      And here is the second
    MULTI_WITH_CR: |-
      Here is the first line
      And here is the second
  script:
    - echo "$MULTI_WITHOUT_CR"
    - echo "$MULTI_WITH_CR"
Run Code Online (Sandbox Code Playgroud)

打印:

$ echo "$MULTI_WITHOUT_CR"
Here is the first line And here is the second
$ echo "$MULTI_WITH_CR"
Here is the first line
And here is the second
Run Code Online (Sandbox Code Playgroud)

请注意行中变量周围的双引号echo。如果省略它们,结果将在一行上,因为行将被视为 echo 的多个参数。

编辑:更好,>-|-去掉尾随的新行。取自这里:https ://stackoverflow.com/a/21699210/10239040


MrT*_*Tux 1

不要\xe2\x80\x99t 将可能更改的 RSA 私钥或主机密钥放入 .gitlab-ci.XML 文件中。

\n

使用可在项目或组级别配置的 GitLab 变量。

\n

https://docs.gitlab.com/ee/ci/variables/

\n

  • 我的目的是知道如何存储多行字符串 (2认同)