2016-02-29 2 views
3

Notre projet est imbriqué dans un référentiel mono. Imaginez ceci, nous avons un projet dans un dossier "projets". Par exemple "projets/notre-projet". Eh bien, nous aimerions être en mesure de vérifier notre .drone.yml en seulement "notre-projet", mais il semble que Drone veut le fichier de configuration à la racine du projet, ce qui est ok, nous pouvons travailler avec cela en changeant le " commandes "section de nos builds. Le problème que nous rencontrons est que nous voulons seulement exécuter les builds quand quelque chose dans "notre-projet" change. Je n'arrive pas à trouver un moyen de faire ça avec Drone donc notre prochain pari le plus proche est conditions, je pense que nous pouvons créer des espaces de noms pour "notre-projet" comme ceci "notre-projet/une branche". Ensuite, nous pourrions mettre en place une condition, à terme ne se fonde sur « notre projet/une branche » et « maître » cela limiterait le nombre de « faux construit » nous courons d'autres branches de projets:Utilisation de "Conditions de drone" pour exécuter une partie de build d'un référentiel

build: 
    when: 
    branch: 
     - master 
     - our-project/* 

Le problème est que lorsque nous essayons d'envoyer une requête d'une branche "notre-projet/" vers "master", la construction ne s'exécute pas, je devine parce qu'elle est exécutée sur un commit de fusion qui n'est pas en master ou « notre projet/ »

Ma question est double: 1. Quelle est la meilleure façon de tirer parti de drone en utilisant le modèle de référentiel mono (plusieurs projets, un référentiel) 2. Si drone ne ne pas avoir de support pour ce modèle ou n'est pas conçu pour cela, quelle est la meilleure solution pour limiter les "fausses builds"?

Note: Nous pourrions au début de notre construction vérifier les changements dans nos sous-ensembles. dossier et renvoyer un vert s'il n'y en a pas. Je suis une approche recommandée?

+1

Hey, avez-vous résolu ce problème? J'ai besoin de la même chose .. exécuter l'étape sur la branche «maître» et sur les demandes de traction. – jakubka

Répondre

0

Je suppose que Drone applique une mise en page spécifique du projet, car une contrainte:

  • Drone est déclenchée par les événements suivants: pousser, tirer la demande, l'étiquette, le déploiement. Tous les déclencheurs sont des événements de niveau de référentiel.

Les deux contraintes suivantes sont également importantes, mais pas déterminant dans ce cas:

  • un dépôt, un .drone.yml, un pipeline
  • .drone.yml doit être à la racine du projet

Si vous avez un référentiel contenant plusieurs projets, quelle que soit la structure, vous ne pouvez pas déclencher le pipeline de génération en fonction de la mise à jour des actifs spécifiques.

Si vous avez de gros projets multi-modules et que vous ne voulez pas générer le projet entier à chaque poussée, la meilleure chose à faire est de refactoriser le projet en plaçant chaque module dans son propre référentiel et en configurant en aval/en amont s'appuie sur les dépendances/dépendants selon les besoins.