Плагин Fabric8io с Gitlab CI
Я только учусь и плохо знаком с Gitlab, но у меня уже есть некоторые задачи, важные для моей работы. Одним из них является создание проекта Java (этап сборки maven) и копирование артефактов в образ докера с помощью плагина Fabric8io. Я использую Gitlb CI для своей задачи, и то, что я уже могу сделать, - это успешно пройти конвейер этапов maven (сборка, тестирование, развертывание в данный момент) и создать образ докера и отправить его в репозиторий с помощью плагина Fabric8io maven. Но сейчас эти процессы отделены друг от друга. Я потратил несколько дней на поиски решения для добавления артефактов maven в образ докера, но безуспешно. Настройки в pom.xml указывают на файлы репозитория gitlab, но не на артефакты в контейнере maven (приведенный ниже пример взят из моего файла.pom, раздел fabric8io, я просто безуспешно экспериментировал с различными значениями и переменными).
<file>
<source>${project.build.directory}/313test.war</source>
<source>target/313test.war</source>
<outputDirectory>./</outputDirectory>
<destName>testapp.war</destName>
</file>
Был ли у кого-нибудь опыт работы с этим стеком? Есть ли рабочее решение? Заранее спасибо.
1 ответ
Ну, я полагаю, получил это. Использование выполнения команд в.gitlab-ci.yml работает так, как мне нужно:
deploy:
stage: deploy
script:
- mvn clean package docker:build docker:start docker:push
Кроме того, я прокомментировал некоторые теги в pom.xml, поэтому мой раздел сборки теперь выглядит так:
<build>
<!-- <dockerFileDir>${project.basedir}/src/main/docker</dockerFileDir>
<dockerFile>Dockerfile</dockerFile> -->
<assembly>
<descriptorRef>artifact</descriptorRef>
<mode>dir</mode>
<targetDir>/opt/demo/</targetDir>
<!-- <files>
<file>
<source>${project.build.directory}/313test.war</source>
<source>target/313test.war</source>
<outputDirectory>./</outputDirectory>
<destName>testapp.jar</destName>
</file>
</files> -->
</assembly>
</build>
Итак, запуск ls в секции run файла pom.xml показывает файл WAR в каталоге /opt/demo внутри встроенного образа докера
<run>
<cmd>ls -l /opt/demo/</cmd>
<wait>
<time>10000</time>
</wait>
</run>
Спасибо всем)