3.6. Exemples de cas d’utilisation courante


Jenkins et OpenShift Pipelines offrent des capacités pour les cas communs d’utilisation CI/CD, tels que:

  • Compiler, construire et déployer des images à l’aide d’Apache Maven
  • Étendre les capacités de base en utilisant des plugins
  • La réutilisation des bibliothèques partageables et des scripts personnalisés

Il est possible d’utiliser Maven dans les flux de travail Jenkins et OpenShift Pipelines pour compiler, construire et déployer des images. Afin de cartographier votre flux de travail Jenkins existant avec OpenShift Pipelines, considérez les exemples suivants:

Exemple : Compilez et construisez une image et déployez-la dans OpenShift en utilisant Maven dans Jenkins

#!/usr/bin/groovy
node('maven') {
    stage 'Checkout'
    checkout scm

    stage 'Build'
    sh 'cd helloworld && mvn clean'
    sh 'cd helloworld && mvn compile'

    stage 'Run Unit Tests'
    sh 'cd helloworld && mvn test'

    stage 'Package'
    sh 'cd helloworld && mvn package'

    stage 'Archive artifact'
    sh 'mkdir -p artifacts/deployments && cp helloworld/target/*.war artifacts/deployments'
    archive 'helloworld/target/*.war'

    stage 'Create Image'
    sh 'oc login https://kubernetes.default -u admin -p admin --insecure-skip-tls-verify=true'
    sh 'oc new-project helloworldproject'
    sh 'oc project helloworldproject'
    sh 'oc process -f helloworld/jboss-eap70-binary-build.json | oc create -f -'
    sh 'oc start-build eap-helloworld-app --from-dir=artifacts/'

    stage 'Deploy'
    sh 'oc new-app helloworld/jboss-eap70-deploy.json' }
Copy to Clipboard Toggle word wrap

Exemple : Compilez et construisez une image et déployez-la dans OpenShift en utilisant Maven dans OpenShift Pipelines.

apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
  name: maven-pipeline
spec:
  workspaces:
    - name: shared-workspace
    - name: maven-settings
    - name: kubeconfig-dir
      optional: true
  params:
    - name: repo-url
    - name: revision
    - name: context-path
  tasks:
    - name: fetch-repo
      taskRef:
        name: git-clone
      workspaces:
        - name: output
          workspace: shared-workspace
      params:
        - name: url
          value: "$(params.repo-url)"
        - name: subdirectory
          value: ""
        - name: deleteExisting
          value: "true"
        - name: revision
          value: $(params.revision)
    - name: mvn-build
      taskRef:
        name: maven
      runAfter:
        - fetch-repo
      workspaces:
        - name: source
          workspace: shared-workspace
        - name: maven-settings
          workspace: maven-settings
      params:
        - name: CONTEXT_DIR
          value: "$(params.context-path)"
        - name: GOALS
          value: ["-DskipTests", "clean", "compile"]
    - name: mvn-tests
      taskRef:
        name: maven
      runAfter:
        - mvn-build
      workspaces:
        - name: source
          workspace: shared-workspace
        - name: maven-settings
          workspace: maven-settings
      params:
        - name: CONTEXT_DIR
          value: "$(params.context-path)"
        - name: GOALS
          value: ["test"]
    - name: mvn-package
      taskRef:
        name: maven
      runAfter:
        - mvn-tests
      workspaces:
        - name: source
          workspace: shared-workspace
        - name: maven-settings
          workspace: maven-settings
      params:
        - name: CONTEXT_DIR
          value: "$(params.context-path)"
        - name: GOALS
          value: ["package"]
    - name: create-image-and-deploy
      taskRef:
        name: openshift-client
      runAfter:
        - mvn-package
      workspaces:
        - name: manifest-dir
          workspace: shared-workspace
        - name: kubeconfig-dir
          workspace: kubeconfig-dir
      params:
        - name: SCRIPT
          value: |
            cd "$(params.context-path)"
            mkdir -p ./artifacts/deployments && cp ./target/*.war ./artifacts/deployments
            oc new-project helloworldproject
            oc project helloworldproject
            oc process -f jboss-eap70-binary-build.json | oc create -f -
            oc start-build eap-helloworld-app --from-dir=artifacts/
            oc new-app jboss-eap70-deploy.json
Copy to Clipboard Toggle word wrap

Jenkins a l’avantage d’un vaste écosystème de nombreux plugins développés au fil des ans par sa vaste base d’utilisateurs. Il est possible de rechercher et de parcourir les plugins dans l’indice Jenkins Plugin.

Les pipelines OpenShift ont également de nombreuses tâches développées et mises en œuvre par les utilisateurs de la communauté et de l’entreprise. Le hub Tekton offre un catalogue de tâches de pipelines OpenShift réutilisables disponibles au public.

En outre, OpenShift Pipelines intègre de nombreux plugins de l’écosystème Jenkins dans ses capacités de base. L’autorisation est par exemple une fonction critique dans les pipelines Jenkins et OpenShift. Alors que Jenkins assure l’autorisation à l’aide du plugin Stratégie d’autorisation basée sur les rôles, OpenShift Pipelines utilise le système intégré de contrôle d’accès basé sur le rôle d’OpenShift.

3.6.3. Code réutilisable dans Jenkins et OpenShift Pipelines

Les bibliothèques partagées Jenkins fournissent un code réutilisable pour certaines parties des pipelines Jenkins. Les bibliothèques sont partagées entre Jenkinsfiles pour créer des pipelines hautement modulaires sans répétition de code.

Bien qu’il n’y ait pas d’équivalent direct des bibliothèques partagées Jenkins dans OpenShift Pipelines, vous pouvez réaliser des flux de travail similaires en utilisant des tâches du hub Tekton en combinaison avec des tâches et des scripts personnalisés.

Retour au début
Red Hat logoGithubredditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance. Découvrez nos récentes mises à jour.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez le Blog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

Theme

© 2025 Red Hat