OpenShift动作钩子部署问题

时间:2014-05-16 02:04:40

标签: php git bash symfony openshift

我有一个symfony 2项目,我试图在OpenShift在线启动。我根据需要创建了目录,并且在本地运行symfony非常完美。

但是,当我部署到我的OpenShift应用程序时,deploy和post_deploy action_hooks不会运行。我甚至没有像在文档中提到的那样在git push上看到输出。

我还应该注意,我可以在应用程序中创建一个test.sh,它将运行完全相同的代码并按预期工作。

我将非常感谢任何帮助,我已经与支持人员签了多张门票而没有运气。

以下是目录结构屏幕截图的链接:

https://www.dropbox.com/s/oup9fa3rfgw43wy/Screenshot%202014-05-15%2019.03.21.png

下面是我的post_deploy钩子:

#!/bin/bash
# This deploy hook gets executed after dependencies are resolved and the
# build hook has been run but before the application has been started back
# up again.  This script gets executed directly, so it could be python, php,
# ruby, etc.

# set the location for composer home to the data dir
export COMPOSER_HOME="$OPENSHIFT_DATA_DIR/.composer"

# check if composer exists in data dir
if [ ! -f "$OPENSHIFT_DATA_DIR/composer.phar" ]; then
    curl -s https://getcomposer.org/installer | /opt/rh/php54/root/usr/bin/php -- --install-dir=$OPENSHIFT_DATA_DIR
else
    /opt/rh/php54/root/usr/bin/php $OPENSHIFT_DATA_DIR/composer.phar self-update
fi

# check and set the symlink for vendor dir
if [ ! -d "$OPENSHIFT_DATA_DIR/vendor" ]; then
    echo !!! vendor directory does NOT exist - creating symlink...
    mkdir $OPENSHIFT_DATA_DIR/vendor
    echo !!! created vendor directory - creating symlink...
    ln -s $OPENSHIFT_DATA_DIR/vendor $OPENSHIFT_REPO_DIR/vendor
    echo !!! created symlink - setting permissions on directory...
    chmod -R 0777 $OPENSHIFT_DATA_DIR/vendor
    echo !!! permissions have been set on vendor directory!
else
    echo !!! vendor directory already exists - skipping symlink...
fi

// shortened for brevity, but the rest is the same.

# use composer install
( unset GIT_DIR ; cd $OPENSHIFT_REPO_DIR ; /opt/rh/php54/root/usr/bin/php $OPENSHIFT_DATA_DIR/composer.phar install )

2 个答案:

答案 0 :(得分:7)

确保你正在使你的action_hooks可执行(chmod + x)然后将该信息添加到git,然后执行git push。在Windows上,您需要运行:

git update-index --chmod=+x .openshift/action_hooks/*

答案 1 :(得分:1)

(这不是答案,但我没有足够的声誉对你的帖子发表评论)
要改善您的挂钩,您应该检查$OPENSHIFT_REPO_DIR/vendor存在。如果$OPENSHIFT_DATA_DIR/vendor目录已存在,则无法创建符号链接。

# check vendor dir
if [ ! -d "$OPENSHIFT_DATA_DIR/vendor" ]; then
    mkdir $OPENSHIFT_DATA_DIR/vendor
    chmod -R 0777 $OPENSHIFT_DATA_DIR/vendor
fi

# check symlink
if [ ! -d "$OPENSHIFT_REPO_DIR/vendor" ]; then
    ln -s $OPENSHIFT_DATA_DIR/vendor $OPENSHIFT_REPO_DIR/vendor
fi