La génération échoue si elle n'a pas été enregistrée correctement et s'il n'existe pas de secret

Une fois que vous avez créé et exécuté une génération, votre génération n'aboutit pas et vous recevez un message indiquant que la génération n'a pas été enregistrée correctement et qu'il n'existe pas de secret

Si vous recevez un message indiquant que la génération n'a pas été enregistrée correctement et qu'il n'existe pas de secret, cela signifie que la génération BUILD_NAME n'a pas été définie correctement.

Exemple de message d'erreur

The Build is not registered correctly, build: <BUILD_NAME>, registered status: False, reason: SpecSourceSecretNotFound|SpecOutputSecretRefNotFound|MultipleSecretRefNotFound

La génération BUILD_NAME fait référence à un secret qui n'existe pas. Si la raison est SpecOutputSecretRefNotFound, un secret de registre n'existe pas. S'il s'agit de SpecSourceSecretNotFound, un secret permettant d'accéder au référentiel Git est manquant. La cause est MultipleSecretRefNotFound si les deux secrets n'existent pas. Corrigez la génération pour qu'elle fasse référence à des secrets existants.

Essayez l'une des solutions ci-après.

Que vous exécutiez votre génération depuis la console ou depuis l'interface de ligne de commande, utilisez l'interface de ligne de commande pour traiter les problèmes liés à votre génération.

  1. Exécutez la commande ibmcloud ce buildrun get --name BUILDRUN_NAME pour afficher les détails de votre exécution de génération.
  2. Consultez la section Reason dans la sortie de la commande.

Suivez la procédure ci-après pour résoudre le problème lié à votre génération.

  1. Vérifiez vos secrets. Dans une génération, des secrets sont utilisés aux fins suivantes :

    • Pour s'authentifier au niveau du registre de conteneur. Un secret de registre stocke les données d'identification permettant d'accéder à un registre de conteneur. Pour répertorier tous les secrets de votre projet, y compris les secrets de registre existants, exécutez la commande ibmcloud ce secret list . Pour créer un secret de registre, exécutez la commande ibmcloud ce secret create --format registry . Pour plus d'informations sur les secrets de registre, voir Ajout d'un accès à un registre de conteneur privé.
    • Pour s'authentifier au niveau d'un référentiel de code source privé. Un secret SSH stocke les données d'identification permettant de s'authentifier auprès d'un service avec une clé SSH, telle que l'authentification auprès d'un référentiel Git , tel que GitHub ou GitLab. Pour répertorier tous les secrets de votre projet, y compris les secrets SSH existants, exécutez la commande ibmcloud ce secret list . Pour créer un secret SSH, exécutez la commande ibmcloud ce secret create --format ssh . Pour plus d'informations sur les secrets SSH permettant d'accéder aux référentiels, voir Accès aux référentiels de code privé.
  2. Une fois les secrets définis, utilisez la commande ibmcloud ce build update pour mettre à jour la configuration de génération. Si vous référencez un secret de registre, spécifiez le nom du secret à l'aide de l'option --registry-secret avec la commande build update . Si vous référencez un secret SSH pour accéder à un référentiel privé qui contient le code source pour générer votre image de conteneur, spécifiez l'option --git-repo-secret avec la commande build update . Par exemple :

    ibmcloud ce build update --name <BUILD_NAME> [--registry-secret <REGISTRY_ACCESS_SECRET>] [--git-repo-secret <GIT_REPO_SECRET>]
    
  3. Utilisez la commande ibmcloud ce buildrun submit pour soumettre une nouvelle exécution de génération. Pour la commande buildrun submit, vous devez spécifier l'option --build pour fournir le nom de votre configuration de génération. Vous pouvez éventuellement spécifier l'option --name pour fournir le nom de cette exécution de génération. Si vous spécifiez l'option --name, veillez à utiliser un autre nom d'exécution de génération que celui de l'exécution de génération ayant échoué, ou à supprimer l'exécution de génération ayant échoué à l'aide de la commande ibmcloud ce buildrun delete. Par exemple :

    ibmcloud ce buildrun submit --build <BUILD_NAME> --name <BUILDRUN_NAME>