背景:私有镜像仓库harbor,通常随着构建的镜像增多,提交到仓库上的镜像也逐渐增多,而harbor所在服务器磁盘空间有限,所以需要定时删除harbor上面的镜像。否则会因空间不足导致提交镜像出现问题,中断CICD过程。
功能:如某个项目下的镜像的版本数量超过3个以上,则只保留最近的3个版本,其余的全部删掉,记录写到日志文件
思路:先找出项目下仓库不为0的项目,以仓库下镜像不0且数量大于3的仓库,再使用push时间排序取出最近push时间3之后的记录删除掉
执行日志图:
# -*- coding:utf-8 -*-
'''
@Author: XGL
@File: tet.py
'''
import requests
from requests.auth import HTTPBasicAuth
import logging
from time import sleep
# 定义日志格式
logging.basicConfig(filename='harbor_image_delete_log.txt',
format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S',
level=20)
class Harborimagedel:
def __init__(self, harbor_url, user, password):
"""
:param harbor_url: harbor链接
:param user: 用户名
:param password: 密码
"""
self.harbor_url = harbor_url
self.user = user
self.password = password
self.harbor_api_url = self.harbor_url + '/api/v2.0'
self.auth = HTTPBasicAuth(self.user, self.password)
self.projectname