簡體   English   中英

使用git子模塊foreach的Bitbucket管道

[英]Bitbucket pipelines using git submodules foreach

我想用git-ftp部署我的存儲庫(因為許多客戶端的托管計划不包括SSH訪問)到我的暫存環境中,其中WordPress作為子模塊包含在內。 這是我第一次嘗試使用Bitbucket管道:

image: php:7.1

pipelines:
  branches:
    master:
    - step:
        deployment: staging
        script:
          - apt-get update
          - apt-get -qq install git-ftp
          - git ftp init -vv --user $sftp_user --passwd $sftp_passwd $sftp_path

盡管它沒有部署WordPress存儲庫而是一個空的占位符文件,但它可以完美地工作並將所有文件傳輸到我的服務器。

因為它說這里的子模塊的支持不工作的所有時間,但有使用的解決方法

git submodule foreach git [init|push|catchup]

我使用Bash手動嘗試了所有步驟,並且有效:

$ git ftp init --user $sftp_user --passwd $sftp_passwd -vv $sftp_path
$ git submodule foreach 'git ftp init -vv $sftp_user --passwd $sftp_passwd -vv $sftp_path/$path/'

但是,當我嘗試將此變通方法應用於我的bitbucket-pipelines.yml時,foreach的子模塊命令似乎根本不起作用……測試該命令只能輸出

git submodule foreach 'echo $path'
+ git submodule foreach echo 'echo $path'

  1. 有誰知道更好的解決方法?
  2. 為什么子模塊(+ foreach)不起作用? 還是?
  3. 該命令應允許您訪問多個變量 ,Bitbucket的存儲庫變量會覆蓋/阻止這些變量嗎?

謝謝你的幫助!

對於您的問題的第二點:是的,它工作正常,帶有+的行僅列出了已執行的命令。 如果未顯示任何錯誤,則執行正常。

關於第三點,是的,如果您設置了變量$ path,則此變量將被bitbucket覆蓋,因為當然會覆蓋它。 如果您不這樣做,它應該可以正常工作,但是我在git文檔中注意到了以下內容:

請注意,為避免與Windows上的$ PATH沖突,現在$ path變量已棄用$ sm_path變量的同義詞。 該命令將忽略超級項目中定義但未檢出的所有子模塊。

因此,您必須將它們簽出才能打印出來。 當您在本地使用此命令時,我想要檢查出子模塊,這就是該命令在此處起作用的原因。

解決方法是,不必使用bitbucket管道檢出它們,可以使用以下命令:

git config --file .gitmodules --get-regexp path | awk '{ print $2 }'

我希望這可以幫助你

暫無
暫無

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

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