web-dev-qa-db-fra.com

Déclencher une reconstruction Travis-CI sans pousser un commit?

En utilisant Travis-CI, est-il possible de déclencher une reconstruction sans envoyer un nouveau commit à GitHub?

Cas d'utilisation: une construction échoue à cause d'une externalité. La source est en fait correcte. Il construirait bien et passera s'il suffit de le réexécuter.

Par exemple, un apt-get échoue car un serveur de package est en panne, mais le serveur est à nouveau activé. Cependant, le statut de construction est "bloqué" sur "échoué" jusqu'à ce qu'un nouveau commit soit poussé.

Existe-t-il un moyen pour Nudge Travis-CI de faire une autre construction, autre que de pousser un commit "factice"?

380
Greg Hendershott
  • Si vous avez un accès en écriture au référentiel : sur l'écran de détail de la construction, il y a un bouton avec l'info-bulle "Redémarrer la construction".

    Remarque : les extensions de navigateur telles que Ghostery peuvent empêcher l'affichage du bouton de redémarrage. Essayez de désactiver l'extension ou la liste blanche Travis CI.

    Note2 : Si la configuration de .travis.yml a été modifiée en amont, un clic sur le bouton de reconstruction lancera travis avec l'ancienne configuration. Pour appliquer les modifications en amont à la configuration de travis, il faut ajouter une validation à PR ou la fermer/rouvrir.

  • Si vous avez envoyé une demande d'extraction : Vous pouvez fermez le PR puis ouvrez-le à nouvea . Cela déclenchera une nouvelle construction.

ButtonPicutre

430
jbtule

Si vous ouvrez l'onglet Paramètres du référentiel sur GitHub, cliquez sur Intégrations et services , recherchez Travis CI et cliquez sur Modifier , vous devriez voir un bouton Test Service . Cela déclenchera une construction.

202
Aaron Hill

Je sais que vous avez dit sans pousser un commit, mais quelque chose de pratique, si vous travaillez sur une branche autre que master, est de commettre un commit vierge.

git commit --allow-empty -m "Trigger"

Vous pouvez rebase à la fin et supprimer squash/supprimer les commits vides et fonctionne sur tous les hooks git :)

75
jasonmit

J'ai trouvé un autre moyen de forcer une nouvelle exécution des builds CI et d'autres déclencheurs:

  1. Exécutez git commit --amend --no-edit sans aucune modification. Cela recréera le dernier commit de la branche actuelle.
  2. git Push --force-with-lease Origin pr-branch.
25
Vlad Frolov

Connectez-vous à Travis et accédez à la page de construction. Vous verrez un bouton "Redémarrer la construction" dans le coin supérieur droit, à côté de l'icône d'engrenage:

screengrab

Remarque: pour que cela fonctionne, vous devez avoir un accès en écriture au référentiel GitHub lié.

22
Juan

Si vous avez un nouveau projet sur GitHub qui a .travis.yml, mais n'a jamais été testé, vous pouvez exécuter des tests sans commettre de cette façon:

  1. activer les tests dans les réglages Travis CI
  2. ouvrir la page du projet sur GitHub
  3. paramètres ouverts -> Webhooks et services
  4. trouvez Travis CI dans les services et appuyez sur le bouton de montage
  5. appuyez sur "Test service"
20
lampslave

Vous pouvez le faire en utilisant le Travis CLI . Comme décrit dans la documentation , installez d'abord l'outil CLI, puis:

travis login --org --auto
travis token

Vous pouvez conserver ce jeton dans une variable d'environnement TRAVIS_TOKEN tant que le fichier dans lequel vous le conservez n'est pas contrôlé par la version, quelque part publique.

J'utilise cette fonction pour soumettre des déclencheurs:

function travis_trigger() {
     local org=$1 && shift
     local repo=$1 && shift
     local branch=${1:-master} && shift

     body="{
             \"request\": {
               \"branch\": \"${branch}\"
              }
           }"

     curl -s -X POST \
          -H "Content-Type: application/json" \
          -H "Accept: application/json" \
          -H "Travis-API-Version: 3" \
          -H "Authorization: token $TRAVIS_TOKEN" \
          -d "$body" \
          "https://api.travis-ci.org/repo/${org}%2F${repo}/requests"
 }
15
Sam Brightman

Travis offre maintenant un moyen de déclencher une construction "personnalisée" à partir de son interface utilisateur Web. Recherchez le bouton de menu "Autres options" situé à droite, en haut de la page de votre projet.

More Options → Trigger Build

Vous serez ensuite présenté avec une boîte de dialogue dans laquelle vous pouvez choisir la branche et personnaliser la configuration:

Custom Build Dialog Box

Au moment où j'écris ceci, il est en version bêta et semble être légèrement bogué (mais je m'attends à ce qu'ils résolvent rapidement les problèmes).

10
iconoclast

Si vous installez Travis CI Client , vous pouvez utiliser travis restart <job#> pour réexécuter manuellement une construction à partir de la console. Vous pouvez trouver le dernier numéro de travail d'une branche à l'aide de travis show <branch>

travis show master
travis restart 48 #use Job number without .1
travis logs master

Travis CI Client

UPDATE: Malheureusement, il semble que cela ne démarre pas une nouvelle construction utilisant le dernier commit, mais redémarre simplement une construction précédente en utilisant l'état précédent de la repo.

8
Greg Bray

Je devrais mentionner ici que nous avons maintenant un moyen de déclencher une nouvelle construction sur le Web. Voir https://blog.travis-ci.com/2017-08-24-trigger-custom-build pour plus de détails.

TL; DR Cliquez sur "Plus d'options" et choisissez "Générer le déclencheur".

4
banzaiman

Si la construction n'a jamais eu lieu (peut-être que le commutateur de génération Pull-Request n'a pas été activé à temps), vous pouvez marquer la demande d'extraction sur Github comme étant fermée, puis la marquer comme ouverte et une nouvelle génération sera déclenchée.

3
viperguynaz

Je viens de déclencher les tests sur une demande d'extraction à ré-exécuter en cliquant sur 'update branch' ici: github check tests component

1
Frazer Kirkman

Voici ce qui a fonctionné pour moi pour déclencher une reconstruction d'un PR que Dependabot avait ouvert, mais ayant échoué en raison d'erreurs dans .travis.yml:

  1. Fermer le PR
  2. Attendez que Dependabot fasse un commentaire ("OK, je ne vous informerai plus à propos de cette version, mais je vous contacterai dès qu'une nouvelle version sera disponible."). Il va supprimer sa branche.
  3. Restaurez la branche que Dependabot a supprimée (quelque chose comme dependabot/cargo/tempfile-3.0.4).
  4. Ouvrez à nouveau le PR
0
grooveplex