Зал CI + MVN - PullRequest
       32

Зал CI + MVN

0 голосов
/ 25 марта 2020

Я пытаюсь создать конвейер, используя Concourse CI, используя Maven. Конвейер должен:

  • Получить код от git.
  • Построить и запустить тест с использованием maven.
  • проект создает отчет html в целевой папке

вышеуказанные шаги выполняются правильно. Вопрос, как получить доступ к выходным данным, то есть к целевой папке, сгенерированной проектом maven.

Я не могу получить доступ к сгенерированной папке и скопировать в требуемую папку для последующего использования.

Файл pipe.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"]

Пожалуйста, помогите мне немного тела.

Заранее спасибо.

1 Ответ

0 голосов
/ 27 марта 2020

Ради простоты и однозначности я переименовал ваше git репо в project. Давайте предположим, что это содержит ямлы конкурса. И есть каталог AppDemo с приложением java -maven

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

, указанное выше задание должно найти и вызвать задачу test.yml

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

, если вы хотите передать результаты задания maven куда-нибудь дальше, затем вам нужно просто скопировать все эти файлы в каталог mvn-output позже в скрипте.

Я бы также рекомендовал использовать этот bash -скрипт в качестве оболочки, а не в виде необработанного "вызова maven" - это более удобно для отладки весь процесс, как вы можете, например, повторяя пути.

в случае любой ошибки, если контейнер еще жив, попробуйте взломать его, чтобы посмотреть, что на самом деле там произошло и где находятся файлы:

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

надеюсь, это поможет

...