Существуют ли задачи ssh и scp, доступные для phing?
Я хотел бы выполнить удаленное развертывание с моей машины сборки на сервере. Удаленное взаимодействие может быть выполнено с помощью команд ssh из скрипта, но я бы предпочел использовать phing и deploy.xml файл, который будет выполнять автоматизацию.
Какие альтернативы у меня есть для выполнения задач ssh (а также scp) из файла сборки phing?
7 answers
Если вам действительно нужен phing, то afaik есть только exec. Если вы открыты для других инструментов, взгляните на capistrano и мой ответ в " Настройка веб-проекта PHP, инфраструктура.".
Scptask в Phing:
Копирует файлы на удаленный хост и с него с помощью scp. Эта задача требует Расширение PHP SSH2 функционировать...
Вчера я наткнулся на задачи SCP и SSH для Phing. Вам также нужно будет следовать инструкциям по установке SSH2 для PHP. Я не смог заставить задачи работать прямо из коробки, вы могли бы. Я изменил свою копию, если вам нужно, я могу предоставить.
Я столкнулся с такой же проблемой около года назад, и тогда я не мог найти задачу. В итоге я выполнил задачу exec, таким образом, все это было в xml-файле.
<exec command="scp -i keys/id_rsa myfile user@$server:myfile" dir="." />
Я знаю, что это старое, но, похоже, есть несколько неработающих ссылок и некоторая дезинформация.
Scptask: http://www.phing.info/docs/guide/stable/apcs60.html
Задача: http://www.phing.info/docs/guide/stable/apcs60.htm
Для semanticscuttle мы используем rsync для развертывания файлов выпуска на сервере SourceForge - также через exec. Rsync понимает ssh.
Для ssh есть расширение ssh2 PECL, а затем у Phing есть задачи ssh и scp.
- На компьютере Mac установите libssh2 через Homebrew. В Linux используйте свой менеджер пакетов.
sudo pecl install pecl.php.net/ssh2-0.12
Теперь вы можете сделать это:
<?xml version="1.0"?>
<project name="test" default="test">
<target name="test">
<ssh username="vagrant" password="vagrant" host="192.168.123.456"
command="pwd" property="pwd" display="false" />
<echo>The current working directory is ${pwd}</echo>
</target>
</project>