Gitlab 屏蔽变量

Pie*_*eau 4 gitlab-ci

我似乎无法屏蔽 Gitlab CI 上的变量 -

我正在尝试上传 ssh 私钥,无论我做什么,它都拒绝屏蔽它。

那是我试图在 Gitlab 上存储一个私钥供我的生产服务器具有公钥的 Gitlab运行器使用。我不是在问如何在构建过程中将它介绍给跑步者,如这个问题的答案中所述

我使用的是 ed25519 密钥,因此字符开始时并非都是 base 64。

所以在生成密钥之后

$ cat gitlab
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmU....etc etc
-----END OPENSSH PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)

我通过管道将它传输到 base64

$ cat gitlab|base64
Run Code Online (Sandbox Code Playgroud)

没有喜悦。

Gitlab 似乎也将换行符引入粘贴的文本/变量字段

所以我做了

$ cat gitlab|base64|tr -d '\r'
Run Code Online (Sandbox Code Playgroud)

乃至

$ cat gitlab|base64|tr -d '\r'|xclip
Run Code Online (Sandbox Code Playgroud)

我找到了这个人 ,这到底是怎么回事

$ cat gitlab|base64|base32|tr -d '\r'|xclip
Run Code Online (Sandbox Code Playgroud)

都没有快乐。

任何人得到这个工作?

Sil*_*lex 7

对我来说cat gitlab | base64 -w0有效。

如果您绝对想使用tr,则可以tr -d '\n'改用。

编辑:当然,您还需要在使用它时取消base64。

这是一个可以消除混淆的示例:

silex@silex-laptop:/tmp$ echo secret > gitlab

silex@silex-laptop:/tmp$ MY_SECRET_ENCODED="$(cat gitlab | base64 -w0)"

silex@silex-laptop:/tmp$ echo $MY_SECRET_ENCODED
c2VjcmV0Cg==

silex@silex-laptop:/tmp$ MY_SECRET_DECODED = "$(echo MY_SECRET_ENCODED | base64 -d)"

silex@silex-laptop:/tmp$ echo $MY_SECRET_DECODED
secret
Run Code Online (Sandbox Code Playgroud)

这里 MY_SECRET_ENCODED 是您在界面中的变量, MY_SECRET_DECODED 是您在脚本中使用的变量。

  • <facepalm>忘记了解码。对于任何其他不幸的情况,这里是 .gitlab-ci.yml 中的更改: - echo "${GITLABRUNNER_PRIVKEY}" | tr -d '\r' | ssh-add -> /dev/null 变为 - echo "${GITLABRUNNER_PRIVKEY}"|base64 -d| ssh-add -> /dev/null (2认同)
  • 我不明白为什么 gitlab 强制使用 base64 编码变量,以便在我们之后需要解码它们时能够屏蔽它们。base64 不是加密...无论如何,谢谢@PierreBrasseau。为我做了这个伎俩。 (2认同)