Guida di Wordpress Git Workflow


17

Sto cercando una forte idea di flusso di lavoro per lavorare con Wordpress.

  1. Vorrei avere il mio ambiente git sul mio server internamente, non usando Github per gestire i repository.
  2. Creazione automatica di sottodomini al momento della creazione del ramo git (development.domain.com, ryan.development.domain.com) - Probabilmente alcuni hook della shell shell sarebbero ideali per questo.
  3. Phing PHP / Shell script Gestione della migrazione db (qualcosa come questo http://interconnectit.com/products/search-and-replace-for-wordpress-database/ ) per gestire la sostituzione di database serializzata dopo l'invio

L'operazione probabilmente andrebbe in questo modo:

  1. ottenere l'ultima versione attuale di wordpress e diramarla, il nome della filiale ottiene una voce di sottodominio (branchdevelopment.domain.com)
  2. sottometti il ​​tema che desideri se è disponibile (mi piacerebbe realizzare il mio repository git per questo, poiché utilizzo la tesi mi piacerebbe avere una configurazione vuota repository git repo per prendere internamente sul server che è già stato creato)
  3. fare il checkout e apportare modifiche, recensioni dei clienti, una volta che viene spinto a vivere, lo script del database si avvierà automaticamente cambiando i valori dell'URL serializzato da localhost (o sottodominio) all'url live

È possibile? Ho sentito che Capistrano è anche buono da usare con questo, ma non sono sicuro di come Capistrano funzioni completamente.

Gestisco circa 200 siti sul mio server e vorrei iniziare a implementare questi siti in un ambiente di flusso di lavoro git forte in modo da poter semplificare il mio lavoro molto meglio. A partire da ora, fondamentalmente scarico un'immagine del sito e ci lavoro localmente, quindi carico le modifiche sul server. Questo è molto noioso al giorno d'oggi.

Qualcuno ha qualche soluzione riguardo a questo tipo di flusso di lavoro / ha lavorato con questo in passato? In tal caso, alcune risorse / risposte sarebbero molto apprezzate.


3
Perché non usare bitbucket in quanto hanno repository illimitati gratuitamente?
Brian Fegter,

2
La ricerca di sostituzione ha una versione cli se si verifica il repository github, è possibile utilizzarlo, anche se non posso commentare come ottenere i vari URL e parametri per passarci dentro
Tom J Nowell

Risposte:


6

Risposte alle domande generali

Nr.1. Vorrei avere il mio ambiente git sul mio server internamente, non usando Github per gestire i repository.

La prima cosa che farei è controllare il compositore e come funziona con WordPress , che è un progetto di Andrey "@Rarst" Savchenko .

Nr.2. Creazione automatica di sottodomini al momento della creazione di git branch ( development.example.com, ryan.development.example.com) - Probabilmente un hook di script shell sarebbe l'ideale per questo.

Questo è qualcosa che non rientra nell'ambito di questo sito. Chiedi aiuto su StackOverflow o chiedi al tuo hoster. Alcuni hoster non consentono di modificare queste voci da soli.

Nr.3. Phing PHP / Shell script Gestione della migrazione db (qualcosa come questo http://interconnectit.com/products/search-and-replace-for-wordpress-database/ ) per gestire la sostituzione di database serializzata dopo l'invio

Configurerei un'installazione multisito / di rete. Ciò consente di gestire facilmente tutte le tabelle, mantenere gli utenti in un posto centrale, ecc.

WP Gear - un progetto di Robert "@Wyck" Ellison - ha un elenco di script di build alternativi. Incluso WordPhing scritto da solo. Lo script @TomJNowells /Interconnect.it finora non è in quell'elenco .

Risposte alle domande operative

Nr. 1. ottenere l'ultima versione attuale di wordpress e diramarla, il nome della filiale ottiene una voce di sottodominio (branchdevelopment.domain.com)

Non so perché uno voglia fare questo: un sottodominio per ogni ramo. Quando guardi il repository GitHub di WordPress sincronizzato e l' elenco dei rami , vedrai che ogni ramo è chiamato X.Y-branch. Quindi i tuoi sottodomini verranno nominati per es 3.6-branch. Non sono sicuro se un sottodominio può iniziare con una cifra (dovrebbe essere, ma chiedi al tuo hoster) e quindi c'è il problema che avresti un sottodominio chiamato 6-branch, che ha un sotto-sottodominio chiamato 3e un altro di nome 2. E indovinare l' associazione di rami di versione 2 e 3 in un sottodominio non è ciò che si desidera ottenere.

In breve: solo checkout 3.6-branchse è necessario cambiare ramo.

Nr.2. sottometti il ​​tema che desideri se è disponibile (mi piacerebbe realizzare il mio repository git per questo, poiché utilizzo la tesi mi piacerebbe avere una configurazione vuota repository git repo per prendere internamente sul server che è già stato creato)

Thomas "@toscho" Scholz ha scritto un bel plugin che ci consente di utilizzare un sottodominio per gestire i temi al di fuori della directory di WordPress. Puoi trovarlo in questa risposta così come in questa . Anche gli aggiornamenti automatici funzioneranno per i temi dal WP 3.6.

Puoi fare lo stesso per MU-Plugin e Plugin semplicemente impostando le seguenti costanti nel tuo wp-config.phpfile:

define( 'WP_PLUGIN_DIR',   'path/to/your/plugins.dev/folder/plugins' );
define( 'WP_PLUGIN_URL',   'https://plugins.dev/plugins' );
define( 'WPMU_PLUGIN_DIR', 'path/to/your/plugins.dev/folder/mu-plugins' );
define( 'WPMU_PLUGIN_URL', 'https://plugins.dev/mu-plugins' );

Ora metti semplicemente tutti i tuoi plugin e temi sotto il controllo della versione e trasferiscili sul tuo server. Puoi facilmente renderli tutti disponibili utilizzando mu-plugins o plugin predefiniti che attivano la rete.

Nr. 3 checkout e apportare modifiche, recensioni dei clienti, una volta che viene spinto a vivere, lo script del database si avvierà automaticamente cambiando i valori dell'URL serializzato da localhost (o sottodominio) all'url live

Se lo script / plugin di Toms non ti ha aiutato finora, ti viene detto che accetta la richiesta pull su GitHub .


2
In 2 mesi frequento questo sito, capisco che "Avrei installato un sito multiplo / installazione di rete" è la tua frase preferita :)
gmazzap

@GM hehe :) Sì, lo è. In generale, non capisco nemmeno perché abbiamo ancora siti singoli. Con un'installazione di rete, il tuo dominio / sito principale è esattamente lo stesso dell'installazione di un singolo sito. Hai solo molte opzioni e possibilità al di sopra di esso.
Kaiser,

