Comprendo il classico modello di distribuzione e distribuzione come detto (in alcune piccole varianti di seguito):
- apporta le modifiche sul ramo dev
- unisci dev > staging branch, distribuire sul server di staging, testarlo
- unisci dev > ramo di produzione, distribuire il server di produzione.
- non effettuare commit direttamente sui rami di staging o produzione. Unisci solo le modifiche in quei rami da dev.
Il mio problema è relativo al punto (4): ho alcuni file che saranno diversi a seconda che stia girando su dev, staging o produzione. Questi possono includere cose come robot.txt, file di avvio del server (forse lo staging è su Heroku e il lancio con un Procfile mentre la produzione è su EC2), ecc. Cose che sono specifiche della versione di distribuzione e non specifiche dell'applicazione.
Il modello di ramificazione sopra riportato sembra dire che subito dopo l'esecuzione completa della distribuzione, production = staging = dev. Tuttavia, non lascia spazio per quelle regolazioni tra i diversi ambienti.
Come viene risolto nell'industria?
===== soluzioni Posso pensare =======
-
utilizzando le variabili di ambiente su ogni ambiente. Il lavoro per in switch di configurazione del codice. Lo uso già ma non vedo come questo possa influire su modifiche che si trovano al di fuori del codice dell'applicazione.
-
aggiungendo le modifiche alla distribuzione come commit direttamente sul ramo di staging e produzione e l'unione delle modifiche dell'applicazione da dev (ad esempio, la gestione temporanea conserva una versione diversa di robot.txt, quindi di produzione). Sembra contraddire il punto (4)