在 Docker 容器构建/运行命令上设置 GitHub Actions Secrets,但遇到解析问题

在 Docker 容器构建/运行命令上设置 GitHub Actions Secrets,但遇到解析问题

我正处于构建自动化管道的早期阶段。仍处于探索阶段。现在,我正在努力为要运行应用程序的容器设置环境变量。

我的想法是将我的环境变量设置为 GitHub Actions Secrets,并在运行 docker 容器命令时在容器中配置它们。该容器是由 Docker Composer 文件构建的。

现在,我的测试脚本(A)运行正常:

- name: Backend - Build Container (proof of concept)
  run: |
    BACKEND_CONTAINER_SH_SCRIPT="TEST_1='${{ secrets.TEST_1 }}' TEST_2='${{ secrets.TEST_2 }}' GITHUB_USER='${{ secrets.TEST_1 }}' GITHUB_REPO_NAME='${{ secrets.TEST_2 }}' docker-compose -f ss-build-files/ubuntu-container-build.yml up -d && docker-compose -f ss-build-files/ubuntu-container-build.yml logs; exit;";    
    ssh -v -t -t -i id_rsa_ssh_key_server_temp.pem -o StrictHostKeyChecking=no ubuntu@${{ env.CONFIG_SERVER_IP }} "$BACKEND_CONTAINER_SH_SCRIPT"

但是,我的想法是建立一个临时文件(ss-build-files/output-docker-compose-github-secrets.txt),它看起来像这样:

TEST_1='${{ secrets.TEST_1 }}' TEST_2='${{ secrets.TEST_2 }}' GITHUB_USER='${{ secrets.TEST_1 }}' GITHUB_REPO_NAME='${{ secrets.TEST_2 }}'

(它将根据 repo 中的密钥由节点文件动态构建)

问题是当我尝试将两者合并在一起时:

- name: Backend - Build Container (proof of concept)
  run: |
    BACKEND_CONTAINER_SH_SCRIPT="$(cat ss-build-files/output-docker-compose-github-secrets.txt) docker-compose -f ss-build-files/ubuntu-container-build.yml up -d && docker-compose -f ss-build-files/ubuntu-container-build.yml logs; exit;";
    ssh -v -t -t -i id_rsa_ssh_key_server_temp.pem -o StrictHostKeyChecking=no ubuntu@${{ env.CONFIG_SERVER_IP }} "$BACKEND_CONTAINER_SH_SCRIPT"

因此,在我看来,这可以‘翻译’为:

BACKEND_CONTAINER_SH_SCRIPT="TEST_1='${{ secrets.TEST_1 }}' TEST_2='${{ secrets.TEST_2 }}' GITHUB_USER='${{ secrets.TEST_1 }}' GITHUB_REPO_NAME='${{ secrets.TEST_2 }}' docker-compose -f ss-build-files/ubuntu-container-build.yml up -d && docker-compose -f ss-build-files/ubuntu-container-build.yml logs; exit;";

容器构建成功,没有任何错误。当我进入容器调试环境值时,我得到了以下信息:

GITHUB_USER=${{ secrets.TEST_1 }}
GITHUB_REPO_NAME=${{ secrets.TEST_2 }}

(文字值)注意:完美运行的测试脚本(A)打印出正确的秘密值。

这个构造的命令中是否存在我遗漏的解析细节?我对 shell 脚本不是很熟悉。最好从这个文件中获取输出字符串ss-build-files/output-docker-compose-github-secrets.txt。我可以灵活地更改输出中的详细信息(单引号、双引号、无引号)。

还有其他建议吗?即使这意味着要循环遍历密钥数组来构建此命令,TEST_1='${{ secrets.TEST_1 }}' TEST_2='${{ secrets.TEST_2 }}' GITHUB_USER='${{ secrets.TEST_1 }}' GITHUB_REPO_NAME='${{ secrets.TEST_2 }}'以便它们能够反映正确的值。

相关内容