In generale, sono d'accordo. I motivi per installare un singolo sito sono: 1) accesso limitato al server 2) gran parte del codice esistente (plugin, temi, snippet) non funziona correttamente o ha problemi con le installazioni newtwork. Quindi, se non riesci / non puoi scrivere codice da solo e in realtà non hai bisogno di un inslall di rete, è preferibile utilizzare una singola installazione.
gmazzap

1
Se lo script Toms non funziona, è disponibile un parser serializzato con funzionalità complete nell'area utente PHP chiamato Serialized .
Hacre,

@hakre Come sempre: modifica la mia domanda :)
kaiser,

3

Non c'è tempo per scrivere una risposta completa (conosco una specie di zoppo) ma probabilmente vale la pena condividerla comunque (potrei modificarlo perché pianifico un post sul blog anche su questo):

Ciò significa che puoi avere una configurazione WP basata su trunk / versione-ramo che puoi hackerare completamente incl. temi e plugin.

Poiché si tratta di un repository (locale) indipendente, è possibile inviare questo tramite ssh ad altri repository, ad esempio uno:

  • Che si trova sull'host remoto in cui il sito dovrebbe essere distribuito in (repository nudo).
  • Questo ha gli hook per fare in modo che un altro repository su quell'host si fonda effettivamente nelle modifiche che hai appena spinto.

Questo è delineato in Un flusso di lavoro Git incentrato sul web (novembre 2008; di Joe Maller) .

