Skip to content

gitlab 通过api设置某个commit对应的流水线状态 会创建一个external job,导致无法成功修改流水线的状态

背景

当mr流水线跑失败后,客户会使用api来修改gitlab的commit的pipeline 状态,在16.9之前用着都是正常的,但是升级到16.11之后,通过api修改的话会创建出来一个external类型的job,但是流水线的状态并没有更改过来,导致mr无法合并。

升级前

mr pipeline失败 image
通过api修改流水线状态为success

curl --location --request POST 'https://jihulab.com/api/v4/projects/194535/statuses/7380bc3d3328bc1367e09c5f9f1f41e0e43df09d?state=success&ref=refs%2Fmerge-requests%2F2%2Fhead&pipeline_id=2674685' --header 'Authorization: Bearer xxxxxx'

image

流水线状态修改成功,mr可以合并 image

升级后

mr pipeline失败 image
通过api修改流水线状态为success

curl --location --request POST 'https://jihulab.com/api/v4/projects/194535/statuses/67e5a29da57376f32c373ced95b8728b5ab885a1?state=success&ref=dev-1&pipeline_id=2958380' --header 'PRIVATE-TOKEN: xxxxxx'

image

流水线状态修改成功,mr pipeline中多了一个external类型的default job,但是流水线的状态依然是失败的导致mr无法合并

流水线状态失败,无法合并 image

这个是bug么还是官方预期的行为,目前来看改动还是很难让客户接受。

王凯旋 编辑于