在 Docker 容器构建/运行命令上设置 GitHub Actions Secrets

在 Docker 容器构建/运行命令上设置 GitHub Actions Secrets

在 Docker 容器构建/运行命令上设置 GitHub Actions Secrets

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

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

现在,我正在做这个工作:

- name: Backend - Build Container (proof of concept)
  run: |
    BACKEND_CONTAINER_SH_SCRIPT='eval "GITHUB_USER=123 GITHUB_REPO_NAME=321 docker-compose -f ss-build-files/ubuntu-container-build.yml up -d && docker-compose -f ss-build-files/ubuntu-container-build.yml logs";'
    echo "${{ secrets.CONFIG_SERVER_SSH_KEY }}" > id_rsa_ssh_key_server_temp.pem;
    chmod 600 id_rsa_ssh_key_server_temp.pem;
    ssh -v -t -t -i id_rsa_ssh_key_server_temp.pem -o StrictHostKeyChecking=no ubuntu@${{ env.CONFIG_SERVER_IP }} "$BACKEND_CONTAINER_SH_SCRIPT"
    rm id_rsa_ssh_key_server_temp.pem;
    echo "Status check: jobs completed successfully!";

但是,当我尝试与 GitHub 机密集成时,它会在 GitHub Runner 中返回一个错误:

- name: Backend - Build Container (proof of concept)
  run: |
    BACKEND_CONTAINER_SH_SCRIPT='eval "GITHUB_USER=x${{ secrets.TEST_1 }} GITHUB_REPO_NAME=xx${{ 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";'
    echo "${{ secrets.CONFIG_SERVER_SSH_KEY }}" > id_rsa_ssh_key_server_temp.pem;
    chmod 600 id_rsa_ssh_key_server_temp.pem;
    ssh -v -t -t -i id_rsa_ssh_key_server_temp.pem -o StrictHostKeyChecking=no ubuntu@${{ env.CONFIG_SERVER_IP }} "$BACKEND_CONTAINER_SH_SCRIPT"
    rm id_rsa_ssh_key_server_temp.pem;
    echo "Status check: jobs completed successfully!";

错误:

debug1: Sending command: eval "GITHUB_USER=x*** GITHUB_REPO_NAME=xx*** docker-compose -f ss-build-files/ubuntu-container-build.yml up -d && docker-compose -f ss-build-files/ubuntu-container-build.yml logs";
bash: line 1: secret1: command not found
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: channel 0: free: client-session, nchannels 1
Connection to 3.90.173.47 closed.
Transferred: sent 2892, received 2676 bytes, in 0.5 seconds
Bytes per second: sent 6131.9, received 5673.9
debug1: Exit status 127
Error: Process completed with exit code 127.

注意:我以这种方式构建是因为eval "GITHUB_USER=123 GITHUB_REPO_NAME=321 docker-compose -f ss-build-files/ubuntu-container-build.yml up -d && docker-compose -f ss-build-files/ubuntu-container-build.yml logs"考虑到我希望完成的任务,这似乎是唯一可行的方法,即创建一个节点脚本,从 repo 中读取所有 Secrets(该应用程序有许多环境变量)并输出如下字符串:

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

我将把这个字符串与 Docker 容器命令的其余部分合并。

有谁知道导致我出现此错误的原因,或者有谁知道如何在不在服务器/容器中对 .env 文件进行硬编码的情况下自动化此部分?

答案1

没有 它也应该可以工作eval

从中bash: line 1: secret1: command not found我们可以看到,无论出于什么原因,它都会尝试执行命令secret1。最有可能是因为eval对其进行了干扰。

相关内容