所以我正在使用自托管的GitLab实例来尝试部署我的Laravel应用程序。我在SSH执行器上使用v10 + GitLab运行器。
这是我的.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 pull origin develop
替换为git log
,则作业成功,我可以看到最新的git更改。即使是现在你也可以看到最新的git提交。我做错了什么?
答案 0 :(得分:1)
你只需要投入stash
(How to ignore error on git pull about my local changes would be overwritten by merge?)。如果您不打算覆盖这些更改,那么也可以使用pop
。
PS。我强烈建议修改整个策略。使用Git进行部署并不总是不合适,但是您自动化这种部署方式的重点是您重新考虑它。 Dockerfiles,自动扩展启动配置,让你的盒子cron同步来自GitLab的工件存档(或托管webhook来做到这一点),天空是限制,尽管不那么笨重的方法。