在 Google Cloud Builder 中使用 git 命令

ner*_*lip 0 git github google-cloud-build

我正在尝试将 GoogleCloud Build与 GitHub结合使用来创建 CI/CD 管道。但是我正在为 GCB 苦苦挣扎...

下面是一个非常简单的管道:

  1. 运行npm install--> 它有效
  2. 运行npm test--> 它有效
  3. 运行npm run css:ALLrm一些文件+做一些缩小的东西)-->似乎工作
  4. 运行一些git命令 -->不起作用

错误:

Step #3: fatal: not a git repository (or any parent up to mount point /)
Step #3: Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
Run Code Online (Sandbox Code Playgroud)

云构建.yaml

steps:
  - name: 'gcr.io/cloud-builders/npm'
    args: ['install']
  # run test
  - name: 'gcr.io/cloud-builders/npm'
    args: ['test']
  # build css files
  - name: 'gcr.io/cloud-builders/npm'
    args: ['run', 'css:ALL']
  # git stuff
  - name: 'gcr.io/cloud-builders/git'
    args: ['add', '-A']
  - name: 'gcr.io/cloud-builders/git'
    args: ['commit', '-m', '"some message"']
Run Code Online (Sandbox Code Playgroud)

你有什么线索吗?

我的目标只是git add构建所有东西并将push它们放回我的branch. 谢谢

gui*_*ere 6

Cloud Build 是一款很棒的产品!!有一些无聊的事情...... .git 文件夹没有与源代码一起复制。

如果您手动运行云构建,只需.gcloudignore在存储库的根目录中添加一个空文件。多亏了它,该.git目录不会被忽略并与您的代码一起上传。

但是这个技巧不适用于触发器。为此,我使用此步骤

steps:
- name: 'gcr.io/cloud-builders/git'
  entrypoint: /bin/bash
  args:
    - -c
    - |
        # Cloud Build doesn't recover the .git file. Thus checkout the repo for this
        git clone --branch $BRANCH_NAME https://github.com/path/to/yourRepo.git /tmp/repo ;
        # Copy only the .git file
        mv /tmp/repo/.git .
Run Code Online (Sandbox Code Playgroud)

然后您可以使用 git,并使用有效且现有的.git目录