我想在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的行为吗?如果是,我如何在管道内的仓库中获取所有标签?
答案 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
隐藏错误代码)
经过测试,将“标记”消息保留为空白会创建一个轻量级标记,并且上面的命令将不起作用。