Je cherche un moyen de configurer rapidement et de manière répétée l’environnement testing/debugging pour notre plugin, en utilisant très probablement Vagrant . Les projets tels que VVV se concentrent sur une configuration à environnement unique (ou sur quelques environnements tels que stable/trunk), alors que je cherche un script qui installe les environnements suivants:
Y a-t-il une telle chose? Le plus proche que j'ai trouvé est WordPress Vagrant Boxes qui fait au moins PHP versions, mais il existe peut-être quelque chose de plus complet qui ajoute également des versions WordPress au mélange. Merci.
Du côté de WordPress, environnement de base WordPress Vagrant est prêt à fonctionner avec n’importe quelle version de WordPress (avec un peu d’aide). Vous devez toujours trouver un moyen de configurer PHP, mais il existe un indice dans https://github.com/ideasonpurpose/basic-wordpress-box/blob/master/ansible/roles/php/tasks/php.yml
.
Pour l'utiliser hors de la boîte; Téléchargez ou clonez le projet dans wplatest-php55.dev/
et exécutez vagrant up
L’installation de Vagrant Host Manager liera automatiquement l’adresse IP à votre dossier http://wplatest-php55.dev/
Génère plusieurs environnements à partir de WP versions via install-wp.sh
Recherchez dans l’archive des versions possibles de WordPress https://wordpress.org/download/release-archive/
_
# PWD (script directory)
# ├── common_folder
# ├── wp39-php55.dev
# │ └── site/common_folder
# ├── wp42-php55.dev
# │ └── site/common_folder
# └── wp431-php55.dev
# └── site/common_folder
Voici un script qui extrait le maître d’environnement Vagrant dans le répertoire du script bash, clone un site pour chaque version du tableau, configure la tâche d’installation de manière à utiliser cette version WP et vous permet de spécifier un fichier/dossier. copier sur tous les sites avant vous vagrant up
.
Mettez ceci dans un fichier install-wp.sh
puis exécutez chmod +x install-wp.sh
pour le rendre exécutable. Recherchez un dossier dans lequel vous souhaitez créer toutes ces zones et exécutez ./install-wp.sh
. Cela va générer la structure ci-dessus.
Puisque vous voulez tester votre plug-in dans toutes les versions, créez un dossier dans le même répertoire que le script wp-content/plugins/your-plugin
, puis exécutez install-wp.sh wp-content
. Le fichier/dossier est copié à la racine de chaque site, c'est pourquoi je suggère wp-content
.
install-wp.sh
#!/bin/bash
#
# Author: Jesse Graupmann @jgraup - http://www.justgooddesign.com - 2015
#
# Create multiple WordPress sites based on version numbers in array.
#
# ( OPTIONAL )
# Copy common file/folder to all sites - Pass as parameter $1
#
# Each site runs in a Vagrant Environment:
# https://github.com/ideasonpurpose/basic-wordpress-vagrant
#
# Best if used with:
# https://github.com/smdahlen/vagrant-hostmanager
#
# PWD (script directory)
# ├── common_folder
# ├── wp39-php55.dev
# │ └── site/common_folder
# ├── wp42-php55.dev
# │ └── site/common_folder
# └── wp431-php55.dev
# └── site/common_folder
# WordPress Versions
versions=( 3.9 4.2 4.3.1 )
# Move to the current directory
base=$(pwd); cd $base
# Vagrant Environment
remote_master="https://github.com/ideasonpurpose/basic-wordpress-vagrant/archive/master.Zip"
vagrant_master_Zip=$base/basic-wordpress-vagrant.Zip
# Download Latest Environment - overwrite file for latest
wget -v -O $vagrant_master_Zip $remote_master
# Loop through version #s
for VERSION in "${versions[@]}" ; do
flatv="${VERSION//.}"
dirname=wp$flatv-php55.dev
# Clone Environment
echo -e "\nCloning to: $base/$dirname\n"
mkdir -p $base/$dirname
tar -zxvf $vagrant_master_Zip -C $base/$dirname --strip-components=1
# WordPress Versions
# Archives: https://wordpress.org/download/release-archive/
# Version: https://wordpress.org/wordpress-{{ wp-version }}.tar.gz
# Latest: https://wordpress.org/latest.tar.gz
# Path to Ansible task
yml=$(cat $base/$dirname/ansible/roles/wordpress/tasks/install.yml)
### REPLACE THE ANSIBLE WP VERSION w/OUR VERSION
wp_url_latest="https:\/\/wordpress.org\/latest.tar.gz"
wp_url_version="https://wordpress.org/wordpress-$VERSION.tar.gz"
echo "${yml/$wp_url_latest/$wp_url_version}" > $base/$dirname/ansible/roles/wordpress/tasks/install.yml
# (OPTIONAL) Copy common file/folder to all sites!
# pass as argument to .sh
#
# Example Folder:
# Make a common wp-content folder, then run install with
#
# ./install-wp.sh wp-content
#
# Example File:
# Make a text file, then run install with
#
# ./install-wp.sh my_file.txt
#
common_dest=$base/$dirname/site/
# Copy Folder
if [ -d "$1" ]; then
echo "Copying $1 --> $common"
# Directory must exist
if [ -d "$1" ]; then
folder_name=$(basename $1)
mkdir -p $common_dest/$folder_name;
fi
cp -r $1 $common_dest
# or File
Elif [ -f "$1" ]; then
echo "Copying $1 --> $common_dest"
file_name=$(basename $1)
cp $1 $common_dest/$file_name
fi
## Create doc for quick glance at version number
dest="$base/$dirname"
remotewpzip="https://wordpress.org/wordpress-$VERSION.tar.gz"
txt=$dest/download-wp-$VERSION.txt
touch $txt
printf "WordPress Version: $VERSION - https://wordpress.org/download/release-archive/\n\nDownload Zip: $remotewpzip\n" > $txt
done
# The rest is just for show
echo -e "\nDone!\n\nNow just run 'vagrant up' in any of these:\n"
for VERSION in "${versions[@]}" ; do
flatv="${VERSION//.}"
dirname=wp$flatv-php55.dev
echo -e "\t"$base/$dirname "\thttp://"$dirname
done
echo -e "\nMore Vagrant env info @ https://github.com/ideasonpurpose/basic-wordpress-vagrant"
echo -e "Best if used with https://github.com/smdahlen/vagrant-hostmanager\n\nENJOY!"
Mise à jour:
Il s'avère que le environnement de base WordPress Vagrant n'est pas vraiment configuré pour gérer plusieurs versions de PHP, mais le boîte de base Wordpress pourrait l'être si vous ajustez le PHP tâche . J'ai pensé laisser un shell d'un script qui aurait géré plusieurs versions de PHP.
#!/bin/bash
############################################
#
# PWD (script directory)
# ├── wp39-php55.dev
# ├── wp42-php55.dev
# └── wp431-php55.dev
#
############################################
# WordPress Versions
versions=( 3.9 4.2 4.3.1 )
# PHP Versions
pversions=( 5.4 5.5 5.6 )
############################################
# Move to the current directory
base=$(pwd); cd $base
############################################
# PHP Loop
for PVERSION in "${pversions[@]}" ; do
pflatv="${PVERSION//.}"
echo -e "==> PHP: $PVERSION\n"
# WordPress loop
for VERSION in "${versions[@]}" ; do
flatv="${VERSION//.}"
############################################
dirname=wp$flatv-php$pflatv.dev
############################################
# Environment
echo -e "\t"$base/$dirname "\thttp://"$dirname
mkdir -p $base/$dirname
############################################
# WordPress Versions
# Archives: https://wordpress.org/download/release-archive/
# Version: https://wordpress.org/wordpress-{{ wp-version }}.tar.gz
# Latest: https://wordpress.org/latest.tar.gz
############################################
wp_url_latest="https:\/\/wordpress.org\/latest.tar.gz"
wp_url_version="https://wordpress.org/wordpress-$VERSION.tar.gz"
# Download WP
echo -e "\tDownload WP: $wp_url_version"
############################################
# PHP Packages at https://launchpad.net/~ondrej
# You can get more information about the packages at https://deb.sury.org
# For PHP 5.6 use: ppa:ondrej/php5-5.6
# For PHP 5.5 use: ppa:ondrej/php5
# For PHP 5.4 use: ppa:ondrej/php5-oldstable
############################################
# Config PHP
echo -e "\tConfigure PHP: $PVERSION\n"
done # WordPress version
done # PHP version
exit 1
Avez-vous regardé ça?
Si apparaît pour vous aider à créer des fichiers de configuration. On dirait que vous pouvez configurer plusieurs hôtes virtuels et le faire exécuter des commandes personnalisées post-init. Vous pourriez donc le faire configurer tous les dossiers, hôtes et bases de données, puis copier vos versions souhaitées avec les fichiers wp-config associés? Un peu de mise en place au départ, mais pourrait fonctionner.
J'utilise un script Shell, moi-même. wp-install www.domain.com
Actuellement, ne fonctionne que pour une installation mais ne serait pas impossible à configurer, il faut quelques arguments ou un fichier 'config' supplémentaire pour configurer plusieurs hôtes virtuels. Comme vous l'avez mentionné, je supposerai que ce qui précède répond plus à vos besoins.
Bonne chance!
Tout dépend de ce que vous voulez utiliser et du type de système d'exploitation que vous allez développer avec ...
Pour vagrant, voici l'automatisation de la configuration avec VVV: https://github.com/bradp/vv
Et quelques autres construits sur vagabond:
https://github.com/vagrantpress/vagrantpress
https://github.com/tierra/wp-vagrant
Cependant, je suggère d'essayer panthéon . Il vous permet de faire tout cela gratuitement et a une intégration avec wp-cli, git, behat, etc. Il existe d'autres plates-formes hébergées qui possèdent ces fonctionnalités telles que https://www.appfog.com/ et même wpengine je crois.
Cela dépend aussi du nombre de fois que vous souhaitez configurer. Si vous cherchez seulement un moyen rapide de configurer WordPress, il existe des tonnes de scripts sur github tels que this ou utilisez simplement wp-cli.