首页 > 解决方案 > 大厅 CI + MVN

问题描述

我正在尝试使用 Maven 使用 Concourse CI 创建管道。管道应:

上述步骤正在正确执行。如何访问由maven项目生成的输出即目标文件夹的问题。

我无法访问生成的文件夹并复制到所需的文件夹以供以后使用。

文件管道.yml:

resources:
- name: branch-master
  type: git
  source:
    uri: {{git-url}}
    branch: master

jobs: 
- name: MavenJob
  serial: true
  plan:
  - get: branch-master
    trigger: true
  - task: mvn-test
    privileged: true
    file: branch-dev/AppDemo/test.yml

文件 test.yml:

platform: linux

image_resource:
  type: docker-image
  source:
    repository: maven
    tag: latest

inputs:
  - name: branch-master
outputs:
  - name: mvn-output

run:
  path: "mvn"
  args: ["-f", "branch-master/AppDemo/pom.xml", "test"]

请一些身体帮助我。

提前致谢。

标签: javamavenconcourseconcourse-pipeline

解决方案


为了简单和明确起见,我将您的 git repo 重命名为project. 假设它包含大厅的 yamls。并且有一个AppDemo带有 java-maven 应用程序的目录

项目/管道.yml:

resources:
- name: project
  type: git
  source:
    uri: {{git-url}}
    branch: master

jobs: 
- name: MavenJob
  serial: true
  plan:
  - get: project
    trigger: true
  - task: mvn-test
    privileged: true
    file: project/test.yml

上面的工作应该定位并触发 test.yml 任务

项目/test.yml:

platform: linux

image_resource:
  type: docker-image
  source:
    repository: maven   # let's hope bin/bash is available there. if no, use sh
    tag: latest

inputs:
  - name: project   # project is your git-repo. all paths are relative to it's location
outputs:
  - name: mvn-output

run:
  path: /bin/bash
  args: 
    - project/test-script.sh:

项目/测试脚本.sh:

_ROOT=$(pwd)
echo "starting test-script from directory: $ROOT"

cd _ROOT/AppDemo
mvn test

如果您想将 maven 作业的输出传递到更远的地方,那么您应该mvn-output稍后在脚本中将所有这些文件复制到目录中。

我还建议使用这个 bash 脚本作为包装器而不是原始的“maven 调用”——它更便于调试整个过程,例如回显路径。

如果出现任何错误,如果容器仍然存在,请尝试劫持它以查看那里实际发生了什么以及文件所在的位置:

fly -t <target> hijack -u <url-of-failed-job-from-your-browser>

希望这可以帮助


推荐阅读