Benim depo sağlayıcısı (Beanstalk), her dağıtımdan sonra bir "web kanca" tetiklemek için, dağıtım sürecinde, beni tanır. Yani, her dağıtımdan sonra, o dağıtımı hakkında bir json kodlanmış bilgi, bana göre sağlanan bir URL'ye bir post isteği göndermek olacak.
Ben yeterince açık değilse, bu http://help.beanstalkapp.com/kb/deployments/post-release-web-hooks-for-deployments arşivim sağlayıcısı tarafından sağlanan kısa ve net bir açıklama.
Ben bu isteği işleyecek senaryo yazmaya çalışıyorum. Aslında, dağıtımı hakkında sunulan bilgilerin ilgilenmiyorum. Tüm ihtiyacım bir dağıtım yapılmıştır olduğunu bilmek, ve (: DB güncellemek için örneğin) benim sunucuda bazı etkinlik yapmaktır. Ve ben ne yaptım ki. Ben sadece, tetiklendiği zaman, DB günceller ve genellikle sunucu üzerinde yapmanız gereken ne yapar bir senaryo yazdı.
Now,
The repository provider refuses to receive the URL to my script as a processor of its hooks, because it says it's being responded with HTTP 400.
Why can this happen? How can I control the returned HTTP value? I've never had to take care of this during my normal programming.
Buna bir tarayıcı yönlendirerek benim kanca-işlemci test ederken, ben başarıyla tetiklenir olduğunu görmek, ve sunucu tarafında yapmanız gerekeni yapar.
Benim kanca-işlemci dahil tüm proje, PHP + Yii çerçevesinde yazılmıştır. Sunucu Apache olduğunu.
Ben HTTP protokolünün anlayış benim (tamamlayabilir mi?) Eksikliği, burada benim için sorun oluşturur muhtemelen ne olduğunu, anlamaya.
Teşekkür ederim
Gidi
EDIT: Adding here the (trivial) code that handles the hook. It has only side effects, no output. (If I do add an output, like "echo 'done';" nothing changes
public function actionAfterDeployment ()
{
$rootPath = Yii::getPathOfAlias ('system').'/../..';
$console = $rootPath."/crm/console.php";
exec ("php $console onEachDeployment ".$_SERVER["SERVER_NAME"]);
}