Twilio и Subversion: Есть телефон – разворачивай

Автор: | 22.07.2026

У него была одна из самых распространенных проблем: он работал с несколькими командами, поэтому ему приходилось разворачивать много разного кода на множестве серверов. Поскольку развертывание требует входа в систему, навигации к нужному каталогу и запуска обновлений, это может занимать много времени и быть disruptive.

Поэтому Шон придумал новое решение: *позвони на сервер, и он развернет код для тебя*.

Хотя с тех пор он разработал Версию 3 (используя Twilio Client!), я разговаривал с ним сразу после завершения Версии 2, поэтому именно ее мы и рассмотрим.

Прежде чем углубляться в код, самое интересное, что стоит отметить, это то, что это позволяет вам предоставить доступ к развертыванию, не предоставляя доступ к серверу. Теперь единственный раз, когда кому-то нужно войти в систему, это при первоначальной установке и при изменении авторизованных пользователей.

А теперь перейдем к коду:

[php]

header(«content-type: text/xml»);

echo «\n»;

$authorized_users = array(«+1NNNNNNNNNN»);

$production_files = «/home/production_sites/»;

$repository_location = «//var/svn/production_sites/»;

if(!in_array($_REQUEST[‘From’], $authorized_users))

{

echo («Access Denied«);

} else {

// snip for some explanation

// Assuming $destination is set elsewhere, e.g., from Twilio’s parameters

$destination = $_REQUEST[‘Digits’]; // Example: if using Gather with Digits

switch($destination)

{

case ‘1’ : // Corresponds to ‘production_version’

?>

Checking the revision number of production

REVISION NUMBER IS: » . $revision_number . ««;

break;

case ‘2’ : // Corresponds to ‘production_update’

?>

The updated revision number of production is » . $production_revision . ««;

break;

case ‘0’ : // Corresponds to ‘status’

?>

master repository revision :» . $revision_number . «, Last author: » . $svn_author . «, Last commit message: » . $svn_log . ««;

break;

default:

?>

Welcome to the Subversion Server

For the production revision, press 1

For the production update, press 2

For the repository infomation, press 0

«;

echo «For the production revision, press 1«;

echo «For the production update, press 2«;

echo «For the repository infomation, press 0«;

echo ««;

switch($destination)

{

case ‘1’ : // Corresponds to ‘production_version’

?>

Checking the revision number of production

REVISION NUMBER IS: » . $revision_number . ««;

break;

case ‘2’ : // Corresponds to ‘production_update’

?>

The updated revision number of production is » . $production_revision . ««;

break;

case ‘0’ : // Corresponds to ‘status’

?>

master repository revision :» . $revision_number . «, Last author: » . $svn_author . «, Last commit message: » . $svn_log . ««;

break;

default:

?>

Welcome to the Subversion Server

For the production revision, press 1

For the production update, press 2

For the repository infomation, press 0