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
3.6.1. Exploitation d’un pipeline Maven à Jenkins et OpenShift Pipelines Copier lienLien copié sur presse-papiers!
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' }
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
3.6.2. Étendre les capacités de base de Jenkins et OpenShift Pipelines en utilisant des plugins Copier lienLien copié sur presse-papiers!
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 Copier lienLien copié sur presse-papiers!
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.