簡體   English   中英

Gitlab CI - 通過 SSH 部署和 git pull origin develop 將不會執行

[英]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。 我究竟做錯了什么?

您只需要放入一個stashHow to ignore error on git pull 關於我的本地更改將被合並覆蓋? )。 如果您不想覆蓋這些更改,那么也將pop

附注。 我強烈建議修改整個策略。 使用 Git 進行部署並不總是不合適的,但是您將這種部署方式自動化的點是您重新考慮它的點。 Dockerfiles,自動縮放啟動配置,讓你的 box cron 同步來自 GitLab 的工件存檔(或托管一個 webhook 來做到這一點),只要不那么笨拙的方法,天空就是極限。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM