9
votes

Comment créer une version d'artefacts à l'aide d'actions GitHub?

Mon cas d'utilisation est que je souhaite avoir un numéro de version unique pour les artefacts pour chaque build / exécution. Avec les outils actuels comme CircleCI, Travis, etc., il y a un numéro de build disponible qui est essentiellement un compteur qui augmente toujours. Ainsi, je peux créer des chaînes de version comme 0.1.0-27 . Ce compteur est augmenté à chaque fois même pour le même commit.

Comment puis-je faire quelque chose de similaire avec les actions GitHub? Les actions Github n'offrent que GITHUB_SHA et GITHUB_REF.


2 commentaires

Le fichier JSON $ GITHUB_EVENT_PATH contient-il une sorte d'identifiant unique que vous pouvez utiliser?


Cependant, GITHUB_SHA ne serait-il pas la manière idiomatique de faire cela? Un compteur peut rapidement devenir déroutant, si vous avez plusieurs succursales, etc.


4 Réponses :


1
votes

Si vous voulez un incrément entier constant (1, 2, 3, 4, 5), je n'ai rien trouvé dans la documentation que vous puissiez utiliser comme incrément qui soit conscient du nombre de fois que cette action particulière a été exécutée. Il y a deux solutions auxquelles je peux penser:

  1. Maintien de l'état sur le dépôt : par exemple avec un fichier count.build qui utilise l'ID de workflow et vous l'incrémentez lors de la compilation. C'est ma solution la moins préférée des deux car elle ajoute d'autres complexités, comme elle déclenchera elle-même un événement push. Vous pouvez stocker ce fichier ailleurs comme S3 ou dans un Gist.

  2. Utilisation de la date : si vous ne vous inquiétez pas de la séquence sur l'incrément entier, vous pouvez simplement utiliser les données et l'heure actuelles, par exemple 0.1.0-201903031310 < / code> pour aujourd'hui à 13h10.

Que vous ayez accès à Actions bêta, je le transmettrai certainement à GitHub.

J'espère que cela aide.


0 commentaires

1
votes

Vous pouvez utiliser GitVersion pour générer des versions incrémentées à partir de balises dans Git. Le PR à https://github.com/GitTools/GitVersion/pull/1787 a quelques détails, mais en gros, vous pouvez définir ce travail:

- uses: actions/checkout@v1
    - name: Get Git Version
      uses: docker://gittools/gitversion:5.0.2-beta1-34-linux-debian-9-netcoreapp2.1
      with:
        args: /github/workspace /nofetch /exec /bin/sh /execargs "-c \"echo $GitVersion_MajorMinorPatch > /github/workspace/version.txt\""


0 commentaires

7
votes

J'ai eu le même problème et je viens de créer une action pour générer des numéros de build séquentiels. Utilisez-le comme

- uses: einaregilsson/build-number@v1
  with:
    token: ${{secrets.github_token}}

Dans les étapes suivantes, vous aurez une variable d'environnement BUILD_NUMBER . Pour plus d'informations sur l'utilisation du même numéro de build pour différentes tâches et plus encore, consultez https://github.com/ einaregilsson / build-number /

MISE À JOUR: Il y a maintenant une variable $ GITHUB_RUN_NUMBER intégrée dans GitHub Actions, donc cette approche n'est plus nécessaire.


3 commentaires

J'adore le hack élégant ici. Utiliser des balises comme magasin d'état est génial.


Merci :) J'ai eu beaucoup de plaisir à le construire, j'ai écrit un peu à ce sujet sur einaregilsson.com/...


Bravo. approche très intelligente



7
votes

GitHub Actions a maintenant un numéro et un ID uniques pour une exécution / construction dans le contexte github .

github.run_id : un numéro unique pour chaque exécution dans un référentiel. Ce nombre ne change pas si vous relancez l'exécution du workflow.

github.run_number : numéro unique pour chaque exécution d'un flux de travail particulier dans un référentiel. Ce nombre commence à 1 pour la première exécution du workflow et s'incrémente à chaque nouvelle exécution. Ce nombre ne change pas si vous relancez l'exécution du workflow.

ref: https://docs.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions#github-context

Vous peut les référencer dans des workflows comme celui-ci:

      - name: Output Run ID
        run: echo ${{ github.run_id }}
      - name: Output Run Number
        run: echo ${{ github.run_number }}


0 commentaires