Se si dispone quindi di uno switcher di configurazione che sceglie il calcestruzzo in wp-config.phpbase al sistema su cui è in esecuzione, è anche possibile configurare centralmente tutti gli host (sviluppo, live, staging, amici, ...) all'interno del repository.

Le modifiche a monte in WP vengono semplicemente recuperate e unite nella sottostruttura.

Plugin appena aggiornati e impegnati.

La distribuzione è semplice $ git push remote.

Esegui backup giornalieri sull'host remoto per i repository git, il database e i file caricati e questo è economico, intuitivo e flessibile. Questo funziona bene per le configurazioni a sviluppatore singolo e per i piccoli team perché tutti possono effettuare il checkout dalla riproduzione remota sul telecomando.


Ci sono alcuni avvertimenti:


Ora con la tua lista di controllo e l'installazione come indicato sopra:

1. Vorrei avere il mio ambiente git sul mio server internamente, non usando Github per gestire i repository.

Github gestisce solo repository upstream qui (Wordpress), non il tuo.

2. Creazione automatica di sottodomini al momento della creazione del ramo git (development.domain.com, ryan.development.domain.com) - Probabilmente alcuni hook della shell shell sarebbero ideali per questo.

L'installazione come indicato è un approccio modulare con un repository per sito. Può gestire tutti gli host di sviluppo che desideri, allo stesso modo potrebbe funzionare bene con un'installazione multi-sito per gestire più domini, ma questo conterebbe come una configurazione wordpress in questo approccio.

3. Phing PHP / Shell script Gestione della migrazione db (qualcosa come questo http://interconnectit.com/products/search-and-replace-for-wordpress-database/ ) per gestire la sostituzione di database serializzata dopo aver premuto

Questo non è necessario qui poiché solo il codice è sotto il controllo della versione, i database sono indipendenti tra sviluppo (, gestione temporanea) e produzione come dovrebbe essere.

Potresti essere alla ricerca di uno script di installazione che esegua correttamente la migrazione del dominio, ma anche con un codice migliore (disponibile) che si occupa della ricerca e della sostituzione di dati serializzati, in questa configurazione qui normalmente non è necessario poiché fai semplicemente passare le modifiche in diretta , per i casi di test è possibile creare rapidamente il contenuto nel database di sviluppo, che di solito è il problema più piccolo (dalla mia esperienza pratica, il tuo potrebbe essere diverso, ma suggerirei anche di mantenere tali argomenti relativi alla migrazione del database su questioni relative possedere qui sul sito - ma per favore chiedetelo).

Gestisco circa 200 siti sul mio server e vorrei iniziare a implementare questi siti in un ambiente di flusso di lavoro git forte in modo da poter semplificare il mio lavoro molto meglio.

Non riesco a immaginare come sarebbero diventati quei siti in un ambiente di flusso di lavoro con string git. Forse gli script di configurazione e i dati di configurazione che gestisci qui saranno mantenuti sotto il controllo della versione di git. Potrebbe avere senso. Altrimenti, per la mera quantità di siti, penso che non abbia alcun senso mantenere tutti quelli in un repository git. Forse nemmeno uno di quelli perché ciò che ho descritto sopra è per i siti sviluppati (incluso il codice core WP), non solo per le attività di installazione. Quindi probabilmente dovrai prima di tutto crearti una piccola mappa di quei 200 siti e come interagiscono tra loro e da quali pacchetti (core WP, Plugin, Temi) consistano quei siti. La prima cosa potrebbe essere la creazione di un foglio di calcolo / matrice e inserire tutti i siti.

È quindi possibile salvarlo come CSV, metterlo sotto controllo di versione e fare in modo che gli script di distribuzione facciano il loro lavoro in base a quel file.

E se ho imparato qualcosa con le attività di automazione: segui la filosofia Unix, usa gli strumenti esistenti e ben funzionanti (è meglio passare mezza giornata a leggere alcuni comandi e poi a cercare alternative perché per la maggior parte dei lavori, i problemi sono stati risolto già) e concentrarsi sugli strumenti da riga di comando. Sono i più potenti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.