【问题标题】:Create simple auto deploy using git hooks + laravel artisan command使用 git hooks + laravel artisan 命令创建简单的自动部署
【发布时间】:2018-04-04 16:56:52
【问题描述】:

我正在尝试使用 git hooks post-receive 进行简单的自动部署,我发现了这个link。那个链接给了我想法并自己修改了它。 当 BRANCH 变量为“主”时,它运行良好。但是当我将它更改为其他分支时,比如说“phase2”,当运行工匠命令时,它总是停留在“master”分支中。所以我的缓存路由来自 master 分支。

这是我的接收后挂钩文件:

#!/bin/sh
TARGET="/usr/local/apache2/htdocs/project_uat"
GIT_DIR="/home/user0001/www/project_name/.git"

BRANCH="phase2" # I want this changable to phase3,phase4 or what ever branch

while read oldrev newrev ref
do
        # only checking out the master (or whatever branch you would like to deploy)
        if [[ $ref = "refs/heads/${BRANCH}" ]];
        then
                echo "Ref $ref received. Deploying ${BRANCH} branch to UAT..."
                git --work-tree=$TARGET --git-dir=$GIT_DIR checkout -f
        else
                echo "Ref $ref received. Doing nothing: only the ${BRANCH} branch may be deployed on this server."
        fi
done

cd /usr/local/apache2/htdocs/project_uat
php artisan cache:clear
php artisan config:cache
php artisan route:cache
php artisan optimize

当我尝试导航到我的目标目录时。它停留在 phase2 分支,但是当我尝试“git status”时有很多变化。这些变化来自主人。

基本上,我想要的只是每次我从本地“git push”时自动化部署,而无需登录远程服务器只是为了运行以下命令:

  • cd 到/项目/路径
  • git pull origin phase2
  • php artisan 缓存:清除
  • php 工匠配置:缓存
  • php artisan route:cache
  • php 工匠优化

而我唯一能做到的就是通过 GIT HOOKS

【问题讨论】:

标签: bash laravel githooks laravel-artisan


【解决方案1】:

如前所述,您可以在结帐后添加:

git reset --hard
git clean -f -d 

但不要忘记您还有另一个选择:multiple wortrees(每个分支一个):您可以更改文件夹(并为与您的分支匹配的文件夹提供服务)而不必担心由于文件而清理/重新编译以前的分支。

【讨论】:

  • 对不起,我很困惑,我应该在git --work-tree= 之后放置重置并清除吗?
  • @RomnickSusa 否:这是一种解决方案或另一种解决方案,而不是两者兼有:拥有多个工作树意味着您只需更改文件夹即可更改分支,您不必重置/清理。如果你只有一个文件夹可以切换分支,那么你需要重置/清理。
  • 哦!我知道了。谢谢你,但现在,我正在寻找一种进行自动化部署的方法。所以我每次推送更新都不必远程登录
  • @RomnickSusa 完全正确:在正确的文件夹(用于正确分支的文件夹)中结帐,您根本不必登录。
  • 根据我上面的代码,我不知道为什么我不签出到 rigth 分支,它总是在 master 分支中。我已经编辑了我的帖子。希望对您有所帮助。
【解决方案2】:

在@VonC 的帮助下挣扎了很多

我完成我的钩子很简单:

#!/bin/sh
unset $(git rev-parse --local-env-vars)
cd /usr/local/apache2/htdocs/project_uat

env -i git reset --hard
env -i git clean -f -d
env -i git pull
php artisan cache:clear
php artisan config:cache
php artisan route:cache
php artisan optimize

我还不知道缺点。

【讨论】:

    猜你喜欢
    • 2019-03-13
    • 2020-12-09
    • 2014-04-01
    • 2015-04-14
    • 2015-12-24
    • 2019-04-02
    • 2016-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多