Варіант сценарію для налаштування всіх загальних комбінацій версій PHP / WordPress


9

Я шукаю спосіб швидко та неодноразово налаштовувати середовище тестування / налагодження для нашого плагіна, швидше за все, використовуючи Vagrant . Такі проекти, як VVV, зосереджуються на налаштуваннях для одного середовища (або, декількох середовищах, таких як стабільний / магістральний), тоді як те, що я шукаю, - це сценарій, який налаштовував би такі середовища, як:

  • wp39-php52.local
  • wp40-php52.local
  • wp41-php52.local
  • wp39-php53.local
  • wp40-php53.local
  • і т.д. (ви отримаєте ідею)

Чи є таке? Найближчий я знайшов WordPress Vagrant Boxes, який принаймні має версії PHP, але, можливо, є щось більш повне, що також додає версії WordPress до суміші. Дякую.


Ви, напевно, знайомі з Тревісом CI . Існує сценарій, який дозволить перевірити різні версії WordPress та PHP у вашій збірці Travis . Звичайно, можливість налаштувати щось подібне локально було б краще для деяких налагоджувальних цілей. Я не знаю сценарію Vagrant. Я знаю, що Travis використовує phpenvдля управління різними версіями PHP. Можливо, комбінація цього і SVN-каси всього репо WordPress (яка містила б усі версії внизу /tags) стане початком?
JD

1
Що з Докером ? Ви можете створювати зображення в різних середовищах, а потім створювати / запускати контейнери з певними Dockerfiles
rafawhs

@rafawhs Так, я б вважав сьогодні.
Борек Бернар

Відповіді:


1

Що стосується речей WordPress , Basic WordPress Vagrant Environment готова працювати з будь-якою версією WordPress (за невеликою допомогою). Вам все одно знадобиться знайти спосіб налаштування PHP, але є підказка https://github.com/ideasonpurpose/basic-wordpress-box/blob/master/ansible/roles/php/tasks/php.yml.

Використовувати його поза коробкою; Завантажте або клонуйте проект для wplatest-php55.dev/запускуvagrant up

Встановлення Vagrant Host Manager автоматично зв’яже IP-адресу з вашою папкоюhttp://wplatest-php55.dev/

Створюйте декілька середовищ із версій WP через install-wp.sh

Перевірте архів можливих версій 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

Ось сценарій, який тягне майстра середовища Vagrant до каталогу скриптів bash, клонує сайт для кожної версії в масиві, налаштовує завдання встановлення для використання цієї версії WP і дозволяє вказати файл / папку для копіювання на всі сайти раніше ти vagrant up.

Помістіть це у файл, install-wp.shа потім запустіть, chmod +x install-wp.shщоб зробити його виконуваним. Знайдіть папку, в якій потрібно створити всі ці поля та запустіть ./install-wp.sh. Це створить структуру вище.

Оскільки ви хочете перевірити свій плагін у всіх версіях, створіть папку в тому ж каталозі, що і сценарій, wp-content/plugins/your-pluginпісля чого запустіть install-wp.sh wp-content. Файл / папка копіюється в корінь кожного сайту, тому я пропоную 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!"

Оновлення:

Виявляється, базове середовище бродячого WordPress насправді не налаштовано на обробку кількох версій PHP, але базове поле Wordpress може бути, якщо ви налаштуєте завдання PHP . Я подумав, що залишу оболонку сценарію, яка б обробляла кілька версій 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

0

Ви дивилися на це?

лялька

Якщо з'являється, допоможе вам створити конфігураційні файли. Схоже, ви можете налаштувати кілька vhosts і дозволити йому виконувати спеціальні команди post-init. Отже, ви могли б встановити всі папки, хости та бази даних, а потім скопіювати потрібні версії за допомогою відповідних файлів wp-config? Трохи налаштовано спочатку, але може спрацювати.

Я сам використовую сценарій оболонки. wp-install www.domain.com

В даний час працює лише для однієї установки, але це не буде неможливо налаштувати, щоб взяти деякі аргументи або додатковий файл 'config', щоб встановити кілька vhosts. Як ви згадали Вагрант, я вважаю, що вищесказання ближче до задоволення ваших потреб.

Удачі!


Якщо я не помиляюся, PuPHPet не може робити PHP 5.2 та 5.3, тому він завжди буде обмежений як тестове середовище.
Борек Бернар

0

Все залежить від того, що ви хочете використовувати і який тип ОС ви будете розробляти ...

Для бродячих, ось автоматизація налаштування за допомогою VVV: https://github.com/bradp/vv

І ще декілька інших, побудованих на бродячому:
https://github.com/vagrantpress/vagrantpress
https://github.com/tierra/wp-vagrant

Однак я пропоную спробувати пантеон . Це дозволяє вам робити все це безкоштовно і має інтеграцію з wp-cli, git, behat і т. Д. Є й інші розміщені платформи, які мають такі функції, як https://www.appfog.com/, і навіть я вважаю wpengine.

Це також залежить від того, скільки ви хочете налаштувати з самого початку. Якщо ви тільки шукаєте швидкий спосіб налаштування WordPress, на github, як цей, є багато сценаріїв, або просто використовувати wp-cli.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.