2016-03-08 190 views
0

我在Bitbucket的Git倉庫中有PHP/Laravel/JS項目。Git:部署到OpenShift

該項目應通過其基於Git的部署系統部署到OpenShift。他們爲您的應用程序創建一個回購。你git clone吧。當你需要部署git push和OpenShift時,其餘部分:

  • 停止應用程序(網絡服務器);
  • 寫入項目文件並配置(例如nginx.conf)到正確的位置;
  • 執行自定義的部署後操作(Laravel至少是:composer updatephp artisan migrate);
  • 重新啓動應用程序。

很酷,但:

  • * .PHP,nginx.conf,定製後部署腳本等,應推到兩個OpenShift和到位桶;
  • 縮小* .js,* .css - 僅限OpenShift;
  • raw * .js,* .scss - 僅限Bitbucket;
  • gulpfile.js,Vagrant的配置和其他開發人員 - Bitbucket;
  • Laravel的緩存IDE配置 - 既不OpenShift也不Bitbucket。

完成它的最好方法是什麼?兩個.git-openshift和.git-bitbucket(具有不同的起源)而不是一個.git?那麼.gitignore呢?不要使用OpenShift的部署系統?我應該使用哪種工具?或者,也許,使用汞而不是Git Bitbucket?

回答

0

如果你想在兩個不同的倉庫中有不同的東西,那麼我建議你實際創建兩個獨立的git倉庫。然後,你可以有一個自定義的構建腳本,將你的編譯/縮小文件放入一個單獨的文件夾/回購站。

另一種選擇是在您當前的bitbucket回購上安裝orphanproduction branch,並將您的生產代碼提交給該分支。

git checkout --orphan production 
# You can delete all your files, they're still safe on master branch 
git rm -rf . 
# Ignore the stuff you don't want on openshift 
git add .gitignore 
# You need to make an initial commit 
git commit -m "Initial production commit" 

要設置deployment branch上openshift

# 1. Set the deployment branch with the rhc command line tool 
$ rhc app-configure <app> --deployment-branch production 
# Every time you push to openshift, push your production branch instead of master 
$ git push openshift production 

工作流程示例:

# Start from master branch 
git checkout master 
# Run your compilation scripts (whatever generates your production files) 
./my-build-script.sh 
# Then switch over to production branch 
$ git checkout production 
# Your changed files are still here, check it with git status, then add them 
$ git add my-production-files/* 
$ git commit -m "Add new built feature" 
$ git push openshift production 
+0

謝謝你的答覆。但是我擔心我的(愚蠢的)思維方式與你的思維是完全不同的(正確的)。你的意思是說:「並且你的生產代碼已經交給那個分支」?那麼,現在我有生產分公司沒有歷史和單一文件.gitignore承諾。我有一個主分支,另一個.gitignore和準備部署的代碼。 'git在'git push origin production'之前應該做些什麼? – user3368115

+0

@ user3368115檢查我的編輯,我已經添加了一個可能的工作流程 –

+0

正如我在我原來的問題中寫的,我有4種文件:BB,OS,兩者都沒有。您的示例工作流程解決了「OS​​」類文件的問題,但不是「兩個」。好吧,'git checkout production'不會從工作樹OS文件(自動生成)中刪除,所以我可以添加 - 提交 - 推送它們。但'git checkout production'還會將兩個文件(* .php)還原到已部署的生產版本。我想部署他們的主版本。 – user3368115