OpenShift动作钩子部署问题


OpenShift action hook deploy issues

我有一个symfony 2项目,我试图在OpenShift上在线启动。我根据需要创建了这个目录,在本地运行symfony效果很好。

然而,当我部署到我的OpenShift应用程序的部署和post_deploy action_hooks不运行。我甚至没有看到文档中提到的git push的输出。

我还应该注意到,我可以ssh到应用程序并创建一个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 )

确保你的action_hooks是可执行的(chmod +x),然后将这些信息添加到git中,并执行git推送。在Windows上,你需要运行:

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

(这不是一个答案,但我没有足够的声誉来评论你的帖子)
为了提高你的钩子,你应该检查$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