Je viens de rejoindre un projet et je suis nouveau sur travis-ci. Je préfère ne pas avoir à pousser chaque petit changement vers .travis.yml et chaque petit changement que je fais à la source pour exécuter la construction. Avec jenkins, vous pouvez télécharger jenkins et l'exécuter localement. Est-ce que travis offre quelque chose comme ça?
Remarque: j'ai vu le clis travis-ci et l'ai téléchargé, mais tout ce qu'il semble faire est d'appeler leur API, qui se connecte ensuite à mon dépôt github, donc si je ne pousse pas, peu importe que je redémarre la dernière version.
install:
section, et c'est probablement celles-ci qui préoccupent le plus la question.Réponses:
Ce processus vous permet de reproduire complètement n'importe quel travail de construction Travis sur votre ordinateur. Vous pouvez également interrompre le processus à tout moment et déboguer. Voici un exemple où je reproduis parfaitement les résultats du travail # 191.1 sur php-school / cli-menu .
Conditions préalables
Configurer l'environnement de génération
Référence: https://docs.travis-ci.com/user/common-build-problems/
Créez votre propre ID de build temporaire
Affichez le journal de construction , ouvrez le bouton Afficher plus pour les INFORMATIONS SUR LE TRAVAILLEUR et recherchez la ligne INSTANCE, collez-la ici et exécutez (remplacez la balise après les deux-points par la plus récente disponible) :
Exécutez le serveur sans tête
Exécutez le client attaché
Exécutez le travail
Vous êtes maintenant dans votre environnement Travis. Courez
su - travis
pour commencer.Cette étape est bien définie mais elle est plus fastidieuse et manuelle. Vous trouverez toutes les commandes que Travis exécute dans l'environnement. Pour ce faire, recherchez tout dans la colonne de droite qui a une balise comme 0.03s.
Sur le côté gauche, vous verrez les commandes réelles. Exécutez ces commandes, dans l'ordre.
Résultat
C'est le bon moment pour exécuter la
history
commande. Vous pouvez redémarrer le processus et relire ces commandes pour exécuter le même test sur une base de code mise à jour.ssh-keygen -t rsa -b 4096 -C "YOUR EMAIL REGISTERED IN GITHUB"
alorscat ~/.ssh/id_rsa.pub
et cliquez ici pour ajouter une clégit pull
partir de l'intérieur du docker charger des validations depuis votre boîte de développement avant de les pousser vers GitHub.travis.yml
.la source
instance:
je ne vois pas de chemin d'image Docker valide, juste quelque chose commetravis-ci-garnet-trusty-1512502259-986baf0
. Essayétravisci/ci-garnet:$INSTANCE
ettravisci/$INSTANCE
- ne fonctionne pas, ne trouve pas l'image. Aussi, la simple prise du suffixe (c.-à-d.travisci/ci-garnet:packer-1512502259-986baf0
) N'a pas fonctionné.travisci/ci-garnet:packer-1512502276-986baf0
image qui est suggérée dans les documents Travis . Celui-ci est disponible, mais obsolète. Par exemple, CMake est bien plus ancien que celui disponible dans Travis. Aucune nouvelle version deci-garnet
n'a été téléchargée sur Docker Hub au cours des six derniers mois, alors qu'auparavant, il y avait de nombreuses mises à jour par mois.sudo: required
défini? Dans une version actuelle de la mienne, je voistravis-ci-sardonyx-xenial-1547455603-2c98a19
que je peux mapper sur travisci / ci-sardonyx: packer-1547455648-2c98a19Travis-ci propose une nouvelle infrastructure basée sur des conteneurs qui utilise Docker. Cela peut être très utile si vous essayez de dépanner une construction travis-ci en la reproduisant localement. Ceci est tiré de la documentation de Travis CI .
Dépannage local dans une image Docker
Si vous rencontrez des problèmes pour localiser le problème exact dans une build, il est souvent utile d'exécuter la build localement. Pour ce faire, vous devez utiliser notre infrastructure basée sur des conteneurs (c'est-à-dire avoir
sudo: false
dans votre.travis.yml
) et savoir quelle image Docker vous utilisez sur Travis CI.Exécution locale d'une image Docker basée sur un conteneur
Sélectionnez une image dans Docker Hub . Si vous n'utilisez pas de sélection d'image spécifique à la langue
ci-ruby
. Ouvrez un terminal et démarrez une session Docker interactive à l'aide de l'URL de l'image:Passer à l'
travis
utilisateur:/
dossier de l'image.la source
make test
.> Manually install any dependencies
Cela semble être un bon moyen de se retrouver avec des résultats qui ne correspondent pas aux versions régulières de Travis.Manually tun your Travis CI build command
... Comme quoi? Comment? Qu'Est-ce que c'est? J'ai un.travis.yml
dossier. J'ai essayé travis-build mais c'est une impasse.MISE À JOUR: J'ai maintenant une réponse clé en main complète, tout-en-un, voir https://stackoverflow.com/a/49019950/300224 . Cela n'a pris que 3 ans pour comprendre!
Selon la documentation de Travis: https://github.com/travis-ci/travis-ci, il y a une concoction de projets qui se complètent pour fournir le service Web Travis CI que nous connaissons et aimons. Le sous-ensemble de projets suivant semble autoriser les
make test
fonctionnalités locales à l'aide de.travis.yml
dans votre projet:travis-build
travis-build crée le script de construction pour chaque travail. Il prend la configuration du
.travis.yml
fichier et crée unbash
script qui est ensuite exécuté dans l'environnement de construction par travis-worker.livres de cuisine travis
travis-cookbooks contient les livres de cuisine Chef qui sont utilisés pour approvisionner les environnements de construction.
travis-travailleur
travis-worker est responsable de l'exécution des scripts de construction dans un environnement propre. Il diffuse la sortie du journal vers travis-logs et envoie les mises à jour d'état (début / fin de génération) à travis-hub.
(Les autres sous-projets sont responsables de la communication avec GitHub, leur interface Web, leur courrier électronique et leur API.)
la source
make test
fonctions serait formidable. Commentez si vous souhaitez travailler avec moi.travis-build
? Il n'y a pas d'instructions dans le dépôt.Semblable à Scott McLeod mais cela génère également un script bash pour exécuter les étapes à partir du .travis.yml.
Dépannage localement dans Docker avec un script Bash généré
la source
travis # to create ~/.travis
. Travis a besoin d'une commande pour s'exécuter.sudo - travis
devrait êtresu - travis
./home/travis/.rvm/rubies/ruby-2.4.1/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- travis/support (LoadError)
cd ~/.travis/travis-build/ bundle install bundler add travis bundler binstubs travis cd <REPO_YOU_WANT_TO_RUN_COMPILE_IN> ~/.travis/travis-build/bin/travis compile
Utilisez wwtd (que ferait travis) ruby gem pour exécuter des tests sur votre machine locale à peu près comme ils le feraient sur travis.
Il recréera la matrice de construction et exécutera chaque configuration, idéal pour vérifier la configuration avant de pousser.
la source
ruby
support uniquementtl; dr Utilisez l'image spécifiée sur https://docs.travis-ci.com/user/common-build-problems/#troubleshooting-locally-in-a-docker-image en combinaison avec https://github.com/ travis-ci / travis-build # use-as-addon-for-travis-cli .
MODIFIER 2019-12-06
#troubleshooting-locally-in-a-docker-image
La section a été remplacée par celle#running-builds-in-debug-mode
qui décrit également la procédure de connexion SSH au travail exécuté en mode débogage .MODIFIER 2019-07-26
#troubleshooting-locally-in-a-docker-image
la section ne fait plus partie de la documentation; Voici pourquoiCependant, c'est toujours dans l'histoire de git: https://github.com/travis-ci/docs-travis-ci-com/pull/2193 .
Recherchez les versions d'image (assez anciennes, impossible à trouver) sur: https://travis-ci.org/travis-ci/docs-travis-ci-com/builds/230889063#L661 .
Je voulais vérifier pourquoi l' un des tests de ma version a échoué avec une erreur que je n'obtiens pas localement.
Travaillé.
Ce qui a réellement fonctionné, c'est l'utilisation de l'image spécifiée dans Dépannage local dans une page de documentation Docker Image . Dans mon cas, ça l'était
travisci/ci-garnet:packer-1512502276-986baf0
.J'ai pu ajouter
travise compile
les étapes suivantes décrites sur https://github.com/travis-ci/travis-build#use-as-addon-for-travis-cli .Tout a
.travis.yml
été exécuté comme prévu (dépendances installées, tests exécutés, ...).Notez qu'avant d'exécuter,
bash ci.sh
j'ai dû changer--branch\=\'\'\
pour--branch\=master\
(voir l'avant-dernièresed -i ...
commande) dansci.sh
.Si cela ne fonctionne pas, la commande ci-dessous vous aidera à identifier le numéro de ligne cible et vous pouvez modifier la ligne manuellement.
Ça n'a pas marché.
A suivi la réponse acceptée pour cette question mais n'a pas trouvé l'image (
travis-ci-garnet-trusty-1512502259-986baf0
) mentionnée parinstance
à https://hub.docker.com/u/travisci/ .La version du générateur de travail pointe vers la validation travis-ci / worker et ses références install-travis-worker en
quay.io/travisci/
tant que registre d'images. J'ai donc essayé.Certainement pas Trusty (Ubuntu 14.04) et pas petit non plus.
la source
http_proxy
environnement pour moigit clone
. Par défaut,git clone
lance l'gnutls_handshake
exception. Je déteste donc imposer l'installation d'unebundler
version particulièregem install bundler -v 1.16.6
car elle abundler binstubs travis
échoué précédemment. Améliorez labundler
version requise en exécutant `bundle info travis`travis.yml
dans un script shell exécutable. Bien fait! La seule amélioration serait un mécanisme permettant d'éviter le remplacement manuel de la chaîne lors de la spécification de la branche à partir de laquelle créer.sed
commande qui répond au point que vous avez soulevé . Voir la commande avant d'exécuterbash ci.sh
.Vous pouvez essayer Trevor , qui utilise Docker pour exécuter votre build Travis.
De sa description:
la source
Je ne sais pas quelle était votre raison d'origine pour exécuter Travis localement, si vous vouliez simplement jouer avec, alors arrêtez de lire ici car cela ne vous concerne pas.
Si vous avez déjà de l'expérience avec Travis hébergé et que vous souhaitez obtenir la même expérience dans votre propre centre de données, lisez la suite.
Depuis décembre 2014, Travis CI propose une version Entreprise sur site.
http://blog.travis-ci.com/2014-12-19-introducing-travis-ci-enterprise/
Le prix fait également partie de l'article:
la source
whackamole
est donc une copie du projet sur lequel je veux vraiment travailler, et je peux configurer un travail de construction Travis temporaire pour ce projet pendant que je résout les problèmes de l'automatisation de la construction. Une fois que j'ai cloué, rebasez les dizaines de commits "oups" et passez au vrai dépôt GitHub. (Et supprimez probablement lewhackamole
dépôt GitHub et le travail Travis correspondant.)Il est possible de SSH à l'environnement Travis CI via un hôte de rebond. La fonctionnalité n'est pas intégrée à Travis CI, mais elle peut être obtenue par les étapes suivantes.
travis
utilisateur et assurez-vous que vous pouvez y accéder en SSH.Mettez ces lignes dans la
script:
section de votre.travis.yml
(par exemple à la fin).Où se
$bouncehostip
trouve l'IP / l'hôte de votre hôte de rebond et$sshpassword
votre mot de passe SSH défini. Ces variables peuvent être ajoutées en tant que variables chiffrées .Poussez les changements. Vous devriez pouvoir établir une connexion SSH avec votre hôte de rebond.
Source: Shell dans Travis CI Build Environment .
Voici l'exemple complet:
Voir:
c-mart/travis-shell
sur GitHub .Voir aussi: Comment reproduire un environnement de construction travis-ci pour le débogage
la source