AWS Passer en variable dans buildspec.yml de CodePipeline
J'ai une AWS CodePipeline qui appelle CodeBuild dans la Phase de développement.
La question est comment puis-je passer une variable d'environnement de CodePipeline qui peut être lu dans le CodeBuild de buildspec.yml?
Je sais que je peux définir des variables d'environnement dans CodeBuild, mais je veux utiliser le même CodeBuild projet de dev, qa, et les environnements de prod. Je ne vois pas comment je peux passer une variable d'environnement de CodePipeline qui en fait tout le chemin à la buildspec.yml
Exemple buildspec.yml
version: 0.1
phases:
build:
commands:
- npm install
- npm build -- --env ${CURRENT_ENVIRONMENT}
Où CURRENT_ENVIRONMENT serait la variable I définie dans le CodePipeline action de la Scène.
- Pour toute personne intéressée, à la façon dont je me suis autour de cette est que vous pouvez définir des variables d'environnement dans CodeBuild qui se passait à buildspec.yml. Donc, tant que vous pouvez obtenir vos paramètres dans AWS::CodeBuild::Projet CloudFormation déclaration, ils sont ramassés lors de la buildspec.yml est exécuté.
- C'est un peu malheureux limitation. J'ai ajouté une AWS fil de discussion du forum à ce sujet ici Envisager de carillon à laisser AWS savoir si cela est important pour vous.
- comment utiliser les variables d'environnement dans buildspec.yml: mnp build --env $THE_VARIABLE
Vous devez vous connecter pour publier un commentaire.
Cette fonctionnalité n'est pas disponible aujourd'hui.
Une solution de contournement serait de créer un autre CodeBuild projet pour chaque scène avec différentes variables d'environnement.
Vous pouvez trouver plus de détails sur l'utilisation d'une variable d'environnement dans votre builspec.yml commandes ici: http://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html
Vous pouvez réellement passer des variables d'environnement dans CodeBuild cloudformation comme ci-dessous:
Et dans votre
buildspec.yml
vous pouvez faire référence à l'environnement de cette façon,Vous pouvez utiliser construire des variables d'environnement conditionnellement passer de buildspec à
npm build
en détectant qui CodeBuild emploi ou CodePipeline travail est en cours d'exécution. Si vous avez un CodePipeline l'écoute de /dev s'engage et l'autre écoute /master s'engage, par exemple, cela fonctionne parfaitement.Voici un exemple qui exécute une autre PROD vs DEV build:
Si vous ne souhaitez pas utiliser la FC, vous pouvez définir ENV vars sur votre CodeBuild projet dans AWS de l'INTERFACE utilisateur.
Dans AWS, allez à votre générateur de code du projet, dans le coin supérieur droit, cliquez sur "modifier" et sélectionnez "environnement". Sur la modification de l'environnement de la page, cliquez sur "Configuration Supplémentaire déroulant". De là, vous verrez les entrées pour le "nom" et "valeur". "Nom de" vous permet de définir votre ENV et "valeur" est l'endroit où vous définissez votre valeur de cette variable.
Exemple: set
API_ENV
dans "nom" etdevelopment
en "valeur". Puis, dans votre buildspec.yml, vous pouvez utiliser $API_ENV.J'ai créé une fonction lambda qui met à jour un codebuild projet de variables d'environnement. Vous pouvez le commencer à la construire (codebuild.démarrer) après la mise à jour des variables. Ressemble à quelque chose comme ceci (nodejs):
La CodeBuild initiateur est une variable d'environnement dans CodeBuild et cela peut être utilisé pour lire dans le CodePipeline nom.
Donc, si vous incluez votre environnement dans votre CodePipeline nom un suffixe (-dev ou -prod, par exemple), alors vous pouvez l'analyser comme donc.