如何使用 Jenkinsfile 在子目录中构建 Dockerfile

How build a Dockerfile in a Subdirectory using a Jenkinsfile

我有一个 github 存储库,其中包含声明性管道 Jenkinsfile。 我节点上的工作目录包含子目录。

该项目是一个简单的空 linkx docker 项目,使用 visual studio 2017 和 .net core 2.1 创建。它在我的 windows 7 机器上正常执行并且有一个 hello world 网页。

我无法在 jenkins 上构建 Dockerfile。 我可以使用 dir(...){} 启动 Dockerfile 构建。 失败的步骤总是

COPY ["MyProject/MyProject.csproj", "MyProject/"]

这一步要求相对路径在MySolution.

文件Workspace/MySolution/MyProject/MyProject.csproj存在

错误信息是 Workspace/MyProject/MyProject.csproj 不存在。

我使用 google 和 Whosebug 进行了详尽的搜索。我尝试的事情包括 sh 命令的组合、dir 语法、docker 上的选项构建如 -f。其中一些是直接失败,我在 运行 进入 COPY 步骤问题时获得了最好的结果。

Jenkinsfile 中失败步骤的一个示例是:

dir("MySolution/MyProject")
{
    script
    {
        docker.build("MyProject", ".")
    }
}

上面的 COPY 问题导致失败。

我看到了关于 so 的问题似乎不太适用于此,哪些解决方案没有运行解决这个问题。

事实证明,我最终非常接近问题的解决方案。 这解决了我的子文件夹问题:

dir("MySolution")
{
    script
    {
        docker.build("MyProject", "-f ./MyProject/Dockerfile .")
    }
}