3.2. La migration d’un pipeline d’échantillons de Jenkins vers les pipelines OpenShift
Les exemples équivalents suivants vous permettent de migrer vos pipelines de construction, de tester et de déployer des pipelines de Jenkins vers OpenShift Pipelines.
3.2.1. Jenkins pipeline Copier lienLien copié sur presse-papiers!
Envisagez un pipeline Jenkins écrit à Groovy pour la construction, l’essai et le déploiement:
pipeline {
agent any
stages {
stage('Build') {
steps {
sh 'make'
}
}
stage('Test'){
steps {
sh 'make check'
junit 'reports/**/*.xml'
}
}
stage('Deploy') {
steps {
sh 'make publish'
}
}
}
}
3.2.2. Pipeline OpenShift Pipelines Copier lienLien copié sur presse-papiers!
Afin de créer un pipeline dans les pipelines OpenShift équivalent au pipeline Jenkins précédent, vous créez les trois tâches suivantes:
Exemple de fichier de définition de la tâche YAML
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: myproject-build
spec:
workspaces:
- name: source
steps:
- image: my-ci-image
command: ["make"]
workingDir: $(workspaces.source.path)
Exemple de tâche de test YAML fichier de définition
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: myproject-test
spec:
workspaces:
- name: source
steps:
- image: my-ci-image
command: ["make check"]
workingDir: $(workspaces.source.path)
- image: junit-report-image
script: |
#!/usr/bin/env bash
junit-report reports/**/*.xml
workingDir: $(workspaces.source.path)
Exemple Déployez le fichier de définition de la tâche YAML
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: myprojectd-deploy
spec:
workspaces:
- name: source
steps:
- image: my-deploy-image
command: ["make deploy"]
workingDir: $(workspaces.source.path)
Il est possible de combiner les trois tâches de manière séquentielle pour former un pipeline dans les pipelines OpenShift:
Exemple: pipeline OpenShift Pipelines pour la construction, les essais et le déploiement
apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
name: myproject-pipeline
spec:
workspaces:
- name: shared-dir
tasks:
- name: build
taskRef:
name: myproject-build
workspaces:
- name: source
workspace: shared-dir
- name: test
taskRef:
name: myproject-test
workspaces:
- name: source
workspace: shared-dir
- name: deploy
taskRef:
name: myproject-deploy
workspaces:
- name: source
workspace: shared-dir