- 在1.10.x 版本使用没问题,其他版本没有做过测试。
1.10 后 接口开启了 xsrf 验证,花了比较多的时间处理这个xsrf 的问题。谁曾想官方faq 内说明了如何使用,但是会有一些其他的坑,不知道接口调用哪一个,有些有 xsrf 有些没有。
使用说明
保留根据「时间倒序」前十个,其他全部删除!!!!
python3 下载模块 requests后,修改配置内的参数运行即可。
此脚本删除仅真对到项目,项目下的仓库没有做限制,仓库会遍历删除。
具体代码
#! /usr/bin/env python3
# -*- coding:utf-8 -*-
import base64
import logging
import requests
from requests.auth import HTTPBasicAuth
import urllib.parse
"""配置"""
# harbor 域名domain
harbor_domain = ""
# harbor 账号
user_name = ''
# harbor 密码
password = ""
# horbar 访问连接是否为 https
is_horbar_url_https = False
# 保留个数
number = 10
# 限制需要删除的项目名称
need_delete_project_names = [
"v2.new",
....
]
"""配置结束"""
class RequestClient(object):
def __init__(self, get_xsrf_url, username, password):
self.get_xsrf_url = get_xsrf_url
self.username = username
self.password = password
self.session = requests.Session()
self.session.auth = HTTPBasicAuth(self.username, self.password)
self.xsrf_str = self._get_request_xsrf_cookies()
def _get_request_xsrf_cookies(self) -> str:
"""
https://github.com/goharbor/harbor/wiki/Harbor-FAQs#api
:return: string
"""
"""
调用同样的接口获取 xsrf 只有在第一次获取才能有 xsrf_token,第二次调用就为空,原因未知。
"""
response = self.session.get(self.get_xsrf_url)
if response.status_code != 200:
logging.error