我刚刚开始学习Gitlab,但已经有了一些对我的工作很重要的任务。其中之一是构建java项目(maven构建阶段(,并使用Fabric8io插件将工件复制到docker映像中。我正在使用Gitlb CI完成我的任务,我已经可以成功地通过maven阶段的管道(此时构建、测试、部署(,构建一个docker映像,并将其推送到Fabric8io maven插件的repo中。但现在这个过程是相互分离的。我花了几天时间寻找将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>
有人对这个堆栈有任何经验吗?有有效的解决方案吗?提前谢谢。
好吧,我想a已经做到了。在.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>
谢谢大家(