首先是接口定义
/**
* 删除job缓存
*
* @param jobId jobId
* @return
* @throws Exception
*/
@ApiOperation(value = "删除当前job的缓存", notes = "根据jobId进行删除" )
@RequestMapping(value = "/{jobId}/dependency", method = RequestMethod.DELETE)
public BaseResult deleteDependByJobId(@PathVariable("jobId") Long jobId,
@RequestParam(value = "path") String path){
//path = (K8sConstant.PVC_VOLUME_PATH +dependenceName+ path).replace("//","/");
dependenceService.deletedependency(jobId,path);
return BaseResult.ok();
}
原意是删除上次流水线的缓存
@Override
public void deletedependency(Long jobId, String path) {
DevopsJenkinsJob jenkinsJob = jobService.getById(jobId);
Long envId = jenkinsJob.getEnvId();
EnvInfo envInfo = envInfoDao.selectById(envId);
K8sEnvDetail k8sEnvDetail = JSON.parseObject(envInfo.getEnvDetail(), K8sEnvDetail.class);
KubernetesClient client = K8sOperation.getK8sClient(k8sEnvDetail, envInfo.getJenkinsType());
//判断是否存在pod
Pod pod = getPodbyJobName(client, k8sEnvDetail.getNamespace(), jenkinsJob.getJobName());
//deleteFile0(client,pod,Arrays.asList(path));
client.pods().inNamespace(pod.getMetadata().getNamespace()).withName(pod.getMetadata().getName())
.inContainer("maven") // 如果Pod中只有一个容器,不需要指定
.writingOutput(System.out)
.exec("sh", "-c", "rm -rf " + path);
}
private Pod getPodbyJobName(KubernetesClient client, String namesapce, String jobName) {
//判断是否存在pod
List<Pod> pods = client.pods().inNamespace(namesapce).withLabel("jenkins", "slave").list().getItems();
client.pods().withLabelIn(jobName);
if (CollUtil.isNotEmpty(pods)) {
//获取最后创建的pod
Pod pod = pods.stream().max((s1, s2) -> StrUtil.compare(s1.getMetadata().getCreationTimestamp(), s2.getMetadata().getCreationTimestamp(), Boolean.TRUE)).get();
return pod;
}
return new Pod();
}