Utilisation des pipelines Tekton
Tekton Pipelines est un projet open source que vous pouvez utiliser pour configurer et exécuter des pipelines d'intégration continue et Continuous Delivery au sein d'un cluster Kubernetes. Les pipelines Tekton sont définis dans des fichiers yaml, généralement stockés dans un référentiel Git.
{: caption="Tekton*
Tekton fournit un ensemble d'extensions de ressources personnalisées à Kubernetes pour définir des pipelines. Voici les ressources de base de Tekton Pipelines incluses dans ces extensions :
Ressource | Description |
---|---|
Task |
Définit un ensemble d'étapes de génération, telles que la compilation de code, l'exécution de tests, la génération et le déploiement d'images. |
TaskRun |
Instancie une tâche à exécuter avec des entrées, sorties et paramètres d'exécution spécifiques. Vous pouvez démarrer la tâche seule ou dans le cadre d'un pipeline. |
Pipeline |
Définit l'ensemble des tâches qui composent un pipeline. |
PipelineRun |
Instancie un pipeline à exécuter avec des entrées, sorties et paramètres d'exécution spécifiques. |
Vous pouvez tirer parti des fonctions suivantes lorsque vous utilisez des pipelines Tekton:
- Natif en cloud : les pipelines Tekton s'exécutent sur Kubernetes, utilisent des clusters Kubernetes comme type de première classe et utilisent des conteneurs comme blocs de construction.
- Découplé : vous pouvez utiliser un pipeline pour le déploiement sur n'importe quel cluster Kubernetes. Vous pouvez exécuter les tâches qui comprennent un pipeline en isolement. De plus, vous pouvez basculer des ressources (tels des référentiels Git) entre des exécutions de pipeline.
- Typé : vous pouvez changer des implémentations pour des types de ressources spécifiques, tels que des images.
Le projet Tekton Pipelines est une version bêta. Vous devez mettre à jour votre pipeline avec chaque nouvelle version de Tekton. Pour plus d'informations sur la dernière version de Tekton, voir https://github.com/tektoncd/pipeline/releases.
IBM Cloud® Continuous Delivery fournit deux types de pipeline de distribution que vous pouvez utiliser pour générer, tester et déployer vos applications.
- Classic : les pipelines de distribution Classic sont créés sous forme graphique, avec le statut imbriqué dans le diagramme de pipeline. Ces pipelines peuvent s'exécuter sur des agents partagés dans le cloud ou sur des agents privés qui s'exécutent sur votre propre cluster Kubernetes.
- Tekton : les pipelines de distribution Tekton sont créés dans des fichiers yaml qui définissent les pipelines en tant qu'ensemble de ressources Kubernetes. Vous pouvez éditer ces fichiers yaml pour modifier le comportement d'un pipeline. Les pipelines Tekton peuvent s'exécuter sur des agents privés qui s'exécutent sur votre propre cluster. Ils peuvent également s'exécuter sur des agents gérés par IBM sur le cloud public. L'intégration Tekton fournit un tableau de bord que vous pouvez utiliser pour visualiser l'état des exécutions du pipeline Tekton et déclencher de nouvelles exécutions. Il fournit également des mécanismes permettant de spécifier les déclencheurs de pipeline, les définitions de pipeline, l'agent sur lequel le pipeline est exécuté et les propriétés de pipeline.
Les deux types de pipeline isolent les travaux ou les étapes les uns des autres en s'exécutant dans des conteneurs distincts, et en utilisant une image que vous choisissez. Les pipelines Classic et Tekton existent tous deux dans une chaîne d'outils et dépendent de cette chaîne d'outils pour ajouter d'autres intégrations d'outils utilisés dans les processus de construction, de test et de déploiement.
Le 20 novembre 2020, Dockerhub a introduit des limitations de débit sur les extractions d'image anonymes. Cette modification peut avoir un impact sur les utilisateurs qui exécutent des tâches qui font référence à des images hébergées par Dockerhub. Il est recommandé d'utiliser un autre registre, tel qu'IBM Cloud Container Registry.
Prérequis
Avant d'ajouter et d'exécuter un pipeline Tekton, vérifiez que vous disposez des ressources suivantes :
-
Une chaîne d'outils qui contient les intégrations d'outils suivantes :
- Une intégration d'outils de référentiel (telle que l'intégration des outils GitHub) qui contient le code de votre pipeline Tekton, y compris un fichier yaml Tekton. Vous trouverez des exemples de définition de pipeline et de tâches sur GitHub. Pour plus d'informations sur l'utilisation des pipelines Tekton, voir Pipelines Tekton.
- Optionnel. Si vous n'utilisez pas l'agent de pipeline partagé par défaut, vous pouvez utiliser une intégration d'outils d'agent privé Delivery Pipeline qui fait référence à votre cluster Kubernetes. Pour plus d'informations sur les agents privés, voir Installation d'agents privés Delivery Pipeline.
-
Interface de ligne de commande IBM Cloud installée en local.
-
kubectl installé en local.
-
Un cluster Kubernetes (version 1.22 ou ultérieure) tel qu'un cluster IBM Cloud® Kubernetes Service.
La chaîne d'outils et l'intégration d'outils Agent privé Delivery Pipeline doit se trouver dans la même région.
Création d'un Delivery Pipeline pour Tekton à l'aide de la console
Lorsque vous configurez une intégration d'outils de Delivery Pipeline, vous pouvez sélectionner le type de pipeline que vous voulez créer.
-
Si vous n'avez pas de chaîne d'outils, sélectionnez un modèle pour créer une chaîne d'outils. En fonction du modèle utilisé, des zones différentes peuvent être disponibles. Passez en revue les valeurs de zone par défaut et, si nécessaire, modifiez ces paramètres.
-
Si vous avez une chaîne d'outils et que vous y ajoutez cette intégration d'outils, à partir de la console IBM Cloud, cliquez sur l'
Menu > Platform Automation > Toolchains. Sur la page Chaînes d'outils, cliquez sur la chaîne d'outils pour ouvrir sa page de présentation. Vous pouvez également, depuis votre page de présentation de l'application, sur la carte Distribution continue, cliquer sur Afficher la chaîne d'outils. Ensuite, cliquez sur Vue d'ensemble.
-
Ajoutez l'intégration de Delivery Pipeline à votre chaîne d'outils :
a. Cliquez sur Ajouter un outil.
b. Dans la section Intégrations d'outils, cliquez sur Delivery Pipeline.
-
Indiquez un nom pour votre nouveau pipeline.
-
Sélectionnez Tekton pour créer un Delivery Pipeline Tekton. Vous pouvez visualiser les résultats de l'exécution des pipelines Tekton sur un cluster Kubernetes défini, avec un support pour configurer les dépôts de définitions des pipelines, les déclencheurs des pipelines, l'endroit où les pipelines s'exécutent, et de simples secrets.
-
Si vous prévoyez d'utiliser votre pipeline pour déployer une interface utilisateur, cochez la case Afficher les applications dans le menu Afficher l'appli. Toutes les applications créées par votre pipeline sont affichées dans la liste Afficher l'application de la page Présentation de la chaîne d'outils.
-
Cliquez sur Créer une intégration pour ajouter Delivery Pipeline à votre chaîne d'outils.
Configuration d'un Delivery Pipeline pour Tekton à l'aide de la console
-
Dans la page Aperçu de votre chaîne d'outils, sur la carte Pipelines de livraison, cliquez sur le bouton Delivery Pipeline pour ouvrir la page Tekton Delivery Pipeline Overview.
-
Cliquez sur Paramètres. Dans la section Définitions, effectuez les opérations suivantes :
a. Spécifiez le référentiel Git et l'URL contenant la définition du pipeline Tekton et les artefacts associés. Si votre référentiel n'est pas disponible, retournez à la page de présentation de la chaîne d'outils et ajoutez votre référentiel.
b. Sélectionnez la branche de votre référentiel Git que vous souhaitez utiliser ou entrez une étiquette.
c. Indiquez le chemin d'accès à votre définition de pipeline dans le référentiel Git. Vous pouvez faire référence à une définition spécifique dans le même référentiel. Vous pouvez également ajouter plusieurs référentiels de définitions, s'ils sont intégrés à la chaîne d'outils.
d. Sauvegardez vos modifications.
La définition du pipeline est mise à jour automatiquement.
La limite de capacité de calcul du pipeline est de 1 Mo. Si vous rencontrez des erreurs lors de la sauvegarde ou de l'exécution de votre pipeline, vous devrez peut-être réduire la taille de votre définition de pipeline ou la diviser en plusieurs pipelines.
-
Dans la section Agent, sélectionnez l'agent partagé géré par IBM ou l'agent privé à utiliser pour exécuter votre pipeline Tekton. Pour plus d'informations sur les agents privés, voir Utilisation des agents privés Delivery Pipeline.
L'agent privé doit être défini dans la même chaîne d'outils que votre pipeline Tekton.
-
Dans la section des propriétés de l'environnement, cliquez sur Ajouter et sélectionnez un type de propriété pour définir votre propre propriété d'environnement. Par exemple, vous pouvez définir une propriété
API_KEY
qui transmet une clé d'API utilisée par tous les scripts du pipeline pour accéder aux ressources IBM Cloud. Vous pouvez ajouter les types de propriétés suivants :- Enumération : Clé de propriété ayant une valeur qui peut être sélectionnée à partir d'une liste d'options définie par l'utilisateur.
- Valeur sécurisée : Clé de propriété avec une valeur monoligne qui est sécurisée avec le chiffrement AES-128. Cette valeur s'affiche en utilisant l'astérisque. Vous pouvez également cliquer sur l'icône de clé pour sélectionner un secret à partir d'une intégration de coffre (tel que IBM Key Protect), si un tel outil est disponible dans votre chaîne d'outils.
- Valeur texte: Clé de propriété avec une valeur de texte qui peut être une ligne simple ou être multi-lignes. Auparavant, les valeurs multi-lignes étaient prises en charge par un type de propriété Zone de texte distinct.
- Intégration d'outils : Clé de propriété avec une valeur résolue lors de l'exécution à partir d'une intégration d'outils de la chaîne d'outils. Par défaut, la valeur est une représentation de chaîne JSON de l'intégration
d'outils. Une zone ou un sous-ensemble spécifique de l'objet peut être extrait en fournissant une valeur pour le filtre JSON facultatif. Par exemple, si une intégration GitHub est sélectionnée et que le filtre JSON
parameters.repo_url
est spécifié, la valeur correspond à l'URL du référentiel Git qui est configuré dans l'intégration de l'outil lors de l'exécution de la ressourcePipelineRun
.
Vous pouvez accéder à ces propriétés dans vos ressources de pipeline Tekton. Pour plus d'informations sur ces propriétés, voir Environnement et ressources des pipelines Tekton.
Les propriétés peuvent être verrouillées pour éviter qu'elles ne soient remplacées. La tentative de remplacement d'une propriété verrouillée lors de l'exécution entraînera le rejet de la demande d'exécution. Les propriétés verrouillées ne sont pas affichées par défaut dans le panneau latéral d'exécution mais peuvent être affichées en lecture seule en activant l'option'Afficher toutes les propriétés'.
-
Cliquez sur Sauvegarder.
-
Sur la page Présentation de la pipeline, cliquez sur Ajouter pour créer un déclencheur, sélectionnez le type de déclencheur à ajouter et associez le déclencheur à un récepteur d'événements. La liste des programmes d'écoute d'événement disponibles contient les programmes d'écoute définis dans le code du référentiel de pipeline.
Les déclenchements sont basés sur les définitions des déclencheurs Tekton. Git les déclencheurs de repo utilisent l'écouteur d'événement auquel ils sont associés pour extraire des informations de la charge utile de l'événement entrant et créer des ressources Kubernetes. Ces ressources sont appliquées à une ressource
PipelineRun
Tekton.Les exécutions de pipeline déclenchées sont exécutées simultanément, sauf si vous configurez le déclencheur pour sérialiser les exécutions à l'aide de l'option
Limit concurrent runs
. Lorsque cette option est activée, vous pouvez limiter le nombre d'exécutions simultanées pouvant être démarrées par ce déclencheur. Par exemple, si la limite maximale est fixée à 1, un seul pipeline est exécuté à la fois pour ce déclencheur et tous les autres sont mis en file d'attente dans l'état "Waiting". Un maximum de 20 exécutions (5 si vous utilisez IBM Managed Workers) sont mises en attente avant que les demandes suivantes ne soient automatiquement annulées. Par défaut, tous les déclencheurs temporisés sont limités à une exécution simultanée lorsqu'ils utilisent IBM Managed WorkersLorsqu'un déclencheur dépasse sa limite d'exécution simultanée, les nouvelles exécutions de pipeline sont placées dans un état d'attente jusqu'à ce que la capacité devienne disponible. Si vous le souhaitez, ce comportement peut être modifié de manière à ce que seule l'exécution la plus récente puisse être en état d'attente et que les autres exécutions soient automatiquement annulées. Cela peut être utile, par exemple, pour les déclencheurs Git, si vous ne souhaitez construire que la livraison la plus récente lorsque plusieurs exécutions sont déclenchées dans un court laps de temps. Pour activer cette fonction, un interrupteur "Limit to one waiting run" est disponible dans le panneau de configuration du déclencheur, qui peut également être défini via l'API à l'aide de la propriété
limit_waiting_runs
(voir la documentation de l'API). Notez que ce paramètre ne s'applique qu'aux courses en état d'attente et n'affecte pas les courses actives.Les déclencheurs manuels sont exécutés lorsque vous cliquez sur le bouton Exécuter du pipeline, puis sélectionnez le déclencheur.
Les déclencheurs de référentiel Git sont exécutés lorsque le type d'événement Git spécifié se produit pour le référentiel Git et la branche spécifiés.
Vous pouvez accéder au contenu des webhooks qui est fourni à un déclencheur Git à partir de vos ressources de pipeline Tekton. Bien que les zones exactes soient propres au référentiel, la syntaxe générale pour le contenu des webhooks est
$(event.payloadFieldName)
. Avant de créer un webhook, vous devez autoriser l'accès à Git Admin pour l'intégration Git correspondante. Pour autoriser l'accès à Git Admin, configurez et sauvegardez à nouveau l'intégration Git.Les déclencheurs temporisés s'exécutent à une heure programmée définie par la valeur CRON. L'expression CRON pour les déclencheurs temporisés est basée sur la syntaxe crontab d'UNIX et est une séquence de cinq champs d'heure et de date :
minute
,hour
,day of the month
,month
, etday of the week
. Ces zones sont séparées par des espaces au formatX X X X X
. La fréquence maximale d'un déclencheur temporisé est une fois toutes les cinq minutes. Les exemples suivants illustrent des chaînes qui utilisent différentes fréquences temporisées :*/5 * * * *
- Le déclencheur s'exécute toutes les 5 minutes.0 * * * *
- Le déclencheur s'exécute au début de chaque heure.0 9 * 1 MON-FRI
- Le déclencheur s'exécute à 9 heures tous les jours de la semaine de janvier.0 * * NOV,DEC 1
- Le déclencheur s'exécute toutes les heures les lundis de novembre et de décembre.
Les déclencheurs de webhook générique sont exécutés lorsqu'une demande POST qui est configurée avec la valeur du secret est transférée à l'URL du webhook générique. Les déclencheurs de webhook générique fournissent une URL de webhook unique pour les demandes POST.
Etant donné que l'interface utilisateur de PipelineRun ne masque pas les valeurs de contenu de webhook générique dans la section du contenu de l'événement, n'incluez pas de données sensibles dans le contenu. A la place, sécurisez les données requises par un webhook générique en utilisant des propriétés de déclenchement, telles que des mots de passe ou des secrets de clé d'API.
Vous pouvez sécuriser les déclencheurs de webhook générique pour qu'ils fonctionnent avec Git, un webhook sortant Slack, un webhook Artifactory, etc., à l'aide d'une des méthodes suivantes :
- Correspondances de jeton (Token Matches) pour comparer le jeton sauvegardé au jeton transféré dans la demande POST. Les sources de jeton prises en charge comprennent un en-tête, une requête ou un contenu. Les correspondances de jeton sont utilisées par les webhooks GitLab et les webhooks sortants Slack.
- Correspondances de prétraitement de contenu (Payload Digest Matches) pour comparer la signature et la valeur de hachage générée à partir du contenu pré-traité à l'aide d'une méthode HMAC hex digest avec le jeton sauvegardé. Les sources de signature prises en charge peuvent inclure un en-tête, une requête ou un contenu. Les utilisateurs doivent indiquer un algorithme de prétraitement (digest). Les correspondances de prétraitement de contenu sont utilisées par les webhooks GitHub.
- La validation de tâche Tekton (Tekton Task Validation) nécessite que les utilisateurs valident la demande du webhook dans leurs tâches Tekton.
Indiquez les valeurs suivantes pour utiliser des déclencheurs de webhook générique avec des webhooks GitHub :
- Sécurisation :
Payload Digest Matches
- Source de la signature :
Header
- Nom de clé d'en-tête :
X-Hub-Signature
- Algorithme de prétraitement :
sha1
.
Indiquez les valeurs suivantes pour utiliser des déclencheurs de webhook générique avec des webhooks GitLab :
- Sécurisation :
Token Matches
- Source du jeton :
Header
- Nom de clé d'en-tête :
X-Gitlab-Token
Indiquez les valeurs suivantes pour utiliser des déclencheurs de webhook générique avec des webhooks sortants Slack :
- Sécurisation :
Token Matches
- Source du jeton :
Payload
- Nom de la propriété JSON / clé de formulaire :
token
L'exemple suivant présente comment utiliser la commande curl avec un webhook générique sécurisé avec une règle
Token Matches
:{: caption="
curl -X POST \ https://devops-api.us-south.devops.cloud.ibm.com/v1/tekton-webhook/588236be-749b-4c67-ae57-a561abbbc9a8/run/7e82880e-4223-4c98-8ca9-ef6df36bb6dc \ -H 'Content-Type: application/json' \ -H 'token: 48a0f92c0932890048596906a22ae189c48c5619fbcf9600' \ -d '{ "somekey": "somevalue" }'
Pour obtenir les valeurs de contenu dans la définition de pipeline, spécifiez un paramètre Triggerbinding avec une valeur dérivée de l'événement :
apiVersion: tekton.dev/v1beta1 kind: TriggerBinding metadata: name: binding spec: params: - name: somekey value: $(event.somekey)
Sauvegardez vos modifications.
En outre, les déclencheurs génériques de webhook permettent de transmettre des propriétés dans le corps de la demande de webhook. Cela permet de remplacer les propriétés du site PipelineRun qui est déclenché par le webhook, ou de transmettre des propriétés supplémentaires qui complètent les propriétés du pipeline/déclencheur utilisées dans le site PipelineRun.
Si vous devez transmettre des données sensibles dans les propriétés de la charge utile, telles que des mots de passe ou des secrets de clés API, vous devez utiliser le type de propriété
SECURE
pour ces propriétés afin qu'elles ne soient pas affichées en texte clair dans l'interface utilisateur.En outre, une description facultative peut être transmise dans le corps de la demande, qui décrit le site PipelineRun déclenché et qui est affichée dans l'interface utilisateur lorsque les détails du site PipelineRun sont consultés dans un navigateur.
L'exemple suivant montre comment utiliser la commande curl avec un webhook générique en transmettant une propriété textuelle, une propriété sécurisée et une description :
curl -X POST \ https://devops-api.us-south.devops.cloud.ibm.com/v1/tekton-webhook/588236be-749b-4c67-ae57-a561abbbc9a8/run/7e82880e-4223-4c98-8ca9-ef6df36bb6dc \ -H 'Content-Type: application/json' \ -H 'token: 48a0f92c0932890048596906a22ae189c48c5619fbcf9600' \ -d '{ "description":"This text can be used to describe the PipelineRun that will be triggered by this request.", "properties":[ {"name":"mytextprop","type":"TEXT","value":"my text value"}, {"name":"mysecureprop","type":"SECURE","value":"mysecret"} ] }'
Configuration des déclencheurs Delivery Pipeline pour les pipelines Tekton
Vous pouvez configurer des déclencheurs pour les pipelines Tekton en fonction de divers événements dans votre Git repo. Filtrez les déclencheurs Git en utilisant les options suivantes :
- Branche: Déclencher le pipeline pour une branche spécifique du repo sélectionné lorsque l'événement spécifié se produit.
- Modèle: Déclencher le pipeline sur la base d'une correspondance globale avec les tags et les noms de branches dans le repo sélectionné lorsque l'événement spécifié se produit.
- Filtre CEL: Déclencher le pipeline lorsque l'événement correspond au filtre CEL (Common Expression Language) fourni.
Utilisez les options Branche et Motif pour spécifier des événements tels que " commit push
, " pull request opened
, " updated
ou " closed
.
Vous pouvez également spécifier des événements de demande d'extraction en modifiant l'option Inclure les événements de demande d'extraction de brouillon pour autoriser ou ignorer les déclenchements de pipeline pour les demandes
d'extraction de brouillon. De même, vous pouvez spécifier si vous souhaitez autoriser les déclenchements de pipeline pour les demandes de téléchargement provenant de dépôts forkés en utilisant la case à cocher Inclure les événements de demandes de téléchargement provenant de dépôts forkés.
En outre, vous pouvez sélectionner l'option Filtres d'étiquettes pour activer le filtrage basé sur les étiquettes des demandes de retrait selon des critères définis par l'utilisateur dans le tableau des filtres.
L'option de filtre CEL prend en charge des cas d'utilisation plus avancés, tels que la mise en correspondance avec d'autres champs dans la charge utile de l'événement. Cette option prend en charge les événements "push", tous les événements "pull request", les événements "issues", les événements "issue comments" et les événements "release". Cette option est également disponible en tant que fonctionnalité facultative sur le déclencheur générique de webhook pour permettre le filtrage des événements sur la base de la charge utile du webhook.
Vue d'ensemble du CEL
CEL est un langage d'expression puissant et flexible conçu pour évaluer des conditions et effectuer des validations de manière concise et lisible. La CEL convient parfaitement aux cas d'utilisation qui nécessitent une logique conditionnelle complexe, comme le filtrage d'événements.
Dans le pipeline Tekton, l'option CEL est introduite pour fournir un filtrage d'événements plus puissant et plus flexible. La charge utile du webhook est évaluée par rapport à l'expression CEL fournie par l'utilisateur. Si l'expression CEL
est évaluée à true
, l'exécution du pipeline est déclenchée.
Les fonctions suivantes sont prises en charge par le CEL :
- Opérateurs arithmétiques (
+
,-
,*
,/
,%
) - Opérateurs de comparaison (
=
,!=
,<
,>
,<=
,>=
) - Opérateurs logiques (
&&
,||
) - Opérateurs de chaîne (
contains
,matches
,startsWith
,endsWith
) - Opérateurs de collection (
in
,!in
) - Variables (se référer aux variables directement par leur nom)
- Littéraux (prise en charge des littéraux tels que les chaînes de caractères, les nombres, les booléens et les nullités)
CEL comprend les extensions suivantes, qui apportent des fonctionnalités supplémentaires au langage CEL de base :
Sets extension
pour prendre en charge des opérations avancées sur les ensembles et offrir une plus grande souplesse dans le filtrage des événements. Pour plus d'informations sur cette extension, voir Sets.matchesGlob
pour assurer la compatibilité lors de la conversion du champ de motif existant vers la nouvelle option de filtre CEL. L'opérateur natif CELmatches
est recommandé pour les correspondances d'expressions régulières plus avancées.
Pour plus d'informations sur CEL, voir la documentation CEL.
Passage au CEL
Suivez les étapes suivantes pour convertir votre sélection de filtrage d'événements existante en une expression CEL :
-
Modifiez le déclencheur Git que vous souhaitez convertir.
-
Dans la section Déclenchement sur, sélectionnez l'option FiltreCEL.
{: caption="
Les éléments suivants sont automatiquement convertis en une expression CEL équivalente :
- Branche ou motif
- Événements, tels que
commit push
,pull request opened
,updated
, etclosed
- Inclure les projets d'événements de demande d'extraction
- Inclure les événements des demandes de tirage des forks
- Filtres de libellé
{: caption="
L'expression CEL générée est inscrite dans un champ de la zone de texte, que vous pouvez modifier si nécessaire.
Comme il n'existe pas de filtres sur les déclencheurs génériques Webhook pour la conversion, la conversion en filtre CEL ne s'applique qu'aux déclencheurs Git.
Si vous enregistrez le déclencheur avec l'option CEL sélectionnée, il remplace les événements précédemment sélectionnés par l'expression CEL. Si vous passez à l'option Branche ou Motif après avoir sauvegardé l'option de filtre CEL, vos sélections d'événements précédentes ne sont pas sauvegardées. La conversion de l'option CEL à l'option Branch ou Pattern n'est pas possible.
Exemples d'expression de la CEL
Les exemples suivants sont des expressions CEL courantes pour chacun des types Git pris en charge : GitHub
, GitLab
et BitBucket
. Vous pouvez copier et modifier ces exemples pour répondre à vos besoins.
GitHub exemples:
S'exécute lorsqu'une demande d'extraction est ouverte ou mise à jour sur la branche spécifiée :
header['x-github-event'] == 'pull_request' &&
(body.action == 'opened' || body.action == 'synchronize') &&
body.pull_request.base.ref == 'main'
S'exécute lorsqu'un commit est poussé vers la branche spécifiée :
header['x-github-event'] == 'push' && body.ref == 'refs/heads/main'
Exécuter lorsqu'un commit est poussé vers la branche spécifiée mais l'ignorer lorsque le message de commit contient une chaîne de caractères spécifique :
header['x-github-event'] == 'push' &&
body.ref == 'refs/heads/main' &&
!body.head_commit.message.contains("skip run")
Exécuté lorsqu'un commentaire contenant la chaîne spécifiée est ajouté à une demande d'extraction :
header['x-github-event'] == 'issue_comment' &&
body.action == 'created' && has(body.issue.pull_request) &&
body.comment.body.contains('/lgtm')
Exécuté lorsqu'une question est créée avec l'étiquette spécifiée :
header['x-github-event'] == 'issues' &&
body.action == 'opened' &&
body.issue.labels.exists(label, label.name == 'urgent')
GitLab exemples:
S'exécute lorsqu'une demande de fusion est ouverte ou mise à jour sur la branche spécifiée :
header['x-gitlab-event'] == 'Merge Request Hook' &&
(body.object_attributes.action == 'open' || body.object_attributes.action == 'update') &&
body.object_attributes.target_branch == 'main'
S'exécute lorsqu'un commit est poussé vers la branche spécifiée :
header['x-gitlab-event'] == 'Push Hook' && body.ref == 'refs/heads/main'
Exécuter lorsqu'un commit est poussé vers la branche spécifiée mais l'ignorer lorsque le message de commit contient une chaîne de caractères spécifique :
header['x-gitlab-event'] == 'Push Hook' &&
body.ref == 'refs/heads/main' &&
!body.object_attributes.last_commit.message("skip run")
Exécuté lorsqu'un commentaire contenant la chaîne spécifiée est ajouté à une demande de fusion :
header['x-gitlab-event'] == 'Note Hook' &&
body.object_attributes.noteable_type == 'MergeRequest' &&
body.object_attributes.action == 'create' &&
body.object_attributes.note.contains('/lgtm')
Exécuté lorsqu'une question est créée avec l'étiquette spécifiée :
header['x-gitlab-event'] == 'Issue Hook' &&
(body.object_attributes.action == 'open') &&
body.object_attributes.labels.exists(label, label.name == 'urgent')
BitBucket exemples:
S'exécute lorsqu'une demande d'extraction est ouverte ou mise à jour sur la branche spécifiée :
(header['x-event-key'] == 'pullrequest:created' || header['x-event-key'] == 'pullrequest:updated') &&
body.pullrequest.destination.branch.name == 'main'
S'exécute lorsqu'un commit est poussé vers la branche spécifiée :
header['x-event-key'] == 'repo:push' && body.push.changes[0].new.name == 'main'
Exécuter lorsqu'un commit est poussé vers la branche spécifiée mais l'ignorer lorsque le message de commit contient une chaîne de caractères spécifique :
header['x-event-key'] == 'repo:push' &&
body.push.changes[0].new.name == 'main' &&
!body.push.changes[0].commits[0].message("skip run")
Exécuté lorsqu'un commentaire contenant la chaîne spécifiée est ajouté à une demande d'extraction :
header['x-event-key'] == 'pullrequest:comment_created' &&
body.comment.content.raw.contains('/lgtm')
Exécuté lorsqu'une question est créée avec l'étiquette spécifiée :
header['x-event-key'] == 'issue:created' &&
body.issue.kind == 'bug'
Filtres
Les filtres permettent aux utilisateurs d'affiner les demandes de retrait en fonction de critères spécifiques. Le champ filtre permet actuellement de spécifier des étiquettes dans les demandes d'extraction, contrôlant ainsi l'exécution du pipeline en fonction de leur présence ou de leur absence. Cependant, il ne déclenche pas de pipeline lorsque des étiquettes sont ajoutées ou supprimées; il vérifie plutôt les étiquettes du PR avant d'autoriser l'exécution du pipeline.
Mode de fonctionnement
- Si un événement PR se produit (comme l'ajout d'un nouveau commit), le pipeline vérifie les étiquettes sur le PR.
- Si le PR remplit les conditions de l'étiquette (par exemple, s'il porte l'étiquette "approuvé"), la canalisation fonctionne.
- Si le PR ne remplit pas les conditions de l'étiquette, le pipeline ne s'exécutera pas.
Exemple de configuration
La capture d'écran ci-dessous montre un exemple où le déclencheur est configuré pour les étiquettes "approuvé" et "révisé".
- Le pipeline PR ne sera déclenché que si les deux étiquettes sont présentes.
- Si l'une de ces étiquettes est manquante, le pipeline ne fonctionnera pas.

Vérification de la charge utile de l'événement
Lorsque vous écrivez des expressions CEL pour le filtrage d'événements, vous devez comprendre la structure et le contenu de la charge utile du webhook par rapport à laquelle l'expression sera évaluée. Vous pouvez inspecter la charge utile d'une exécution existante à partir de la page Détails de l'exécution du pipeline.
Pour afficher les données utiles de l'événement, rendez-vous sur la page des détails de l'exécution du pipeline et cliquez sur Afficher le contexte. Vous pouvez consulter la charge utile brute du webhook qui a déclenché l'exécution du pipeline et confirmer les champs pertinents pour vos expressions CEL afin qu'ils correspondent aux conditions que vous souhaitez.
Création d'un Delivery Pipeline pour Tekton avec l'API
-
Obtenez un jeton bearer IAM. Sinon, si vous utilisez un SDK, obtenez une clé d'API IAM et définissez les options client à l'aide de variables d'environnement.
export CD_TEKTON_PIPELINE_APIKEY={api_key}
-
Déterminez la région et l'ID de la chaîne d'outils à laquelle vous souhaitez ajouter l'intégration d'outils Delivery Pipeline.
-
Ajoutez l'intégration des outils Delivery Pipeline à la chaîne d'outils.
curl -X POST \ https://api.{region}.devops.cloud.ibm.com/toolchain/v2/toolchains/{toolchain_id}/tools \ -H 'Authorization: Bearer {iam_token}' \ -H 'Accept: application/json` \ -H 'Content-Type: application/json' \ -d '{ "tool_type_id": "pipeline", "parameters": { "name": "{tool_integration_name}", "type" : "tekton" } }'
const CdToolchainV2 = require('@ibm-cloud/continuous-delivery/cd-toolchain/v2'); ... (async () => { const toolchainService = CdToolchainV2.newInstance(); const pipelinePrototypeModel = { toolchainId: {toolchain_id}, toolTypeId: 'pipeline', name: {tool_integration_name}, type: "tekton" }; const pipelineTool = await toolchainService.createTool(pipelinePrototypeModel); })();
import ( "github.com/IBM/continuous-delivery-go-sdk/cdtoolchainv2" ) ... toolchainClientOptions := &cdtoolchainv2.CdToolchainV2Options{} toolchainClient, err := cdtoolchainv2.NewCdToolchainV2UsingExternalConfig(toolchainClientOptions) createPipelineToolOptions := toolchainClient.NewCreateToolOptions({toolchain_id}, "pipeline") createPipelineToolOptions.SetName({tool_integration_name}) createPipelineToolOptions.SetType("tekton") pipelineTool, response, err := toolchainClient.CreateTool(createPipelineToolOptions)
from ibm_continuous_delivery.cd_toolchain_v2 import CdToolchainV2 ... toolchain_service = CdToolchainV2.new_instance() pipeline_tool = toolchain_service.create_tool( name = {tool_integration_name}, toolchain_id = {toolchain_id}, tool_type_id = "pipeline", type = "tekton" )
import com.ibm.cloud.continuous_delivery.cd_toolchain.v2.CdToolchain; import com.ibm.cloud.continuous_delivery.cd_toolchain.v2.model.*; ... CdToolchain toolchainService = CdToolchain.newInstance(); CreateToolOptions createPipelineToolOptions = new CreateToolOptions.Builder() .name({tool_integration_name}) .toolchainId({toolchain_id}) .toolTypeId("pipeline") .type("tekton") .build(); Response<ToolchainToolPost> response = toolchainService.createTool(createPipelineToolOptions).execute(); ToolchainToolPost pipelineTool = response.getResult();
Le tableau suivant répertorie et décrit chacune des variables utilisées à l'étape précédente.
Variables pour ajouter l'intégration de l'outil Delivery Pipeline avec l'API Variable Description {region}
Région dans laquelle réside la chaîne d'outils, par exemple, us-south
.{tool_integration_name}
Nom de votre intégration d'outils, par exemple, ci-pipeline
.{toolchain_id}
ID de la chaîne d'outils à laquelle ajouter l'intégration d'outils. {iam_token}
Un jeton de support IAM valide. -
Configurez Delivery Pipeline pour utiliser des agents gérés publics dans les régions spécifiées.
curl -X POST \ https://api.{region}.devops.cloud.ibm.com/pipeline/v2/tekton_pipelines \ -H 'Authorization: Bearer {iam_token}' \ -H 'Accept: application/json` \ -H 'Content-Type: application/json' \ -d '{ "id": "{pipeline_id}", "worker": { "id": "public" } }'
const CdTektonPipelineV2 = require('@ibm-cloud/continuous-delivery/cd-tekton-pipeline/v2'); ... (async () => { const tektonService = CdTektonPipelineV2.newInstance(); const workerIdentityModel = { id: 'public', }; const params = { id: {pipeline_id}, worker: workerIdentityModel, }; const res = await tektonService.createTektonPipeline(params); })();
import { "github.com/IBM/continuous-delivery-go-sdk/cdtektonpipelinev2" } ... cdTektonPipelineOptions := &cdtektonpipelinev2.CdTektonPipelineV2Options{} pipelineSvc, err = cdtektonpipelinev2.NewCdTektonPipelineV2UsingExternalConfig(cdTektonPipelineOptions) createTektonPipelineOptions := pipelineSvc.NewCreateTektonPipelineOptions( {pipeline_id} ) workerIdentityModel := &cdtektonpipelinev2.WorkerIdentity{ ID: core.StringPtr("public"), } createTektonPipelineOptions.SetWorker(workerIdentityModel) tektonPipeline, response, err := pipelineSvc.CreateTektonPipeline(createTektonPipelineOptions)
from ibm_continuous_delivery.cd_tekton_pipeline_v2 import CdTektonPipelineV2 ... pipeline_service = CdTektonPipelineV2.new_instance() worker_identity_model = { 'id': 'public', } response = pipeline_service.create_tekton_pipeline( id = {pipeline_id}, worker = worker_identity_model ) tekton_pipeline = response.get_result()
import com.ibm.cloud.continuous_delivery.cd_tekton_pipeline.v2.CdTektonPipeline; import com.ibm.cloud.continuous_delivery.cd_tekton_pipeline.v2.model.*; ... CdTektonPipeline pipelineSvc = CdTektonPipeline.newInstance(); WorkerIdentity workerIdentityModel = new WorkerIdentity.Builder() .id("public") .build(); CreateTektonPipelineOptions createTektonPipelineOptions = new CreateTektonPipelineOptions.Builder() .id({pipeline_id}) .worker(workerIdentityModel) .build(); Response<TektonPipeline> response = pipelineSvc.createTektonPipeline(createTektonPipelineOptions).execute(); TektonPipeline tektonPipeline = response.getResult();
Le tableau suivant répertorie et décrit chacune des variables utilisées à l'étape précédente.
Variables pour configurer le Delivery Pipeline avec l'API Variable Description {region}
Région dans laquelle réside la chaîne d'outils, par exemple, us-south
.{pipeline_id}
ID du pipeline renvoyé à l'étape précédente où l'intégration de l'outil de pipeline a été créée. {iam_token}
Un jeton de support IAM valide.
Pour plus d'informations sur l'API Delivery Pipeline, voir la documentation de l'API.
Création d'un Delivery Pipeline pour Tekton avec Terraform
-
Pour installer l'interface de ligne de commande de Terraform et configurer le plug-in IBM Cloud Provider pour Terraform, suivez le tutoriel d'initiation à Terraform sur IBM Cloud®.
-
Créez un fichier de configuration Terraform nommé
main.tf
. Dans ce fichier, ajoutez la configuration pour créer un pipeline en utilisant le langage de configuration HashiCorp. Pour plus d'informations sur l'utilisation de ce langage de configuration, voir la documentation Terraform.Un pipeline doit appartenir à une chaîne d'outils. Vous pouvez également créer des chaînes d'outils en utilisant Terraform.
L'exemple suivant crée une chaîne d'outils et un pipeline à l'aide des ressources Terraform spécifiées.
data "ibm_resource_group" "group" { name = "default" } resource "ibm_cd_toolchain" "my_toolchain" { name = "terraform_toolchain" resource_group_id = data.ibm_resource_group.group.id } resource "ibm_cd_toolchain_tool_pipeline" "my_pipeline_tool" { parameters { name = "terraform-pipeline-integration" } toolchain_id = ibm_cd_toolchain.my_toolchain.id } resource "ibm_cd_tekton_pipeline" "my_tekton_pipeline" { worker { id = "public" } pipeline_id = ibm_cd_toolchain_tool_pipeline.my_pipeline_tool.tool_id }
Pour plus d'informations sur les ressources
ibm_cd_toolchain_tool_pipeline
etibm_cd_tekton_pipeline
, voir les détails de référence des arguments dans la documentation du registre Terraform. -
Initialisez l'interface de ligne de commande Terraform, si nécessaire.
terraform init
-
Créez un plan d'exécution Terraform. Ce plan récapitule toutes les actions qui doivent être exécutées pour créer une chaîne d'outils.
terraform plan
-
Appliquer le plan d'exécution Terraform. Terraform prend toutes les actions requises pour créer la chaîne d'outils.
terraform apply
Affichage d'un Delivery Pipeline pour Tekton
Vous pouvez afficher un pipeline à l'aide de l'interface utilisateur de la console, de l'API ou de Terraform.
Affichage d'un Delivery Pipeline à l'aide de la console
La page de présentation de Tekton Delivery Pipeline affiche une table vide jusqu'à ce qu'au moins un déclencheur soit ajouté. Une fois que les exécutions de pipeline Tekton ont eu lieu (manuellement ou à la suite d'événements externes), la
table affiche des données sur les exécutions récentes associées à chaque déclencheur du pipeline. Chaque ligne affiche des informations sur un déclencheur unique et affiche un graphique des exécutions récentes associées à ce déclencheur.
Des informations telles que la réussite ou l'échec de ces exécutions et l'heure à laquelle l'exécution la plus récente s'est produite sont également affichées. Vous pouvez également effectuer des actions pour chaque déclencheur: exécuter
le déclencheur manuellement, le marquer comme favori, éditer le déclencheur, l'activer ou le désactiver, ou le supprimer. Vous pouvez également cliquer sur l'un des éléments du graphique pour examiner les détails de ce PipelineRun
individuel. Vous pouvez également cliquer sur un nom de déclencheur pour ouvrir la page PipelineRuns à chaque PipelineRun
associé à ce déclencheur. Des informations connexes telles que le statut, le déclencheur et la durée de
chaque PipelineRun
sont également disponibles.
Les exécutions de pipeline peuvent avoir l'un des états suivants :
- En attente :
PipelineRun
est demandé. - En cours d'exécution :
PipelineRun
s'exécute dans le cluster. - Réussite :
PipelineRun
s'est correctement exécuté dans le cluster. - Echec :
PipelineRun
a échoué. Consultez le fichier journal de l'exécution pour déterminer la cause de l'échec. - Mis en file d'attente :
PipelineRun
est accepté pour traitement et s'exécute lorsque la capacité de l'agent est disponible. - En attente :
PipelineRun
est en attente de mise en file d'attente. - Annulé :
PipelineRun
a été annulé par le système ou par l'utilisateur. Le système annule unPipelineRun
lorsque le nombre de courses en attente dépasse la limite autorisée. - Erreur :
PipelineRun
contient des erreurs qui ont empêché son application sur le cluster. Pour plus d'informations sur la cause de l'erreur, voir les détails d'exécution.
Pour des informations détaillées sur une exécution sélectionnée, cliquez sur une ligne de la table pour afficher la définition Task
et les étapes de chaque définition PipelineRun
. Vous pouvez également afficher le
statut, les journaux et les détails de chaque définition et étape de la ressource Task
, ainsi que le statut général de la définition PipelineRun
.
La durée de conservation de PipelineRuns et de leurs journaux dépend du plan sélectionné pour l'instance de service Continuous Delivery. Les pipelines de Tekton dans le cadre du plan Professional sont conservés pendant un an. Les pipelines
Tekton du plan Lite sont conservés pendant 30 jours. Pour conserver les PipelineRuns
au-delà de la durée de conservation, dans la section PipelineRuns, sélectionnez Actions > Télécharger** pour télécharger
un fichier .zip.
Affichage d'un Delivery Pipeline avec l'API
-
Obtenez un jeton bearer IAM. Sinon, si vous utilisez un SDK, obtenez une clé d'API IAM et définissez les options client à l'aide de variables d'environnement.
export CD_TEKTON_PIPELINE_APIKEY={api_key}
-
Obtenez les données du pipeline.
curl -X GET \ https://api.{region}.devops.cloud.ibm.com/pipeline/v2/tekton_pipelines/{pipeline_id} \ -H 'Authorization: Bearer {iam_token}' \ -H 'Accept: application/json`
const CdTektonPipelineV2 = require('@ibm-cloud/continuous-delivery/cd-tekton-pipeline/v2'); ... (async () => { const pipelineSvc = CdTektonPipelineV2.newInstance(); const params = { id: {pipeline_id}, }; const res = await pipelineSvc.getTektonPipeline(params); })();
import { "github.com/IBM/continuous-delivery-go-sdk/cdtektonpipelinev2" } ... cdTektonPipelineOptions := &cdtektonpipelinev2.CdTektonPipelineV2Options{} pipelineSvc, err = cdtektonpipelinev2.NewCdTektonPipelineV2UsingExternalConfig(cdTektonPipelineOptions) getTektonPipelineOptions := pipelineSvc.NewGetTektonPipelineOptions( {pipeline_id} ) tektonPipeline, response, err := pipelineSvc.GetTektonPipeline(getTektonPipelineOptions)
from ibm_continuous_delivery.cd_tekton_pipeline_v2 import CdTektonPipelineV2 ... pipeline_service = CdTektonPipelineV2.new_instance() response = pipeline_service.get_tekton_pipeline( id = {pipeline_id} ) tekton_pipeline = response.get_result()
import com.ibm.cloud.continuous_delivery.cd_tekton_pipeline.v2.CdTektonPipeline; import com.ibm.cloud.continuous_delivery.cd_tekton_pipeline.v2.model.*; ... CdTektonPipeline pipelineSvc = CdTektonPipeline.newInstance(); GetTektonPipelineOptions getTektonPipelineOptions = new GetTektonPipelineOptions.Builder() .id({pipeline_id}) .build(); Response<TektonPipeline> response = pipelineSvc.getTektonPipeline(getTektonPipelineOptions).execute(); TektonPipeline tektonPipeline = response.getResult();
Le tableau suivant répertorie et décrit chacune des variables utilisées à l'étape précédente.
Variable | Description |
---|---|
{region} |
Région dans laquelle réside le pipeline, par exemple, us-south . |
{pipeline_id} |
L'identifiant de la canalisation que vous souhaitez visualiser. |
{iam_token} |
Un jeton de support IAM valide. |
Affichage d'un Delivery Pipeline avec Terraform
-
Localisez le fichier Terraform (par exemple,
main.tf
) qui contient le blocresource
pour le pipeline existant. -
Ajoutez un bloc
output
au fichier Terraform, s'il ne contient pas déjà de bloc.L'
resource
de l'exemple suivant décrit un pipeline existant. Le blocoutput
demande à Terraform de générer les attributs de la ressource spécifiée.data "ibm_resource_group" "group" { name = "default" } resource "ibm_cd_toolchain" "my_toolchain" { name = "terraform_toolchain" resource_group_id = data.ibm_resource_group.group.id } resource "ibm_cd_toolchain_tool_pipeline" "my_pipeline_tool" { parameters { name = "terraform-pipeline-integration" } toolchain_id = ibm_cd_toolchain.my_toolchain.id } resource "ibm_cd_tekton_pipeline" "my_tekton_pipeline" { worker { id = "public" } pipeline_id = ibm_cd_toolchain_tool_pipeline.my_pipeline_tool.tool_id } output "my_tekton_pipeline_attributes" { value = ibm_cd_tekton_pipeline.my_tekton_pipeline }
Pour plus d'informations sur les ressources
ibm_cd_toolchain_tool_pipeline
etibm_cd_tekton_pipeline
, voir les détails de référence des arguments dans la documentation du registre Terraform. -
Initialisez l'interface de ligne de commande Terraform, si nécessaire.
terraform init
-
Appliquez le plan d'exécution Terraform avec l'option
refresh-only
. Terraform actualise son état et affiche les attributs de la ressource de pipeline.terraform apply -refresh-only -auto-approve
Suppression d'un site Delivery Pipeline avec l'API
-
Obtenez un jeton bearer IAM. Sinon, si vous utilisez un SDK, obtenez une clé d'API IAM et définissez les options client à l'aide de variables d'environnement.
export CD_TEKTON_PIPELINE_APIKEY={api_key}
-
Déterminez la région et l'ID de la chaîne d'outils à laquelle vous souhaitez ajouter l'intégration d'outils DevOps Insights.
-
Supprimez le pipeline.
curl -X DELETE \ https://api.{region}.devops.cloud.ibm.com/toolchain/v2/toolchains/{toolchain_id}/tools/{pipeline_id} \ -H 'Authorization: Bearer {iam_token}'
const CdTektonPipelineV2 = require('@ibm-cloud/continuous-delivery/cd-tekton-pipeline/v2'); ... (async () => { const pipelineSvc = CdTektonPipelineV2.newInstance(); const params = { id: {pipeline_id}, }; const res = await pipelineSvc.deleteTektonPipeline(params); })();
import { "github.com/IBM/continuous-delivery-go-sdk/cdtektonpipelinev2" } ... cdTektonPipelineOptions := &cdtektonpipelinev2.CdTektonPipelineV2Options{} pipelineSvc, err = cdtektonpipelinev2.NewCdTektonPipelineV2UsingExternalConfig(cdTektonPipelineOptions) deleteTektonPipelineOptions := pipelineSvc.NewDeleteTektonPipelineOptions( {pipeline_id} ) response, err := pipelineSvc.DeleteTektonPipeline(deleteTektonPipelineOptions)
from ibm_continuous_delivery.cd_tekton_pipeline_v2 import CdTektonPipelineV2 ... pipeline_service = CdTektonPipelineV2.new_instance() response = pipeline_service.delete_tekton_pipeline( id={pipeline_id} )
import com.ibm.cloud.continuous_delivery.cd_tekton_pipeline.v2.CdTektonPipeline; import com.ibm.cloud.continuous_delivery.cd_tekton_pipeline.v2.model.*; ... CdTektonPipeline pipelineSvc = CdTektonPipeline.newInstance(); DeleteTektonPipelineOptions deleteTektonPipelineOptions = new DeleteTektonPipelineOptions.Builder() .id({pipeline_id}) .build(); Response<Void> response = pipelineSvc.deleteTektonPipeline(deleteTektonPipelineOptions).execute();
Le tableau suivant répertorie et décrit chacune des variables utilisées à l'étape précédente.
Variable | Description |
---|---|
{region} |
Région dans laquelle réside la chaîne d'outils, par exemple, us-south . |
{toolchain_id} |
ID de la chaîne d'outils qui contient le pipeline à supprimer. |
{pipeline_id} |
L'ID de la canalisation à supprimer. |
{iam_token} |
Un jeton de support IAM valide. |
Utilisation des déclencheurs
Vous pouvez déclencher des pipelines à l'aide de l'interface web ou d'une ligne de commande/API. Elle est couramment utilisée pour les pipelines tels que les pipelines CI, CD ou CC.
Déclenchement du pipeline via la ligne de commande ou l'API
Vous pouvez déclencher un pipeline à partir de la ligne de commande en utilisant le CLI IBM Cloud ou en effectuant un appel direct à l'API à l'aide de curl
.
Utilisation de IBM Cloud CLI
Vous pouvez déclencher le pipeline à l'aide de l'interface CLI de IBM Cloud. Pour plus d'informations sur les commandes de la CLI, consultez la documentation de la CLI de IBM Cloud.
- Connexion à IBM Cloud
ibmcloud login --sso
- Déclencher manuellement le pipeline
ibmcloud dev tekton-trigger run <pipeline_id> --trigger-name "<trigger_name>"
Après avoir remplacé pipeline_id
et trigger_name
dans la commande, exécutez-la pour démarrer le pipeline. En cas de succès, la sortie indiquera que le pipeline a démarré et affichera des détails similaires à ceux
qui suivent :
Le démarrage du pipeline a abouti.
- Run ID : ruekhg-eifjkvr-kjf-rkvj
- Déclencheur : Déclencheur manuel CC
- Statut : en attente
Vous pouvez ensuite vérifier que votre pipeline a été déclenché en ouvrant votre chaîne d'outils respective dans l'interface utilisateur.
Utilisation de curl
pour déclencher le pipeline via l'API
Vous pouvez déclencher le pipeline directement via l'API en utilisant curl
. Pour plus d'informations sur la manière de déclencher des pipelines Tekton via l'API, voir IBM Cloud API Docs/
CD Tekton Pipeline.
Processus d'authentification
-
Si vous n'avez pas encore de clé API, rendez-vous sur IBM Cloud API Keys pour en générer une.
-
Une fois que vous avez votre clé API, générez un jeton IAM à l'aide de la commande suivante
curl
:curl -X POST 'https://iam.cloud.ibm.com/identity/token' \ -H 'Content-Type:application/x-www-form-urlencoded' \ -H 'Accept:application/json' \ -d 'grant_type=urn:ibm:params:oauth:grant-type:apikey&apikey=<API_KEY>'
-
Remplacez <API_KEY> par votre clé API générée.
-
Une fois que vous avez le jeton IAM, utilisez-le pour authentifier la demande suivante d'accès à votre pipeline :
curl -L --request GET 'https://api.us-south.devops.cloud.ibm.com/pipeline/v2/tekton_pipelines/<PIPELINE_ID>' \ --header 'Authorization: Bearer <IAM_TOKEN_VALUE>'
-
Après l'authentification, déclenchez le pipeline à l'aide de la commande suivante :
curl
:curl -i -X POST \ -H "Authorization: Bearer <IAM_token>" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ --data '{ "trigger": { "name": "CC Manual Trigger", "properties": { "pipeline-debug": "false" } } }' \ "https://api.us-south.devops.cloud.ibm.com/pipeline/v2/tekton_pipelines/<pipeline_id>/pipeline_runs"
-
L'option
-i
garantit que les en-têtes de réponse HTTP sont inclus dans la sortie, ce qui permet de voir le code de statut HTTP en cas d'erreur. -
Vous pouvez ajouter toutes les propriétés d'environnement requises pour le pipeline à l'intérieur de la charge utile
--data
. Pour en savoir plus sur la manière d'ajouter des propriétés, consultez le site IBM Cloud API Docs/ CD Tekton Pipeline. -
La sortie ressemble à ce qui suit lorsque le pipeline est déclenché :
-
La réponse HTTP indiquera un état
201 Created
, confirmant que la demande de déclenchement de pipeline a été acceptée. -
Un en-tête
location
renvoie à l'adresse URL de la chaîne de production déclenchée. -
Vous verrez des métadonnées telles que :
pipeline_id
status
(par exemple,"pending"
)trigger
nom (par exemple,"Manual CD Trigger"
)run_id
(ID unique pour l'exécution déclenchée)- Un site complet URL pour visualiser la course dans l'interface utilisateur.
-
Cela confirme que le pipeline a été déclenché avec succès. Vous pouvez maintenant naviguer vers la section pipeline de votre chaîne d'outils dans l'interface utilisateur IBM Cloud pour voir son état et ses journaux.
-
-
Lorsque la commande s'exécute avec succès, le pipeline est déclenché. Une fois déclenchée, la réponse comprend les détails de l'exécution du pipeline.
Suppression d'un {{site.data.keyword.deliverypipeline}} avec Terraform
-
Localisez le fichier Terraform (par exemple,
main.tf
) qui contient le blocresource
pour le pipeline existant.L'
resource
de l'exemple suivant décrit un pipeline existant.data "ibm_resource_group" "group" { name = "default" } resource "ibm_cd_toolchain" "my_toolchain" { name = "terraform_toolchain" resource_group_id = data.ibm_resource_group.group.id } resource "ibm_cd_toolchain_tool_pipeline" "my_pipeline_tool" { parameters { name = "terraform-pipeline-integration" } toolchain_id = ibm_cd_toolchain.my_toolchain.id } resource "ibm_cd_tekton_pipeline" "my_tekton_pipeline" { worker { id = "public" } pipeline_id = ibm_cd_toolchain_tool_pipeline.my_pipeline_tool.tool_id }
-
Supprimez les blocs
ibm_cd_toolchain_tool_pipeline
etibm_cd_tekton_pipeline
resource
de votre fichier Terraform. -
Initialisez l'interface de ligne de commande Terraform, si nécessaire.
terraform init
-
Créez un plan d'exécution Terraform. Ce plan récapitule toutes les actions qui doivent être exécutées pour supprimer le pipeline.
terraform plan
-
Appliquer le plan d'exécution Terraform. Terraform effectue toutes les actions requises pour supprimer le pipeline.
terraform apply
Affichage des détails d'un pod TaskRun
Pour afficher des informations sur le pod Kubernetes sous-jacent pour un TaskRun
spécifique, cliquez sur le nom Task
, puis sur Pod.
Vous pouvez afficher les détails de la pod et les événements associés signalés par l'agent. Ces informations peuvent vous aider à déboguer des échecs spécifiques ou à déterminer où le temps est passé pendant une exécution.
En savoir plus sur les ressources et les pipelines Tekton
Pour en savoir plus sur les pipelines Tekton, voir les articles Tekton : Une approche moderne de Continuous Delivery et IBM Cloud Continuous Delivery Outils et ressources pour les pipelines Tekton.
Pour en savoir plus sur les tâches Tekton que vous pouvez référencer dans vos pipelines, consultez le catalogue Tekton d'Open Toolchain. Ce référentiel GitHub contient un ensemble de tâches que vous pouvez réutiliser dans vos pipelines Tekton.