2015-08-10 12 views
5

Desidero utilizzare Github Pages per pubblicare un sito Web di produzione (ad esempio, www.example.com) e anche una versione di staging dello stesso sito (ad esempio, staging.example.com).Creazione di versioni di staging e produzione di un sito su Github Pages

Ho creato un repository (ad es. My-jekyll-website) in Github per il sito di produzione, creato un ramo gh-pages e impostato il file CNAME nel livello root del repository su www.example. com. Funziona alla grande.

Ora, qual è il modo meno doloroso per essere in grado di inviare modifiche a staging.example.com?

Una cosa che ho provato è impostare un secondo repository remoto su Github (ad esempio my-jekyll-site-staging), quindi aggiungerlo come remoto alla mia git config locale. Funziona alla grande, eccetto che il file CNAME nel repository deve essere modificato in staging.example.com perché funzioni. Il che non va bene, perché quando voglio distribuire in produzione, dovrei cambiare il file CNAME su www.example.com. Non ideale

Ho guardato usando git filter content drivers, ma se ho capito bene, si tratta di modificare i file localmente, non ottenere versioni diverse di un file spinto a diversi telecomandi.

Modifica: ho anche considerato di non utilizzare un dominio personalizzato per la gestione temporanea: cioè, utilizzando semplicemente username.github.io/my-jekyll-website-staging. Sfortunatamente, quindi i miei collegamenti relativi alla radice del sito (ad es. /images/foo.bar) si interrompono, perché la baseurl ora è diversa tra produzione e staging.

+1

Non si può semplicemente unire il ramo git di staging nel ramo di produzione e premere? Puoi semplicemente mantenere i CNAME puntati permanentemente ai loro rispettivi repository, ma manipolare i repository separatamente. –

+0

@JonathanChan Quando unisco il mio ramo di staging locale nel mio ramo gh-pages locale, anche l'impostazione CNAME dal ramo di staging viene superata. Se poi spingo gh-pages al mio telecomando di produzione, il CNAME sarà errato. Sto cercando di evitare di dover regolare manualmente il record CNAME quando spingo diversi rami su diversi telecomandi. – Jacob

+1

Fai come dice @JonathanChan, quindi [dirottare] (http://stackoverflow.com/a/6793752/5195629) il tuo file CNAME. – Shadowen

risposta

4

Tirato da osservazioni di cui sopra:

[M] si erge il ramo messa in scena git nella produzione ramo e spinta Si può solo mantenere il CNAME che punta in modo permanente ai rispettivi pronti contro termine, ma manipolare il [.] repos separatamente.

Commento in origine da Jonathan Chan

Non come dice @JonathanChan: mantenere due rami separati, quindi hijack il file CNAME in ciascuno di essi. In questo modo le modifiche locali (al CNAME) non verranno confermate nel repository.

+0

Le versioni locali dei file non sono rilevanti per Github Pages, solo ciò che viene inviato al repository. In che modo il dirottamento di un file ti consente di avere diversi file CNAME in rami completamente uniti? – janpio

+0

La chiave (o forse "il compromesso", suppongo) è che, oltre a due repository remoti, è necessario anche mantenere rami locali separati (uno per la gestione temporanea e uno per la produzione) o repository locali separati (uno per messa in scena e uno per la produzione). – Jacob

Problemi correlati