具有Gitlab CI的Fabric8io插件

时间:2018-12-09 20:59:01

标签: maven docker gitlab gitlab-ci fabric8-maven-plugin

我刚刚开始学习并且是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>

有人对此栈有任何经验吗?有什么可行的解决方案吗? 预先谢谢你。

1 个答案:

答案 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>

谢谢大家)