I selettori di funzioni sono metodologia utilizzata in una catena di integrazione/consegna continua (CI/CD) (metodologia di progetto Agile/Kanban). Fondamentalmente, si inviano nuove funzionalità alla produzione in uno stato disabilitato, quindi in una console di amministrazione attivare la funzionalità (o disattivare se si scopre che è rotto).
I rami di funzione possono essere parte di una metodologia di rilascio e integrati in una catena di integrazione continua. È possibile sviluppare in un ramo di funzionalità, distribuire il ramo su DEV/QA, ottenere la certificazione, unire il ramo di funzione a trunk, quindi spingere il trunk in ambienti SIT/UAT/PROD.
Ci sono pro e contro associati a questo approccio. La funzionalità di commutazione richiede una disciplina molto rigorosa in quanto il codice spezzato/scuro lo sta rendendo in produzione. Questo è ottimo per le start-up e i negozi dove la gestione sa come farlo e ha strumenti di automazione del sistema in atto (Chef/Puppet/cfengine, ecc.) Google, Facebook, LinkedIn, WordPress si distribuiscono negli ambienti di produzione tramite l'attivazione e l'automazione del sistema .
Esistono alcuni "tecnici" prerequisiti per il corretto funzionamento delle funzioni: Consegna/Distribuzione continua, Integrazione continua, Test unità automatizzato, Test di integrazione automatizzata, Test automatico di stress/prestazioni, Automazione del sistema. Se non si dispone di questi in luogo, prendere in considerazione una strategia di rilascio più semplice (ad esempio funzionalità di ramificazione.)
Due cose in aggiunta alle risposte seguenti: non è possibile avere sia Branche delle caratteristiche che Integrazione continua (a meno che non si configurino build automatizzate per ciascun ramo di funzionalità) e se si decide di selezionare Branche delle caratteristiche, armarsi di GIT (o simile) che ha potenti capacità di fusione. Raccomando anche di leggere il libro "Continuous Delivery" di Jez Humble. – spacedoom
@spacedoom: "Non è possibile avere entrambi i rami funzione e l'integrazione continua" - Non sono d'accordo. Molte soluzioni CI hanno un supporto esplicito per la creazione di rami di funzionalità. Ad esempio, Jenkins può persino creare automaticamente lavori di compilazione per qualsiasi ramo di feature rilevato in SCM. – sleske
Ulteriori informazioni http://stackoverflow.com/a/7707394/56145 –