Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Résolution des problèmes CodePipeline
Les informations suivantes peuvent vous aider à résoudre les problèmes courants dans AWS CodePipeline.
Rubriques
Les noms des dossiers d'artefact du pipeline semblent tronqués
Ajouter des CodeBuild GitClone autorisations pour les actions à CodeCommit la source
Les pipelines modifiés depuis le mode PARALLÈLE afficheront un mode d'exécution précédent
L'action EC2 Deploy échoue avec un message d'erreur Aucun fichier de ce type
L'action EKS Deploy échoue avec un message d'erreur de cluster inaccessible
Erreur de pipeline : un pipeline configuré avec AWS Elastic Beanstalk renvoie un message d'erreur : « Le déploiement a échoué. Le rôle fourni ne dispose pas des autorisations suffisantes : Service:AmazonElasticLoadBalancing »
Problème : le rôle de service pour CodePipeline ne dispose pas d'autorisations suffisantes pour AWS Elastic Beanstalk, notamment, mais sans s'y limiter, certaines opérations dans Elastic Load Balancing. Le rôle de service pour CodePipeline a été mis à jour le 6 août 2015 pour résoudre ce problème. Les clients ayant créé leur rôle de service avant cette date doivent modifier la déclaration de stratégie de leur rôle de service afin d'ajouter les autorisations requises.
Correctifs possibles : la solution la plus simple consiste à modifier la déclaration de stratégie pour votre rôle de service, comme indiqué dans Ajouter des autorisations au rôle CodePipeline de service.
Après avoir appliqué la politique modifiée, suivez les étapes décrites Lancement manuel d'un pipeline pour réexécuter manuellement tous les pipelines qui utilisent Elastic Beanstalk.
Vous pouvez modifier les autorisations par différents moyens, selon vos besoins en termes de sécurité.
Erreur de déploiement : un pipeline configuré avec un AWS Elastic Beanstalk l'action de déploiement se bloque au lieu d'échouer si l'autorisation « DescribeEvents » est manquante
Problème : Le rôle de service pour CodePipeline doit inclure l'"elasticbeanstalk:DescribeEvents"action pour tous les pipelines qui l'utilisent AWS Elastic Beanstalk. Sans cette autorisation, les actions de AWS Elastic Beanstalk déploiement se bloquent sans échouer ni indiquer d'erreur. Si cette action est absente de votre rôle de service, cela CodePipeline signifie qu'il n'est pas autorisé à exécuter la phase de déploiement du pipeline AWS Elastic Beanstalk en votre nom.
Correctifs possibles : revoyez votre rôle CodePipeline de service. Si l'action "elasticbeanstalk:DescribeEvents" n'en fait pas partie, utilisez la procédure indiquée dans Ajouter des autorisations au rôle CodePipeline de service pour l'ajouter à l'aide de la fonction Edit Policy (Modifier la stratégie) dans la console IAM.
Après avoir appliqué la politique modifiée, suivez les étapes décrites Lancement manuel d'un pipeline pour réexécuter manuellement tous les pipelines qui utilisent Elastic Beanstalk.
Erreur de pipeline : une action source renvoie le message d'autorisations insuffisantes : « Impossible d'accéder au nom du CodeCommit référentiel. Assurez-vous que le rôle IAM du pipeline dispose des autorisations suffisantes pour accéder au référentiel. »
Problème : le rôle de service pour CodePipeline ne dispose pas d'autorisations suffisantes CodeCommit et a probablement été créé avant l'ajout de la prise en charge de l'utilisation CodeCommit des référentiels le 18 avril 2016. Les clients ayant créé leur rôle de service avant cette date doivent modifier la déclaration de stratégie de leur rôle de service afin d'ajouter les autorisations requises.
Correctifs possibles : ajoutez les autorisations requises pour CodeCommit à la politique CodePipeline de votre rôle de service. Pour de plus amples informations, veuillez consulter Ajouter des autorisations au rôle CodePipeline de service.
Erreur de pipeline : Une action Jenkins de génération ou de test s'exécute pendant une longue durée puis échoue, en raison d'informations d'identification ou d'autorisations insuffisantes
Problème : Si le serveur Jenkins est installé sur une instance Amazon EC2, celle-ci n'a peut-être pas été créée avec un rôle d'instance doté des autorisations requises pour. CodePipeline Si vous utilisez un utilisateur IAM sur un serveur Jenkins, une instance locale ou une instance Amazon EC2 créée sans le rôle IAM requis, soit l'utilisateur IAM ne dispose pas des autorisations requises, soit le serveur Jenkins ne peut pas accéder à ces informations d'identification via le profil configuré sur le serveur.
Correctifs possibles : assurez-vous que le rôle d'instance Amazon EC2 ou l'utilisateur IAM est configuré avec la politique AWSCodePipelineCustomActionAccess gérée ou avec les autorisations équivalentes. Pour de plus amples informations, veuillez consulter AWS politiques gérées pour AWS CodePipeline.
Si vous utilisez un utilisateur IAM, assurez-vous que le AWS profil configuré sur l'instance utilise l'utilisateur IAM configuré avec les autorisations appropriées. Vous devrez peut-être fournir les informations d'identification utilisateur IAM que vous avez configurées pour l'intégration entre Jenkins et CodePipeline directement dans l'interface utilisateur de Jenkins. Ce n'est pas recommandé. Si vous devez le faire, assurez-vous que le serveur Jenkins est sécurisé et utilise le protocole HTTPS au lieu de HTTP.
Erreur de pipeline : un pipeline créé en un AWS Région utilisant un bucket créé dans un autre AWS « La région renvoie un InternalError « » avec le code « JobFailed »
Problème : Le téléchargement d'un artefact stocké dans un compartiment Amazon S3 échouera si le pipeline et le compartiment sont créés dans des AWS régions différentes.
Correctifs possibles : assurez-vous que le compartiment Amazon S3 dans lequel votre artefact est stocké se trouve dans la même AWS région que le pipeline que vous avez créé.
Erreur de déploiement : un fichier ZIP contenant un fichier WAR est correctement déployé sur AWS Elastic Beanstalk, mais l'URL de l'application signale une erreur 404 introuvable
Problème : un fichier WAR est déployé avec succès dans un environnement AWS Elastic Beanstalk , mais l'URL de l'application renvoie une erreur « 404 - Non trouvé ».
Correctifs possibles : AWS Elastic Beanstalk possibilité de décompresser un fichier ZIP, mais pas un fichier WAR contenu dans un fichier ZIP. Au lieu de spécifier un fichier WAR dans votre fichier buildspec.yml, spécifiez un dossier contenant le contenu à déployer. Par exemple :
version: 0.2 phases: post_build: commands: - mvn package - mv target/my-web-app ./ artifacts: files: - my-web-app/**/* discard-paths: yes
Pour obtenir un exemple, consultez Exemple AWS Elastic Beanstalk pour CodeBuild.
Les noms des dossiers d'artefact du pipeline semblent tronqués
Problème : Lorsque vous affichez les noms des artefacts de pipeline dans CodePipeline, ils semblent être tronqués. Les noms peuvent sembler similaires ou ne plus contenir l'intégralité du nom du pipeline.
Explication : CodePipeline tronque les noms des artefacts pour s'assurer que le chemin complet d'Amazon S3 ne dépasse pas les limites de taille définies lors de la génération d'informations d'identification CodePipeline temporaires pour les collaborateurs.
Même si le nom de l'artefact semble tronqué, il est CodePipeline mappé au compartiment d'artefacts d'une manière qui n'est pas affectée par les artefacts dont le nom est tronqué. Le pipeline peut fonctionner normalement. Ce n'est pas un problème avec le dossier ou les artefacts. Les noms de pipeline sont limités à 100 caractères. Bien que le nom du dossier de l'artefact puisse apparaître raccourci, il est toujours unique à votre pipeline.
Ajoutez CodeBuild GitClone des autorisations pour les connexions à Bitbucket GitHub, GitHub Enterprise Server ou GitLab.com
Lorsque vous utilisez une action AWS CodeConnections dans une source et une CodeBuild action, l'artefact d'entrée peut être transmis à la génération de deux manières :
-
Par défaut : l'action source produit un fichier zip contenant le code à CodeBuild télécharger.
-
Clone complet : le code source peut être téléchargé directement dans l'environnement de compilation.
Le mode de clonage complet vous permet d'interagir avec le code source en tant que référentiel Git fonctionnel. Pour utiliser ce mode, vous devez accorder à votre CodeBuild environnement les autorisations nécessaires pour utiliser la connexion.
Pour ajouter des autorisations à votre politique CodeBuild de rôle de service, vous créez une politique gérée par le client que vous associez à votre rôle de CodeBuild service. Les étapes suivantes permettent de créer une politique dans laquelle l'UseConnectionautorisation est spécifiée dans le action champ, l'ARN de connexion est spécifié dans le Resource champ et l'ID du référentiel source est limité viaCondition.
Pour utiliser la console pour ajouter les UseConnection autorisations
-
Pour trouver l'ARN de connexion et l'ID du référentiel source pour votre pipeline, ouvrez votre pipeline, cliquez sur l'icône (i) de votre action source et passez à l'onglet Entrée.
Voici un exemple d'ARN de connexion :
arn:aws:codeconnections:eu-central-1:123456789123:connection/sample-1908-4932-9ecc-2ddacee15095Voici un exemple de l'ID du référentiel source :
owner/test-appVous ajoutez l'ARN de connexion et l'ID du référentiel à votre politique CodeBuild de rôle de service.
-
Pour trouver votre rôle CodeBuild de service, choisissez le projet de build utilisé dans votre pipeline et accédez à l'onglet Détails de la construction.
-
Sélectionnez le lien Rôle de service. Cela ouvre la console IAM où vous pouvez ajouter une nouvelle stratégie qui accorde l'accès à votre connexion.
-
Dans la console IAM, choisissez Ajouter des autorisations, puis choisissez Créer une politique en ligne.
Utilisez l'exemple de modèle de stratégie suivant. Ajoutez votre ARN de connexion dans le
Resourcechamp et votre IDcodeconnections:FullRepositoryIdde référentiel dans leConditionchamp, comme illustré dans cet exemple :Utilisez
Conditionce champ pour réduire davantage les autorisations de votre politique en fonction des exigences de vos spécifications de construction (voir la documentation surCodeConnectionles conditions).Sous l'onglet JSON, collez votre stratégie.
-
Choisissez Suivant. Entrez un nom pour la stratégie (par exemple,
connection-permissions), puis choisissez Créer une stratégie.Vous verrez
connection-permissionsla politique associée à votre rôle Politiques d'autorisations.
Ajouter des CodeBuild GitClone autorisations pour les actions à CodeCommit la source
Lorsque votre pipeline comporte une action CodeCommit source, vous pouvez transmettre l'artefact d'entrée à la génération de deux manières :
-
Par défaut : l'action source génère un fichier zip contenant le code à CodeBuild télécharger.
-
Clone complet : le code source peut être téléchargé directement dans l'environnement de compilation.
L'option de clonage complet vous permet d'interagir avec le code source en tant que référentiel Git fonctionnel. Pour utiliser ce mode, vous devez ajouter des autorisations permettant à votre CodeBuild environnement d'extraire des données de votre référentiel.
Pour ajouter des autorisations à votre politique CodeBuild de rôle de service, vous créez une politique gérée par le client que vous associez à votre rôle de CodeBuild service. Les étapes suivantes permettent de créer une politique qui spécifie l'codecommit:GitPullautorisation dans le action champ.
Pour utiliser la console pour ajouter les GitPull autorisations
-
Pour trouver votre rôle CodeBuild de service, ouvrez le projet de build utilisé dans votre pipeline et accédez à l'onglet Détails de la construction.
-
Sélectionnez le lien Rôle de service. Cela ouvre la console IAM dans laquelle vous pouvez ajouter une nouvelle politique qui autorise l'accès à votre référentiel.
-
Dans la console IAM, choisissez Attach policies (Attacher des stratégies), puis Créer une stratégie.
-
Dans l'onglet JSON, collez l'exemple de politique suivant.
{ "Action": [ "codecommit:GitPull" ], "Resource": "*", "Effect": "Allow" }, -
Choisissez Examiner une politique. Entrez un nom pour la stratégie (par exemple,
codecommit-gitpull), puis choisissez Créer une stratégie. -
Revenez à la page où vous attachiez les autorisations, actualisez la liste des stratégies et sélectionnez la stratégie que vous venez de créer. Choisissez Attacher des politiques.
Erreur de pipeline : un déploiement avec cette CodeDeployToECS action renvoie un message d'erreur : « Exception lors de la tentative de lecture du fichier d'artefacts de définition de tâche depuis : nom de l'artefact < source » >
Problème :
Le fichier de définition de tâche est un artefact obligatoire pour l'action de CodePipeline déploiement sur Amazon ECS via CodeDeploy (l'CodeDeployToECSaction). La taille maximale du fichier ZIP de l'artefact lors de l'action de CodeDeployToECS déploiement est de 3 Mo. Le message d'erreur suivant est renvoyé lorsque le fichier est introuvable ou que la taille de l'artefact dépasse 3 Mo :
Exception while trying to read the task definition artifact file from: <nom artefact source> (Exception lors de la tentative de lecture du fichier d'artefact de définition de tâche à partir de : <nom artefact source>)
Correctifs possibles : assurez-vous que le fichier de définition des tâches est inclus en tant qu'artefact. Si le fichier existe déjà, assurez-vous que la taille compressée est inférieure à 3 Mo.
GitHub action source (via l'application OAuth) : la liste des référentiels affiche différents référentiels
Problème :
Après avoir autorisé avec succès une action GitHub (via l'application OAuth) dans la CodePipeline console, vous pouvez faire votre choix dans la liste de vos GitHub référentiels. Si la liste n'inclut pas les référentiels que vous vous attendiez à voir, vous pouvez résoudre les problèmes liés au compte utilisé pour l'autorisation.
Correctifs possibles : la liste des référentiels fournie dans la CodePipeline console est basée sur l' GitHub organisation à laquelle appartient le compte autorisé. Vérifiez que le compte que vous utilisez pour vous autoriser GitHub est bien le compte associé à l' GitHub organisation dans laquelle votre référentiel est créé.
GitHub action source (via GitHub l'application) : impossible de terminer la connexion pour un référentiel
Problème :
Étant donné qu'une connexion à un GitHub référentiel utilise le AWS connecteur pour GitHub, vous avez besoin des autorisations du propriétaire de l'organisation ou des autorisations d'administrateur sur le référentiel pour créer la connexion.
Correctifs possibles : pour plus d'informations sur les niveaux d'autorisation pour un GitHub référentiel, consultez https://docs.github.com/en/free-pro-team @ latest/github teams/permission /setting-up-and-managing-organizations-and- -levels-for-an-organization.
Erreur Amazon S3 : l'<ARN du rôle de CodePipeline service > reçoit un accès S3 refusé pour le compartiment S3 < BucketName >
Problème :
En cours de réalisation, l' CodeCommit action CodePipeline vérifie que le compartiment d'artefacts du pipeline existe. Si l'action n'est pas autorisée à être vérifiée, une AccessDenied erreur se produit dans Amazon S3 et le message d'erreur suivant s'affiche dans CodePipeline :
CodePipeline le rôle de service « arn:aws:iam : : AccountID : role/service -role/ RoleID » reçoit un accès S3 refusé pour le compartiment S3 » BucketName
Les CloudTrail journaux de l'action enregistrent également l'AccessDeniederreur.
Correctifs possibles : Procédez comme suit :
-
Pour la politique associée à votre rôle CodePipeline de service,
s3:ListBucketajoutez-la à la liste des actions de votre politique. Pour savoir comment consulter votre politique de rôle de service, consultezAfficher l'ARN du pipeline et l'ARN du rôle de service (console). Modifiez la déclaration de politique relative à votre rôle de service comme indiqué dansAjouter des autorisations au rôle CodePipeline de service. -
Pour la politique basée sur les ressources associée au compartiment d'artefacts Amazon S3 pour votre pipeline, également appelée politique de compartiment d'artefacts, ajoutez une instruction pour autoriser l'utilisation de l'
s3:ListBucketautorisation par votre rôle de service. CodePipelinePour ajouter votre police au compartiment d'artefacts
-
Suivez les étapes décrites Afficher l'ARN du pipeline et l'ARN du rôle de service (console) pour choisir votre compartiment d'artefacts sur la page des paramètres du pipeline, puis visualisez-le dans la console Amazon S3.
-
Choisissez Permissions.
-
Sous Politique de compartiment, choisissez Modifier.
-
Dans le champ de texte de la politique, entrez une nouvelle politique de compartiment ou modifiez la politique existante comme indiqué dans l'exemple suivant. La politique de compartiment est un fichier JSON, vous devez donc saisir un code JSON valide.
L'exemple suivant montre une déclaration de politique de compartiment pour un compartiment d'artefacts où se trouve l'exemple d'ID de rôle pour le rôle de service.
AROAEXAMPLEID{ "Effect": "Allow", "Principal": "*", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::BucketName", "Condition": { "StringLike": { "aws:userid": "AROAEXAMPLEID:*" } } }L'exemple suivant montre la même déclaration de politique de compartiment après l'ajout de l'autorisation.
Pour plus d'informations, suivez la procédure de la section https://aws.amazon.com/blogs/security/writing-iam-policies-how-to-grant-access-to-an-amazon-s3-bucket/
. -
Choisissez Enregistrer.
-
Après avoir appliqué la politique modifiée, suivez les étapes décrites Lancement manuel d'un pipeline pour réexécuter manuellement votre pipeline.
Les pipelines dotés d'un Amazon S3, d'Amazon ECR ou d' CodeCommit une source ne démarrent plus automatiquement
Problème :
Après avoir modifié les paramètres de configuration d'une action qui utilise des règles d'événements (EventBridgeou CloudWatch événements) pour la détection des modifications, la console peut ne pas détecter de modification lorsque les identificateurs de déclenchement source sont similaires et comportent des caractères initiaux identiques. La nouvelle règle d'événement n'étant pas créée par la console, le pipeline ne démarre plus automatiquement.
Un exemple de modification mineure à la fin du nom du paramètre pour CodeCommit serait de changer le nom de votre CodeCommit branche MyTestBranch-1 enMyTestBranch-2. Comme la modification se trouve à la fin du nom de la branche, il est possible que la règle d'événement pour l'action source ne soit pas mise à jour ou ne crée pas de règle pour les nouveaux paramètres de source.
Cela s'applique aux actions source qui utilisent des événements CWE pour détecter les modifications, comme suit :
| Action à la source | Paramètres/identifiants de déclenchement (console) |
|---|---|
| Amazon ECR |
Nom du référentiel Balise d'image |
| Amazon S3 |
Compartiment Clé d'objet S3 |
| CodeCommit |
Nom du référentiel Nom de la succursale |
Correctifs possibles :
Effectuez l’une des actions suivantes :
-
Modifiez les paramètres de CodeCommit/S3/ECR configuration afin que des modifications soient apportées à la partie initiale de la valeur du paramètre.
Exemple : remplacez le nom
release-branchde votre succursale par2nd-release-branch. Évitez de modifier la fin du nom, par exemplerelease-branch-2. -
Modifiez les paramètres CodeCommit/S3/ECR de configuration pour chaque pipeline.
Exemple : remplacez le nom
myRepo/myBranchde votre succursale parmyDeployRepo/myDeployBranch. Évitez de modifier la fin du nom, par exemplemyRepo/myBranch2. -
Au lieu de la console, utilisez l'interface de ligne de commande ou CloudFormation pour créer et mettre à jour vos règles relatives aux événements de détection des modifications. Pour obtenir des instructions sur la création de règles d'événement pour une action source S3, consultezConnexion à la source Amazon S3 : actions qui utilisent EventBridge et AWS CloudTrail. Pour obtenir des instructions sur la création de règles d'événement pour une action Amazon ECR, consultezActions et ressources relatives aux sources Amazon ECR EventBridge. Pour obtenir des instructions sur la création de règles d'événement pour une CodeCommit action, consultezCodeCommit actions à la source et EventBridge.
Après avoir modifié la configuration de vos actions dans la console, acceptez les ressources de détection des modifications mises à jour créées par la console.
Erreur de connexion lors de la connexion à GitHub : « Un problème est survenu, assurez-vous que les cookies sont activés dans votre navigateur » ou « Le propriétaire de l'organisation doit installer l' GitHub application »
Problème :
Pour créer la connexion pour une action GitHub source dans CodePipeline, vous devez être le propriétaire de GitHub l'organisation. Pour les référentiels qui ne font pas partie d'une organisation, vous devez en être le propriétaire. Lorsqu'une connexion est créée par une personne autre que le propriétaire de l'organisation, une demande est créée pour le propriétaire de l'organisation et l'une des erreurs suivantes s'affiche :
Un problème est survenu, assurez-vous que les cookies sont activés dans votre navigateur
OU
Le propriétaire de l'organisation doit installer l' GitHub application
Correctifs possibles : pour les référentiels d'une GitHub organisation, le propriétaire de l'organisation doit créer la connexion au GitHub référentiel. Pour les référentiels qui ne font pas partie d'une organisation, vous devez être le propriétaire du référentiel.
Les pipelines dont le mode d'exécution est passé en mode QUEUED ou PARALLÈLE échouent lorsque la limite d'exécution est atteinte
Problème : Le nombre maximum d'exécutions simultanées pour un pipeline en mode QUEUED est de 50 exécutions. Lorsque cette limite est atteinte, le pipeline tombe en panne sans message d'état.
Correctifs possibles : lorsque vous modifiez la définition du pipeline pour le mode d'exécution, effectuez la modification séparément des autres actions de modification.
Pour plus d'informations sur le mode d'exécution QUEUED ou PARALLÈLE, consultez. CodePipeline concepts
Les pipelines en mode PARALLÈLE ont une définition de pipeline obsolète s'ils sont modifiés lors du passage en mode QUEUED ou SUPERSEDED
Problème : pour les pipelines en mode parallèle, lorsque vous modifiez le mode d'exécution du pipeline sur QUEUED ou SUPERSEDED, la définition du pipeline pour le mode PARALLÈLE ne sera pas mise à jour. La définition de pipeline mise à jour lors de la mise à jour du mode PARALLÈLE n'est pas utilisée en mode SUPERSEDED ou QUEUED.
Correctifs possibles : pour les pipelines en mode parallèle, lorsque vous modifiez le mode d'exécution du pipeline sur QUEUED ou SUPERSEDED, évitez de mettre à jour la définition du pipeline en même temps.
Pour plus d'informations sur le mode d'exécution QUEUED ou PARALLÈLE, consultez. CodePipeline concepts
Les pipelines modifiés depuis le mode PARALLÈLE afficheront un mode d'exécution précédent
Problème : pour les pipelines en mode PARALLÈLE, lorsque vous modifiez le mode d'exécution du pipeline sur QUEUED ou SUPERSEDED, l'état du pipeline n'affiche pas l'état mis à jour en tant que PARALLÈLE. Si le pipeline passe de PARALLÈLE à QUEUED ou SUPERSEDED, l'état du pipeline en mode SUPERSEDED ou QUEUED sera le dernier état connu dans l'un ou l'autre de ces modes. Si le pipeline n'a jamais été exécuté dans ce mode auparavant, l'état sera vide.
Correctifs possibles : pour les pipelines en mode parallèle, lorsque vous modifiez le mode d'exécution du pipeline sur QUEUED ou SUPERSEDED, notez que l'affichage du mode d'exécution n'affiche pas l'état PARALLÈLE.
Pour plus d'informations sur le mode d'exécution QUEUED ou PARALLÈLE, consultez. CodePipeline concepts
Les pipelines dont les connexions utilisent le filtrage des déclencheurs par chemin de fichier peuvent ne pas démarrer lors de la création de la branche
Description : Pour les pipelines dont les actions source utilisent des connexions, comme une action BitBucket source, vous pouvez configurer un déclencheur avec une configuration Git qui vous permet de filtrer par chemin de fichier pour démarrer votre pipeline. Dans certains cas, pour les pipelines dont les déclencheurs sont filtrés en fonction des chemins de fichiers, le pipeline peut ne pas démarrer lorsqu'une branche avec un filtre de chemin de fichier est créée pour la première fois, car cela ne permet pas à la CodeConnections connexion de résoudre les fichiers modifiés. Lorsque la configuration Git du déclencheur est configurée pour filtrer les chemins de fichiers, le pipeline ne démarre pas lorsque la branche contenant le filtre vient d'être créée dans le référentiel source. Pour plus d'informations sur le filtrage des chemins de fichiers, consultezAjouter un déclencheur avec des types d'événements de type « code push » ou « pull request ».
Résultat : Par exemple, les pipelines CodePipeline qui ont un filtre de chemin de fichier sur une branche « B » ne seront pas déclenchés lors de la création de la branche « B ». S'il n'existe aucun filtre de chemin de fichier, le pipeline démarre quand même.
Les pipelines dont les connexions utilisent le filtrage des déclencheurs par chemin de fichier peuvent ne pas démarrer lorsque la limite de fichiers est atteinte
Description : Pour les pipelines dont les actions source utilisent des connexions, comme une action BitBucket source, vous pouvez configurer un déclencheur avec une configuration Git qui vous permet de filtrer par chemin de fichier pour démarrer votre pipeline. CodePipeline récupère jusqu'aux 100 premiers fichiers ; par conséquent, lorsque la configuration Git du déclencheur est configurée pour filtrer les chemins de fichiers, le pipeline peut ne pas démarrer s'il y a plus de 100 fichiers. Pour plus d'informations sur le filtrage des chemins de fichiers, consultezAjouter un déclencheur avec des types d'événements de type « code push » ou « pull request ».
Résultat : par exemple, si un diff contient 150 fichiers, CodePipeline examine les 100 premiers fichiers (sans ordre particulier) pour les comparer au filtre de chemin de fichier spécifié. Si le fichier correspondant au filtre de chemin de fichier ne figure pas parmi les 100 fichiers récupérés par CodePipeline, le pipeline ne sera pas invoqué.
CodeCommit ou les révisions de source S3 en mode PARALLÈLE peuvent ne pas correspondre à EventBridge l'événement
Description : pour les exécutions de pipeline en mode PARALLÈLE, une exécution peut commencer par la modification la plus récente, telle que la validation du CodeCommit référentiel, qui peut ne pas être la même que la modification de l' EventBridge événement. Dans certains cas, lorsqu'une fraction de seconde peut s'écouler entre les validations ou les balises d'image qui démarrent le pipeline, lors de la CodePipeline réception de l'événement et du démarrage de cette exécution, une autre balise de validation ou d'image a été poussée CodePipeline (par exemple, l' CodeCommit action) clonera le commit HEAD à ce moment-là.
Résultat : pour les pipelines en mode PARALLÈLE avec une source CodeCommit ou S3, quelle que soit la modification qui a déclenché l'exécution du pipeline, l'action source clonera toujours le HEAD au moment de son démarrage. Par exemple, pour un pipeline en mode PARALLÈLE, un commit est poussé, ce qui démarre le pipeline pour l'exécution 1, et la seconde exécution du pipeline utilise le second commit.
L'action EC2 Deploy échoue avec un message d'erreur Aucun fichier de ce type
Description : Une fois que l'action de déploiement EC2 a décompressé les artefacts du répertoire cible des instances, l'action exécute le script. Si le script se trouve dans le répertoire cible mais que l'action ne peut pas exécuter le script, l'action échoue sur cette instance et le déploiement des autres instances échoue.
Une erreur similaire aux messages d'erreur suivants s'affiche dans les journaux pour un déploiement où se trouvent le répertoire cible /home/ec2-user/deploy/ et le chemin du référentiel sourcemyRepo/postScript.sh.
-
Instance i-0145a2d3f3EXAMPLE is FAILED on event AFTER_DEPLOY, message: ----------ERROR------- chmod: cannot access '/home/ec2-user/deploy/myRepo/postScript.sh': No such file or directory /var/lib/<path>/_script.sh: line 2: /home/ec2-user/deploy/myRepo/postScript.sh: No such file or directory failed to run commands: exit status 127 -
Executing commands on instances i-0145a2d3f3EXAMPLE, SSM command id <ID>, commands: chmod u+x /home/ec2-user/deploy/script.sh ----------ERROR-------: No such file or directory
Résultat : l'action de déploiement échoue dans le pipeline.
Correctifs possibles : Pour résoudre les problèmes, procédez comme suit.
-
Consultez les journaux pour vérifier quelle instance a provoqué l'échec du script.
-
Remplacez directory (
cd) par le répertoire cible de votre instance. Testez l'exécution du script sur l'instance. -
Dans votre référentiel source, modifiez le fichier de script pour supprimer tous les commentaires ou commandes susceptibles d'être à l'origine du problème.
L'action EKS Deploy échoue avec un message d'erreur de cluster inaccessible
Description : Une fois l'action de déploiement EKS exécutée, l'action échoue et un message d'cluster unreachableerreur s'affiche. Le message indique un problème d'accès au cluster dû à des autorisations manquantes. Selon le type de fichier (graphique Helm ou fichiers manifestes Kubernetes), le message d'erreur s'affiche comme suit.
-
Pour une action de déploiement EKS qui utilise un graphique Helm, une erreur similaire au message d'erreur suivant s'affiche.
error message: helm upgrade --install my-release test-chart --wait Error: Kubernetes cluster unreachable: the server has asked for the client to provide credentials -
Pour une action de déploiement EKS qui utilise des fichiers manifestes Kubernetes, une erreur similaire au message d'erreur suivant s'affiche.
kubectl apply -f deployment.yaml Error: error validating "deployment.yaml": error validating data: failed to download openapi: the server has asked for the client to provide credentials
Résultat : l'action de déploiement échoue dans le pipeline.
Correctifs possibles : si vous utilisez un rôle existant, le rôle de CodePipeline service doit être mis à jour avec les autorisations requises pour utiliser l'action de déploiement EKS. En outre, pour autoriser le rôle de CodePipeline service à accéder à votre cluster, vous devez ajouter une entrée d'accès à votre cluster et spécifier le rôle de service pour l'entrée d'accès.
-
Vérifiez que le rôle CodePipeline de service dispose des autorisations requises pour l'action de déploiement EKS. Pour la référence sur les autorisations, consultezAutorisations relatives aux politiques de rôle de service.
-
Ajoutez une entrée d'accès à votre cluster et spécifiez le rôle de CodePipeline service pour l'accès. Pour obtenir un exemple, consultez Étape 4 : Création d'une entrée d'accès pour le rôle CodePipeline de service.
Le pipeline ne se déclenche pas pour toutes les branches lorsque plusieurs actions source font référence au même référentiel
Problème : un pipeline comporte plusieurs actions source qui utilisent des connexions (comme un Bitbucket ou une GitLab connexion), chaque action source pointant vers une branche différente du même référentiel. GitHub Une seule des branches déclenche le pipeline lorsque vous soumettez des modifications. L'abonnement au webhook de la connexion est enregistré pour la combinaison du pipeline et du référentiel, et non pour chaque branche. Par conséquent, plusieurs actions de source ciblant différentes branches d'un même référentiel au sein d'un même pipeline ne sont pas prises en charge.
Correctifs possibles : utilisez un pipeline distinct pour chaque branche que vous souhaitez déclencher indépendamment.
Besoin d'aide pour résoudre un autre problème ?
Essayez les ressources suivantes :
-
Contactez AWS Support
. -
Posez une question sur le Forum CodePipeline
. -
Demandez une augmentation de quota
. Pour de plus amples informations, veuillez consulter Quotas dans AWS CodePipeline. Note
Les demandes d'augmentation de quota sont traitées dans un délai de deux semaines maximum.