首页 > 解决方案 > 带有 Gitlab CI 的 Fabric8io 插件

问题描述

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

有人对这个堆栈有任何经验吗?有没有可行的解决方案?先感谢您。

标签: mavendockergitlabgitlab-cifabric8-maven-plugin

解决方案


好吧,我想我明白了。在 .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 文件的运行部分运行 ls 会在构建的 docker 映像内的 /opt/demo 目录中显示一个 WAR 文件

    <run>
        <cmd>ls -l /opt/demo/</cmd>
            <wait>
                <time>10000</time>
            </wait>
    </run>

感谢大家 )


推荐阅读