2017-03-24 1 views
0

Ich habe Probleme die F8 CD-Pipeline mit OpenShift zu arbeiten. Ich benutze eine Jenkinsfile heruntergeladen von der F8 Jenkinsfile Library für Maven Builds mit Schritten "CanaryReleaseAndStage". Die Bühne deploy Schritt sieht es wie folgt aus:Wie sollte Fabric8 CD-Pipeline auf OpenShift (ohne ImageStreams) funktionieren?

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

ich die Umsetzung der kubernetesApply nachgeschlagen() aus der Kubernetes Pipeline Plugin. Wenn kein Dateiparameter im Aufruf vorhanden ist (wie hier), wendet er die Kubernetes/OpenShift-Ressourcen an, die in der Datei "target/classes/META-INF/fabric8/openshift.yml" definiert sind, die beim Build generiert wird.

In dieser Datei (die auch als Artefakt der Schnittstelle hochgeladen, so kann ich es leicht holen) gibt es drei Ressourcen definiert:

  • A Service
  • A Deployment config ein Docker Bild enthält Referenz (ohne Markierung), auch einen ConfigChange Trigger hört für einen ImageStreamTag enthält 'my-Projekt: latest'
  • A Route

... aber kein Image. Doch auf dem Buildprotokoll sehe ich, dass ein Bild Stromdefinition offenbar auf einer anderen Datei erstellt wurde:

[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 

Aber ich habe Angst, dass man nie zu Kubernetes angewendet wird. Daher gibt es im Staging-Projekt keinen Bildstrom.

In dieser Konfiguration kann die Bereitstellungsbereitstellung den Pod nicht einmal bereitstellen. Wenn ich einen Image-Stream manuell zum Staging-Projekt hinzufüge, wird es zwar bereitgestellt, aber nie aktualisiert, wenn neue Builds auftreten.

Ich habe auf den neuesten Stoff/jenkins Bild 2.2.331 aktualisiert, aber es scheint auch hier nicht zu funktionieren.

Meine pom.xml (Teile wesentlich für f8 Gebäude):

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

So weiß ich möchte:

  • Wie ist das in Bezug auf Updates für die Inszenierung soll CD-Pipeline arbeiten Bereitstellungen hier?
  • Warum wird diese Image-Stream-Definition erstellt, wenn sie nicht angewendet wird? Vermisse ich hier vielleicht etwas Konfiguration.

Danke für jede Einsicht!

Antwort

0

Haben Sie eine Chance, Ihre pom.xml und den vollständigen Build zu sehen? Es klingt wie du fabric8-maven-plugin richtig verwendest? Er macht einen S2I-Binär-Build und generiert einen Image-Stream? Es hört sich einfach so an, als ob etwas schief läuft und der generierte Bild-Stream nicht im Ziel/classes/META-INF/fabric8/openshift.yml enthalten ist.

Ich frage mich, wenn etwas schief läuft in der Reihenfolge Ihrer Maven Ziele oder etwas (zB typischerweise fabric8: Ressource ist zuerst, dann fabric8: bauen, die dann die Imagestream in den generierten YAML-Dateien fügt)

+0

pom.xml hinzugefügt. Ja, ich benutze das F8 Maven Plugin. Ich benutze nicht s2i, sondern die Docker-Build-Strategie, aber es erstellt trotzdem einen s2i Builder-Pod, um das Docker-Image zu erstellen.Das vollständige Protokoll ist zu lang, um es hier hinzuzufügen (selbst nach dem Entfernen aller Maven Download-Sachen). Irgendein besonderes Interessengebiet? –