在源云存储库之间传输时如何排除某些文件?

How to exclude some files when transferring between source cloud repo?

目前我有两个 google 云项目,一个用于暂存环境,另一个用于生产环境。他们每个人都有一个源云回购。每当我完成开发时,我都会将代码合并到暂存环境中 repo 的 master 分支,然后启动一个云构建触发器,将所有代码从暂存环境中的 repo 复制到 repo in生产环境。

有一些配置文件和凭证文件在不同的环境下应该是不同的,所以我不想复制它们,否则会覆盖生产仓库中的环境相关文件。这是我在 cloudbuild.yaml:

中的尝试
steps:
    - name: gcr.io/cloud-builders/git
      args: ['checkout', '--orphan', 'temp']
    - name: gcr.io/cloud-builders/git
      args: ['add', '-u']
    - name: gcr.io/cloud-builders/git
      entrypoint: "bash"
      args:
        - '-c'
        - |
        - git reset `cat .gitcopyignore`
    - name: gcr.io/cloud-builders/git
      args: ['config', '--global', 'user.name', '<name>']
    - name: gcr.io/cloud-builders/git
      args: ['config', '--global', 'user.email', '<email>']
    - name: gcr.io/cloud-builders/git
      args: ['commit', '-am', 'latest production commit']
    - name: gcr.io/cloud-builders/git
      args: ['branch', '-D', 'master']
    - name: gcr.io/cloud-builders/git
      args: ['branch', '-m', 'master']
    - name: gcr.io/cloud-builders/git
      args: ['push', '-f', 'https://source.developers.google.com/p/<production project>/r/<production repo>', 'master']

我将所有与环境相关的文件放入 .gitcopyignore 文件中,并在 git add 之后将它们 运行 git reset 放在它们上面,以排除它们被复制到新的 repo .但是这个trigger每次执行的时候都说所有步骤都执行成功但是生产环境的环境相关文件还是被覆盖了

我不想将这些文件添加到 .gitignore 中,因为我确实想在暂存环境的存储库中保留版本控制,以防我的队友想要修改它们。更重要的是,这些与环境相关的文件必须在存储库中,因为 google 云需要在部署云功能之前从源云存储库中提取所有代码。

任何人都可以告诉我什么可能是我的 cloudbuild.yaml 的一个很好的解决方案?困扰我好几天了。

谢谢!

一般来说,试图维护两个独立的存储库很可能是一堆不必要的工作,而且还可能导致您的存储库出现不必要的分歧。

保持不同配置的推荐方法是将模板存储在存储库中并将其复制到位,使用脚本对其进行修改,或者存储多个配置文件并将正确的文件复制过来,无论是手动还是使用根据环境以不同方式运行的脚本。目标文件(实际使用的版本)应该放在 .gitignore 中,因为您不想直接签入它们。我很确定大多数平台都可以处理这种方法,因为它很常见并且是最佳实践。

这意味着您将拥有一个包含所有文件和类似历史记录的存储库。您无需担心事情会意外发生分歧。