.env 文件在通过 DevOps CD 管道部署时标记为不是对象

.env file Flaged as not being an object when deploying trough DevOps CD pipeline

我刚刚创建了一个 .env 文件来将我的环境变量与我的主 docker-compose 文件分开。我可以 运行 我的本地机器上的这个文档没有错误或问题但是当我尝试 运行 它通过我的 CD 管道时我得到以下错误。

[error]Top level object in 'C:\BuildAgent_work\r38\a\"Myproject Name"\drop\ .env' needs to be an object not 'class 'str'.

我最初以为这是因为我设置了错误的 build/CI 过程,但我试过它但没有运气。

我也在网上做了一些研究,想找到其他有同样问题的人,但是 none 无论如何都与 DevOps 相关,所以它没有帮助

我不确定如何重现这个问题,但如果有人知道我可以尝试提供一些我需要的代码

编辑:

这是我的 .env 文件的片段。查看下面的评论了解我的想法

ContainerInfrastructure_Version=6.7.93-beta.1

ContainerInfrastructureCore_Version=6.7.41-beta.1

AuthenticationWebService_Version=6.7.52-beta.1

CRM_Version=6.7.52-beta.1

预期结果:

Deploys successfully

我在 docker-compose 任务中得到的结果:

[error]Top level object in 'C:\BuildAgent_work\r38\a\Goldpine.ReleaseManagement\drop.env' needs to be an object not 'class 'str'.

好的,我明白了。我不确定如何简要解释这一点,但我会尽力而为。

所以问题出在 DevOps 本身而不是我的代码中。事实证明,如果您 运行 从 docker-compose.yml 文件存在的工作目录中执行 docker-compose 命令,那么 .env 文件只会 works/gets 被拾取。

当它进入 DevOps 时,它不是从下载的 artefact 目录中 运行 命令,而是使用 -f 命令创建它的路径。

长话短说,如果您使用 .env 文件,您需要将 CD pipeline 中的 working directory 设置到您的 artefact 文件夹,以便它能够看到 .env 文件正确。

我希望这足够清楚,如果不只是让我知道,我会尝试相应地改变它:)