6 votes

Utilisation du numéro de build à partir de package.json

J'ai un projet Node dans Azure devops et j'aimerais définir le numéro de build à ce qui se trouve dans le package.json actuel, complété par un numéro. Ainsi, si mon package.json indique que la version est 0.0.1-beta, le numéro de build serait le suivant 0.0.1-beta+20190215.1 .

Il est facile d'obtenir la chaîne de version en utilisant npm : npm view <package-name> version mais je n'arrive pas à trouver où, dans le pipeline, le stocker et l'injecter pour l'utiliser comme numéro de construction. D'après ce que je sais, le numéro de build ne peut être défini que sous la forme d'une valeur codée en dur ou par l'intermédiaire de variables définies "manuellement", et non de manière dynamique, par exemple en utilisant la sortie d'une commande.

J'ai essayé d'utiliser des variables, d'abord une variable personnalisée qui n'a pas fonctionné. J'ai également trouvé une variable nommée Build.Buildname mais il semble que l'on ne puisse pas y écrire.

Des idées ?

C'est la section pertinente de mon pipeline de base.yaml que j'expérimente :

steps:
- task: NodeTool@0
  inputs:
    versionSpec: '8.x'
  displayName: 'Install Node.js'

- script: |
    npm install
    npmVersionString=$(npm view <package-name> version) 
    echo ##vso[task.setvariable variable=build.buildnumber]$npmVersionString
    npm run build
  displayName: 'npm install, set buildnumber and build'

11voto

Shayki Abramczyk Points 10627

Pour mettre à jour le numéro de build pendant la construction, vous ne pouvez pas simplement mettre à jour la variable Build.BuildNumber comme chaque variable, il existe une commande spéciale pour le faire :

##vso[build.updatebuildnumber]{build number}

Donc, dans votre cas, remplacez cette ligne

echo ##vso[task.setvariable variable=build.buildnumber]$npmVersionString

Avec cette ligne

    echo "##vso[build.updatebuildnumber]$npmVersionString"

(N'oubliez pas d'ajouter le numéro de construction si vous le souhaitez).

Exemple

- script: |
    npmVersionString=$(node -p "require('./package.json').version") 
    echo "##vso[build.updatebuildnumber]$npmVersionString"
  displayName: 'set build number'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X