Pour le dire en termes "BDD":
Contexte:
Étant donné que je contribue à un dépôt de GHLorsque je crée une demande de tirage
Alors Travis devrait construire le dernier commitLorsque je pousse vers une demande d'extraction existante
Alors Travis devrait construire le dernier commitLorsque je fusionne une demande de tirage pour la maîtriser
Alors Travis devrait construire le maître
J'ai été troublé par les paramètres de "push de construction" et de "construction de PR" de Travis-CI, comme:
Ceci est expliqué plus en docs Travis-CI et GH numéro # 3241 .
Quelqu'un connaît une configuration qui répond aux critères ci-dessus?
J'ai finalement trouvé un autre problème de GH ( # 2111 ) qui m'a donné l'idée d'essayer d'activer à la fois les RP et les push, mais avec une liste blanche pour restreindre les push à une branche spécifique. Cela semble répondre aux critères de mon flux de travail. Voici ce que j'ai fait:
.travis.yml
à liste blanche master
branche (c.-à-d. que seuls les push de build vers le master):succursales: uniquement: - maître
Testez-le en créant un PR avec le .travis.yml
change , et un autre PR avec des validations vides pour le vérifier fonctionne aussi pour les fourches .
Vérifiez génération de validation de fusion réussie à partir du maître .
Vient de se trouver dans travis docs
Ajouter à .travis.yml
if: type = Push
alternativement:
if: type = pull_request
L'approche de la liste blanche décrite dans la réponse acceptée présente certaines limites importantes. En particulier, il ne prend pas en charge la création de branches arbitraires non redondantes sans ouvrir de PR.
J'ai ouvert n problème demandant une meilleure solution .
Vous pouvez utiliser le workflow suivant si vous souhaitez tester non seulement la branche master
mais aussi d'autres branches:
Ajouter branches:except
directive à votre .travis.yml
:
branches:
except:
- /^pr\..*/
Dans cette configuration:
feature-A
déclenchera la constructionpr.feature-A
ne déclenchera pas la constructionpr.feature-A
est utilisé dans la demande de tirage ouverte, puis la génération sera déclenchéewip.feature-A
, tout commit sur cette branche déclenchera la constructionmaster
vous pouvez la renommer depuis wip.feature-A
à pr.feature-A
et demande d'ouverturepr.feature-A
Sur toutes les étapes ci-dessus, une seule génération sera déclenchée.
En supposant que vous vouliez construire tous les PR , quelque chose comme le suivant fera l'affaire. Activez les versions de branche et PR sur la page des paramètres et placez cette ligne comme première ligne dans votre travis.yml
:
if: (type = Push AND branch IN (master, dev)) OR (type = pull_request AND NOT branch =~ /no-ci/)
Cela tentera une génération Push sur toutes les poussées et une génération PR sur toutes les poussées vers un PR ouvert, mais filtrera toutes celles qui ne remplissent pas la condition. Vous devrez peut-être modifier cela un peu - la clause de ne pas créer de branches avec no-ci quelque part dans leur nom est évidemment facultative, et vous ne pouvez pas avoir deux branches sur lesquelles vous souhaitez toujours exécuter des builds.
Vous pouvez en savoir plus sur conditions et versions conditionnelles sur le site de Travis.