当前位置: 首页 > 知识库问答 >
问题:

Fabric8 CD管道应该如何在OpenShift上工作(没有ImageStreams)

陶星波
2023-03-14

我正在努力让F8光盘管道在OpenShift上工作。我使用从Maven构建的F8 Jenkinsfile库下载的Jenkinsfile,步骤为“CanaryReleaseAndLevel”。那里的阶段部署步骤如下所示:

stage('Rollout Staging') {
        kubernetesApply(environment: envStage)
}

我从Kubernetes管道插件中查找了kubernetesApply()的实现。如果调用中不存在文件参数(如此处所示),它将应用在生成时生成的文件“target/classes/META-INF/fabric8/OpenShift.yml”中定义的Kubernetes/OpenShift资源。

在这个文件中(它也是作为工件上传到nexus的,因此我可以很容易地获取它),定义了三个资源:

  • 一个服务
  • 一个部署配置,包含一个Docker映像引用(没有标记),还包含一个ConfigChange触发器,用于监听ImageStreamTag'my-project: date'
  • 一条路

...但是没有图像流。然而,在构建日志上,我看到一个图像流定义显然是在不同的文件上生成的:

[INFO] F8: Found tag on ImageStream my-project tag: sha256:c15b56841387a7e0aea960020ccf2efb48f21bd4d12d826e2cd04a94f4d9d748
[INFO] F8: ImageStream my-project written to /home/jenkins/workspace/my-project-dir/target/my-project-is.yml

但恐怕库伯内特斯永远不会被应用。因此,暂存项目中没有图像流。

在此配置中,临时部署甚至无法部署pod。如果我将映像流手动添加到登台项目中,它将部署,但在出现新构建时从未更新。

我已经更新到最新的织物/詹金斯图像2.2.331,但它似乎也不在这里工作。

我的pom。xml(f8构建所必需的部分):

<project ...>

<modelVersion>4.0.0</modelVersion>

<groupId>my.package</groupId>
<artifactId>myproject/artifactId>
<version>1.0-SNAPSHOT</version>

<properties>
    <fabric8.mode>openshift</fabric8.mode>
    <fabric8.build.strategy>docker</fabric8.build.strategy>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

<build>
    <plugins>
         <plugin>
            <groupId>io.fabric8</groupId>
            <artifactId>fabric8-maven-plugin</artifactId>
            <version>3.2.28</version>
            <configuration>
                <images>
                    <image>
                        <name>fabric8/my-project</name>
                        <build>
                            <dockerFileDir>${project.basedir}/src</dockerFileDir>
                            <dockerFile>Dockerfile</dockerFile>
                        </build>
                    </image>
                </images>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>resource</goal>
                        <goal>build</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>


</project>

所以我想知道:

  • 关于这里的暂存部署的更新,CD管道应该如何工作?
  • 为什么创建这个图像流定义,如果它没有应用。我可能错过了一些配置。

感谢任何洞察力!

共有1个答案

吴开宇
2023-03-14

有没有可能看到你的pom。xml和完整构建?听起来你在使用fabric8 maven插件,对吗?它正在进行S2I二进制构建并生成图像流?听起来好像出了问题,生成的图像流没有包含在您的target/classes/META-INF/fabric8/openshift中。也许吧?

我想知道您的maven目标的顺序是否出现了问题(例如,通常先是fabric8:resource,然后是fabric8:build,然后将ImageStream添加到生成的YAML文件中)

 类似资料:
  • 我本地是windows环境 线上是linux 两边php版本不一样 一个7.2 一个7.3 本地用的phpstudy 我用composer require 安装了一个包 然后composer.json更新了 提交到服务器去 请问这个时候我在服务器是执行composer.update还是 composer install 呢?网上说不要update 能否有大佬给我说明白下。这个compser.jso

  • 在底部将此选项设置为true vs false时,它们将列出结果的差异 在我的EMR配置(在presto-config中)中包含设置为之后,我仍然会根据这个测试查询获得新的结果(并且我的UTC时间戳仍然会自动转换)。 对于启用遗留时间戳行为还需要做些什么有什么建议吗?

  • 我正在运行下面的管道,它为DotNetCore2.2运行“构建+声呐扫描程序分析”阶段 舞台设置如下 我已经按照Sonarqube文档的建议在全局配置中安装了该工具 该dll存在并且权限已分配给Jenkins 该dll是可执行的 在该路径中手动运行时的dll-它运行 提前感谢你的帮助。

  • 我正在开发一个jenkins声明性管道,以自动交付运行在OpenShift3.2上的Spring Boot应用程序。 我的Jenkins实例位于Openshift外部,我使用openshift-pipeline-plugin来执行构建和部署操作。

  • 在我的项目中,我使用了@Configuration、@EnableAutoConfiguration、@ComponentScan和带有注释的重要资源配置。我没有使用@SpringBootApplication,但应用程序在没有@SpringBootApplication注释的情况下成功构建。我不明白为什么不调用@RestController类?

  • 问题内容: 我正在使用 shouldChangeCharactersInRange 作为使用即时类型搜索的方式。 但是我有一个问题,在文本字段实际更新之前 应该 调用 shouldChangeCharactersInRange : 在目标C中,我使用以下方法解决了这个问题: 但是,我尝试用Swift编写此代码: 在获得值之前,该方法仍会被调用? 问题答案: 雨燕4,雨燕5 此方法不使用 注意。使用