使用 Jenkinsfile 时如何检出 Docker 容器内的存储库?
How do I checkout a repository inside a Docker container when using a Jenkinsfile?
我目前已经设法在容器内设置一个 Jenkins 文件来 运行 我的 PHP 分析。这是它的要点:
node {
stage "Prepare environment"
checkout scm
def environment = docker.build 'platforms-base'
environment.inside {
stage "Update Dependencies"
sh "composer install || true"
}
}
当这个 运行s 时,似乎 repo 被签出到主机上并且该目录被安装到 /app
目录中的 docker 容器中。 (我还没有找到任何配置,所以我不确定这是在哪里定义的。)
在同一个容器中,我在 /var/magento2
目录中安装了 Magento2。我需要 运行 在 Magento2 代码库范围内进行一些测试。这意味着我需要将当前分支签出到容器中位于 /var/magento2/vendor/myorg/mypackage/
的特定目录中,但签出的回购似乎位于 /app
.
如何在容器内的某个地方签出一个 repo?
/app
将安装在您的容器内,因为您(或您正在使用的 Dockerfile)将当前目录安装为 /app
.
现在,您的代码 是 已经由 Jenkins 检查得很好,所以我不会从 docker 容器内部进行单独的额外检查。 Jenkins 刚刚使用正确的凭据为您检查了正确的 branch/master/tag,因此无需您自己执行。
您有三个基本选择:
挂载当前目录不是/app
,而是/var/magento2/vendor/myorg/mypackage/
将当前目录挂载为 /app
和 /var/magento2/vendor/myorg/mypackage/
。您甚至可以使用额外的命令行选项而不是修改 Dockerfile 来执行此操作。 (这在很大程度上取决于您的开发设置)。
将 /var/magento2/vendor/myorg/mypackage/
设为 /app
的符号链接,这也可能有效。
我目前已经设法在容器内设置一个 Jenkins 文件来 运行 我的 PHP 分析。这是它的要点:
node {
stage "Prepare environment"
checkout scm
def environment = docker.build 'platforms-base'
environment.inside {
stage "Update Dependencies"
sh "composer install || true"
}
}
当这个 运行s 时,似乎 repo 被签出到主机上并且该目录被安装到 /app
目录中的 docker 容器中。 (我还没有找到任何配置,所以我不确定这是在哪里定义的。)
在同一个容器中,我在 /var/magento2
目录中安装了 Magento2。我需要 运行 在 Magento2 代码库范围内进行一些测试。这意味着我需要将当前分支签出到容器中位于 /var/magento2/vendor/myorg/mypackage/
的特定目录中,但签出的回购似乎位于 /app
.
如何在容器内的某个地方签出一个 repo?
/app
将安装在您的容器内,因为您(或您正在使用的 Dockerfile)将当前目录安装为 /app
.
现在,您的代码 是 已经由 Jenkins 检查得很好,所以我不会从 docker 容器内部进行单独的额外检查。 Jenkins 刚刚使用正确的凭据为您检查了正确的 branch/master/tag,因此无需您自己执行。
您有三个基本选择:
挂载当前目录不是
/app
,而是/var/magento2/vendor/myorg/mypackage/
将当前目录挂载为
/app
和/var/magento2/vendor/myorg/mypackage/
。您甚至可以使用额外的命令行选项而不是修改 Dockerfile 来执行此操作。 (这在很大程度上取决于您的开发设置)。将
/var/magento2/vendor/myorg/mypackage/
设为/app
的符号链接,这也可能有效。