[英]Gitlab CI - Deploying via SSH and git pull origin develop will not execute
所以我正在使用一個自托管的 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
方法來編寫這個.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 commit。 我究竟做錯了什么?
您只需要放入一個stash
( How to ignore error on git pull 關於我的本地更改將被合並覆蓋? )。 如果您不想覆蓋這些更改,那么也將pop
。
附注。 我強烈建議修改整個策略。 使用 Git 進行部署並不總是不合適的,但是您將這種部署方式自動化的點是您重新考慮它的點。 Dockerfiles,自動縮放啟動配置,讓你的 box cron 同步來自 GitLab 的工件存檔(或托管一個 webhook 來做到這一點),只要不那么笨拙的方法,天空就是極限。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.