使用git子模块foreach的Bitbucket管道
我想使用git ftp将我的存储库(因为我的客户机的许多托管计划不包括SSH访问)部署到我的登台环境中,WordPress作为子模块包含在其中。这是我第一次尝试使用Bitbucket管道:使用git子模块foreach的Bitbucket管道,git,deployment,git-submodules,bitbucket-pipelines,git-ftp,Git,Deployment,Git Submodules,Bitbucket Pipelines,Git Ftp,我想使用git ftp将我的存储库(因为我的客户机的许多托管计划不包括SSH访问)部署到我的登台环境中,WordPress作为子模块包含在其中。这是我第一次尝试使用Bitbucket管道: image: php:7.1 pipelines: branches: master: - step: deployment: staging script: - apt-get update - apt-get -
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'
谢谢你的帮助 关于您问题的第二点:是的,它工作正常,
+
行只列出了执行的命令。如果没有显示错误,则执行得很好
至于第三点,是的,如果设置变量$path,该变量将被bitbucket覆盖,因为这当然会覆盖它。如果不这样做,它应该可以正常工作,但是我在git文档中注意到以下内容:
请注意,为了避免与Windows上的$PATH冲突,$PATH变量现在是$sm_PATH变量的一个不推荐使用的同义词。此命令将忽略超级项目中定义但未签出的任何子模块
所以你必须检查它们才能打印出来。当您在本地使用此命令时,我认为子模块已签出,这就是命令在那里工作的原因
不必在bitbucket管道中检查它们的一个解决方法是使用以下命令:
git config--file.gitmodules--get regexp path | awk'{print$2}'
我希望这对您有所帮助首先感谢您的回答!:)我在最初的帖子中没有提到它,但我尝试回显$path变量,但在这个过程中没有列出任何内容,
git子模块foreach…
似乎也不起作用。我也尝试了$sm_路径-仍然没有。我会检查你推荐的命令事件,虽然我不是专家,也不知道命令到底在做什么。非常感谢!:)不幸的是不是…这并不意味着它本身不工作,但我只是发现了一个更好的工作流使用作曲家。