简体   繁体   中英

Concourse CI + MVN

I am trying to create a pipeline using Concourse CI using Maven. The pipeline should:

  • Get the code from git.
  • Build and run test using maven.
  • the project generates html report in target folder

above steps are executing properly. The question how to access the output ie target folder generated by the maven project.

I am not able to access the generated folder and copy to the required folder for later usage.

File 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

File 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"]

Please some body help me.

Thanks in advance.

For sake of simplicity and unambiguity I renamed your git repo to project . Let's assume it contains concourse's yamls. And there is a directory AppDemo with java-maven app

project/pipeline.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

the job above should locate and trigger the test.yml task

project/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:

project/test-script.sh:

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

cd _ROOT/AppDemo
mvn test

if you want to pass outputs of maven job somewhere further, then you should just copy all those files into mvn-output directory later in the script.

I would also recommend using this bash-script as wrapper rather than raw "maven call" - it's more convenient for debugging the whole process as you can, eg echo'ing paths.

in case of any error, if container still alive, try hijacking into it to see what has actually happened there and where files are located:

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

hope this helps

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM