【问题标题】:Concourse CI + MVN大厅 CI + MVN
【发布时间】:2020-03-25 19:46:00
【问题描述】:

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

  • 从 git 中获取代码。
  • 使用 maven 构建和运行测试。
  • 项目在目标文件夹中生成html报告

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

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

文件 pipeline.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"]

请一些人帮助我。

提前致谢。

【问题讨论】:

  • 您是否尝试劫持进入大厅容器以查看那里发生了什么?
  • 在大厅控制台中显示 Surefire 报告目录:/tmp/build/91460b75/branch-master/AppDemo/target/surefire-reports,但无法在容器中找到 tmp 文件夹。当我第一次运行该工作时,它下载了带有某个名称的图像然后它没有下载,它将存储在主容器中并且无法找到路径,我是大厅的新手,仍在学习中,请您指导我

标签: java maven concourse concourse-pipeline


【解决方案1】:

为了简单和明确起见,我将您的 git 存储库重命名为 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>

希望对你有帮助

【讨论】:

  • 嗨 Random Guy,感谢您的宝贵意见。我能够运行测试并将目标文件夹复制到 maven-output 文件夹。我能够劫持进入容器并对其进行验证。但是每次我运行构建时,下载依赖项都需要更多时间,有没有办法存储然后一些地方可以最大限度地减少时间?再一次然后你
  • @AnjiR 可能最简单的方法是使用 concourse 开箱即用的缓存。您可以将caches: - path: .m2/ 添加到任务的test.yml 中。请注意,值缓存在特定的大厅工作人员上。有一个question dedicated to concourse caching
猜你喜欢
  • 2017-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-07
  • 2022-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多