【问题标题】:Gitlab masking variablesGitlab屏蔽变量
【发布时间】:2020-02-16 11:16:11
【问题描述】:

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

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

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

我使用的是 ed25519 键,因此字符并非都是以 64 为基数的。

所以生成密钥后

$ cat gitlab
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmU....etc etc
-----END OPENSSH PRIVATE KEY-----

我将它通过管道传输到 base64

$ cat gitlab|base64

没有快乐。

Gitlab 似乎还在粘贴的文本/变量字段中引入换行符

原来如此

$ cat gitlab|base64|tr -d '\r'

甚至

$ cat gitlab|base64|tr -d '\r'|xclip

我找到了this guy 那是什么鬼

$ cat gitlab|base64|base32|tr -d '\r'|xclip

一切都没有欢乐。

有人搞定这个吗?

【问题讨论】:

    标签: gitlab-ci


    【解决方案1】:

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

    如果你绝对想使用tr,你会使用tr -d '\n'

    EDIT:当然你在使用的时候还需要unbase64。

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

    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
    

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

    【讨论】:

    • 这可以掩盖它(谢谢)......但Gitlab部署失败。未屏蔽,它部署好,屏蔽它没有。叹。为什么 Gitlab 做事这么难?
    • @PierreBrasseau:添加了一个编辑以消除混乱,询问是否不清楚。
    • 忘记了解码。对于任何其他不幸的是,.gitlab-ci.yml 中的更改:- echo "${GITLABRUNNER_PRIVKEY}" | tr -d '\r' | ssh-add -> /dev/null 变成 -echo "${GITLABRUNNER_PRIVKEY}"|base64 -d| ssh-add -> /dev/null
    • 我不明白为什么 gitlab 强制使用 base64 编码的变量以便在我们之后需要解码它们时能够屏蔽它们。 base64 不是加密......无论如何感谢@PierreBrasseau。对我有用。
    猜你喜欢
    • 2022-08-18
    • 2013-07-13
    • 2015-05-12
    • 1970-01-01
    • 2019-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多