Concourse:在放置步骤期间无法访问作业资源

Concourse: cannot access job resources during put step

我正在尝试使用构建参数创建并推送包含我的应用程序依赖项的 docker 映像。在 concourse 文档中,它指出通过 get 获取的所有资源在放置步骤中都可用。我似乎无法访问我的 git 资源,但是为了从中提取 pom.xml 文件。当我尝试 运行 这份工作时,我得到一个错误 pom.xml 文件不存在。

管道作业

  - name: get-dependencies
    plan:
    - get: git-repo
      passed: [pull-repo]
      trigger: true
    - get: artifacts-container
    - put: artifacts-container
      params:
        inputs: [git-repo]
        build: git-repo/app/concourse/dockerfiles/artifacts

Docker 文件

# Set base image qualities
FROM localhost:5000/app-artifacts:0.0.3 AS build

Load application into image
COPY git-repo/app/pom.xml /

RUN mvn dependency:go-offline 

不确定你的容器是做什么的,但你应该删除 - get: artifacts-container 语句并只保留 put.

我遇到了类似的问题。我想构建一个 docker 图像并使用 COPY 命令将来自不同资源的文件夹放入该图像。

首先,我只给 docker-image-resource "build" 参数和 Dockerfile 所在的文件夹。但是那样我就无法访问其他资源,我最终使用了 'build' 和 'dockerfile' 参数。这样构建发生在放置步骤的根目录中,所有其他工件都可用。

我的管道:

- put: docker-image-resource
  params:
    build: .
    dockerfile: ./path/to/Dockerfile
    build_args:
      CONFIG_DIR: ./other-resource/

我进一步使用构建参数将 Dockerfile 与管道构建分离。所以我可以在其他构建上下文(例如本地)中指定其他目录。