如何在 Github Actions 中访问 SECRETS 的价值?

Con*_*ion 7 github github-actions

我正在尝试访问SECRET发送到 GitHub 操作的s的值,但我很挣扎。[FILTERED]无论键或原始值是什么,每次都会返回值。

我可以ENVIRONMENT VARIABLES毫无问题地访问,所以我一定是在其他地方搞砸了。

本质上,我想要做的是向我的操作/容器发送一个 ssh 密钥,但是在将任何其他密钥/值作为秘密发送时我遇到了同样的问题。

我的(简化的)GitHub Action 如下:

action "Test" {
  uses = "./.github/actions/test"
  secrets = [
    "SSH_PRIVATE_KEY",
    "SSH_PUBLIC_KEY",
  ]
  env = {
    SSH_PUBLIC_KEY_TEST = "thisisatestpublickey"
  }
}
Run Code Online (Sandbox Code Playgroud)

Dockerfile:

FROM ubuntu:latest

# Args
ARG SSH_PRIVATE_KEY
ARG SSH_PUBLIC_KEY
ARG SSH_PUBLIC_KEY_TEST

# Copy entrypoint
ADD entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
Run Code Online (Sandbox Code Playgroud)

入口点.sh:

#! /bin/sh

SSH_PATH="$HOME/.ssh"

mkdir "$SSH_PATH"
touch "$SSH_PATH/known_hosts"

echo "$SSH_PRIVATE_KEY" > "$SSH_PATH/id_rsa"
echo "$SSH_PUBLIC_KEY" > "$SSH_PATH/id_rsa.pub"
echo "$SSH_PUBLIC_KEY_TEST" > "$SSH_PATH/id_rsa_test.pub" 

cat "$SSH_PATH/id_rsa"
cat "$SSH_PATH/id_rsa.pub"
cat "$SSH_PATH/id_rsa_test.pub"
Run Code Online (Sandbox Code Playgroud)

这三个cat命令的输出是:

[FILTERED]
[FILTERED]
thisisatestpublickey
Run Code Online (Sandbox Code Playgroud)

如您所见,我可以获取(并使用)环境变量的值,但秘密并未暴露。

有人有任何线索吗?

只是为了更新这一点,我还简单地尝试在 entrypoint.sh 中回显不带引号的两个秘密:

echo $SSH_PRIVATE_KEY
echo $SSH_PUBLIC_KEY
Run Code Online (Sandbox Code Playgroud)

...在日志中,我看到了$SSH_PRIVATE_KEY(即我的 ssh 密钥的实际内容)的完整解密内容,而$SSH_PUBLIC_KEY仍然返回[FILTERED].

所以,我可以假设我们能够看到一个动作内部的秘密内容,但我不知道为什么我只能看到其中一个,而另一个返回[FILTERED]

它是一个缓存的东西,也许?

我只是想找出一种可预测的方法来处理这个问题。

Edw*_*son 7

如您所见,我可以获取(并使用)环境变量的值,但秘密并未暴露。

That's because they're secrets. The Actions output is explicitly scrubbed for secrets, and they're not displayed.

The file contents still contain the secret contents.