主题:读取git资源元数据

时间:2018-09-19 08:59:12

标签: concourse concourse-git-resource

我有一个大厅管道:

groups: []
resources:
- name: source-code
  type: git
resource_types: []
jobs:
- name: build
  public: true
  plan:
  - get: source-code
  - task: build
    privileged: true
    config:
      platform: linux
      image_resource:
        type: docker-image
        source:
          repository: java
          tag: openjdk-8-alpine
      run:
        path: sh
        args:
        - -exc
        - |
          set -e -u -x

          MVN_VERSION=$(cat pom.xml | grep "^    <version>.*</version>$" | awk -F'[><]' '{print $3}')

          **CUSTOM_VERSION = [POM_FILE_VERSION]-build.[NO_OF_COMMITS_IN_BRANCH]** 
      inputs:
      - name: source-code

我要使用Unix命令创建自定义版本:

CUSTOM_VERSION = [POM_FILE_VERSION]-build.[NO_OF_COMMITS_IN_BRANCH]

对于 [POM_FILE_VERSION] ,我找到了代码:

MVN_VERSION=$(cat pom.xml | grep "^    <version>.*</version>$" | awk -F'[><]' '{print $3}')

但是对于 [NO_OF_COMMITS_IN_BRANCH] ,我不知道如何从git资源中获取该数据。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

Concourse git资源未提供分支中的提交次数。

我建议使用更有意义的东西,例如提交哈希,Concourse git资源可以将其用作.git/short_ref文件。

如果您确实需要使用提交次数(但是为什么?),则需要直接在Concourse任务中运行git命令,例如git rev-list --count HEAD

在上面的管道中,该任务正在使用openjdk-8-alpine存储库中的java Docker映像。如果该图像包含git,那么您已经准备就绪。如果没有,我建议首先查看java存储库是否提供了安装了git的openjdk-8-alpine的变体。如果没有,则必须基于openjdk-8-alpine创建自己的Docker映像。

安全说明:您已指定privileged: true。也许您不需要它。