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"?
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.
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.
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 :)
J'ai trouvé un autre moyen de forcer une nouvelle exécution des builds CI et d'autres déclencheurs:
git commit --amend --no-edit
sans aucune modification. Cela recréera le dernier commit de la branche actuelle.git Push --force-with-lease Origin pr-branch
.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:
Remarque: pour que cela fonctionne, vous devez avoir un accès en écriture au référentiel GitHub lié.
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:
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"
}
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.
Vous serez ensuite présenté avec une boîte de dialogue dans laquelle vous pouvez choisir la branche et personnaliser la configuration:
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).
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
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.
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".
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.
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
:
dependabot/cargo/tempfile-3.0.4
).