我刚刚开始学习并且是Gitlab的新手,但是已经有一些对我的工作很重要的任务。其中之一是构建Java项目(Maven构建阶段),并使用Fabric8io插件将工件复制到Docker映像。我正在使用Gitlb CI来完成任务,而我已经可以做的是成功通过maven阶段的管道(此时,构建,测试,部署)并构建docker映像,并使用Fabric8io maven插件将其推送到仓库中。但是现在,这些过程是相互独立的。 我花了几天时间寻找将Maven工件添加到Docker映像的解决方案,但没有成功。 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>
有人对此栈有任何经验吗?有什么可行的解决方案吗? 预先谢谢你。
答案 0 :(得分:0)
好吧,我想知道了。在.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>
因此,在pom.xml文件的run部分运行ls会在内置的docker映像内的/ opt / demo目录中显示一个WAR文件
<run>
<cmd>ls -l /opt/demo/</cmd>
<wait>
<time>10000</time>
</wait>
</run>
谢谢大家)