首页 文章

Gitlab CI - 通过SSH和git pull origin开发部署将无法执行

提问于
浏览
1

所以我正在使用一个自托管的GitLab实例来尝试部署我的Laravel应用程序 . 我在SSH执行程序上使用v10 GitLab runner .

这是我的 .gitlab-ci.yml

stages:
  - deploy

deploy_develop:
   stage: deploy
   before_script:
     - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
     - eval $(ssh-agent -s)
     - ssh-add <(echo "$SSH_PRIVATE_KEY")
     - mkdir -p ~/.ssh
     - ssh-keyscan beta.beethovenworld.com > ~/.ssh/known_hosts
   script:
     - ssh -t nn2@beta.beethovenworld.com "chmod 400 ~/.ssh/id_rsa && cd /var/www/html && git pull origin develop -f && composer install --no-interaction --optimize-autoloader && php artisan key:generate && php artisan optimize && php artisan config:cache && php artisan route:cache && php artisan migrate"
   environment:
     name: beta
     url: https://beta.beethovenworld.com
   only:
     - develop

如您所见,我正在使用SSH进入并执行这些操作 . 如果有更清晰的方法来编写这个 .yml 文件,请告诉我 .

错误:

From gitlab.beethovenworld.com:nn2/beethovenworld
 * branch            develop    -> FETCH_HEAD
   3c3ebf7..37f47cf  develop    -> origin/develop
error: Your local changes to the following files would be overwritten by merge:
    resources/views/layouts/composer/manage.blade.php
Please, commit your changes or stash them before you can merge.
Aborting
Updating b4422e8..37f47cf
ERROR: Job failed: exit code 1

为什么我不能做一个git pull?我也将 .git 文件夹上传到服务器 .

如果我用 git log 替换 git pull origin develop ,作业成功,我可以看到最新的git更改 . 即使是现在你也可以看到最新的git提交 . 我究竟做错了什么?

1 回答

  • 1

    你只需要输入一个 stashHow to ignore error on git pull about my local changes would be overwritten by merge?) . 如果您不打算覆盖这些更改,那么也请输入 pop .

    PS . 我强烈建议修改整个策略 . 使用Git进行部署并不总是不合适,但是您自动执行该部署方式的重点是您重新考虑它 . Dockerfiles,自动调整启动配置,让你的盒子cron同步来自GitLab的工件存档(或托管webhook来做到这一点),天空是限制,尽管不那么笨重的方法 .

相关问题