Si quelqu'un arrive sur cette page après avoir cherché l'erreur :
EnvironmentVariables spécifié dans l'action config ne correspond pas au format attendu, le format attendu est un tableau JSON adhérant au format suivant
Il s'agit d'un problème récurrent lorsque vous avez un CodePipeline qui alimente une variable d'environnement "#{SourceVariables.CommitMessage}" de l'action Source à l'action CodeBuild et si le CommitMessage contient une citation ou est multi-ligne, alors l'action échouera en raison de l'échec de l'analyseur json interne.
Note : CodeCommit ajoute toujours un ' \n Ce problème se produira donc toujours avec CodeCommit. Pour GitHub, il ne se produira que si vous utilisez le message de validation étendu.
Pour l'instant, afin de contourner ce problème sans perdre la variable d'environnement 'COMMIT_MESSAGE', veuillez suivre les étapes suivantes :
Solution :
-
Supprimer la variable d'environnement 'COMMIT_MESSAGE' de la configuration de CodePipeline sur l'action CodeBuild.
-
Assurez-vous que le rôle de service de votre projet CodeBuild a la permission de faire 'ListPipelineExecutions' sur le Pipeline.
-
Ajoutez ce qui suit dans la phase Buildspec 'Install' pour installer l'utilitaire 'jq' [1] :
- apt-get install jq
-
Ajoutez ce qui suit dans Buildspec à l'endroit où vous avez besoin d'obtenir le message de validation (veuillez mettre à jour le nom du pipeline) :
- COMMIT_MESSAGE=$(aws codepipeline list-pipeline-executions --pipeline-name <Pipeline_Name> --max-items 1 | jq -r '.pipelineExecutionSummaries[0].sourceRevisions[0].revisionSummary')
- export COMMIT_MESSAGE
- echo $COMMIT_MESSAGE # debug command only
- printenv # debug command only
Avec cette méthode, nous utilisons l'appel AWS CLI 'list-pipeline-executions' [2] pour récupérer l'exécution récente du pipeline et analyser le message de livraison de cette exécution. La variable 'COMMIT_MESSAGE' comprendra le message de livraison complet avec les guillemets et les nouvelles lignes.
Références :
[1] jq - https://stedolan.github.io/jq/
[2] list-pipeline-executions - https://docs.aws.amazon.com/cli/latest/reference/codepipeline/list-pipeline-executions.html