我有一个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 )
答案 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