GitLab CI-通过SSH和GIT拉的开发部署将无法执行



因此,我正在使用一个自托管的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拔?我也将.git文件夹上传到服务器。

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

您只需要投入 stash(如何忽略git上的错误,围绕我的本地更改,将被合并覆盖吗?(。如果您不是要覆盖这些更改,那也要加入pop

ps。我强烈建议修改整个策略。使用git部署并不总是不合适的,但是您可以自动化部署风格是您重新考虑的点。Dockerfiles,自动启动配置,让您的盒子Cron同步Gitlab(或托管Webhook来执行此操作(的文物档案,而天空的极限是较少的笨拙方法。

最新更新