在Gitlab CI / CD管道上获取最新的git标签

时间:2020-01-28 11:43:34

标签: git continuous-integration gitlab gitlab-ci

我想在Gitlab中设置一个CI / CD管道,该管道可以读取最新标签并获取最后一个标签以增加我的下一个版本的应用程序。我使用了以下配置:

stages:
  - version

calculate_version:
  image:
    name: alpine/git:latest
    entrypoint: [""]
  stage: version
  script:
    - VERSION=$(git tag);test -z "$VERSION" && echo "no version tag found" && exit 1
    - CMDLINE="$VERSION";
    - echo $VERSION
    - echo $CMDLINE > cmdline
  artifacts:
    paths:
      - cmdline

但是我没有在$ VERSION上列出任何标签。看起来像Gitlab没有在存储库中传递标签。但是,如果我创建并推送一个新标签,它将仅显示该新标签,而不是我期望的所有标签列表。

这是GitLab ci / cd的行为吗?如果是,我如何在管道内的仓库中获取所有标签?

2 个答案:

答案 0 :(得分:3)

您可以使用Gitlab API

获取标签

默认情况下,结果按最后更新的标签排序,因此,如果要获取最后一个,可以按如下所示修改脚本块:

const CustomDrawer = ({navigation}) => {
  return (
    <View>
      <Button
        title="Main"
        onPress={() => this.props.navigation.navigate('Main')}
      />

      <Button
        title="p1"
        onPress={() => this.props.navigation.navigate('p1')}
      />

      <Button
        title="p2"
        onPress={() => this.props.navigation.navigate('p2')}
      />

    </View>
  );
};

答案 1 :(得分:0)

没有GitLab API,您只能使用:

script: 
  git describe --abbrev=0 2>/dev/null || echo ''

分配变量以与您的版本进行比较

script: 
  last_v=$(git describe --abbrev=0 2>/dev/null || echo '')
  

如果找不到标签,则返回最后一个标签或空字符串(使用2>/dev/null隐藏错误代码)

⚠️警告:

经过测试,将“标记”消息保留为空白会创建一个轻量级标记,并且上面的命令将不起作用。