Как удалить все хранилище Gitlab?
Я создал несколько репозиториев в GitLab. Теперь я хочу удалить или удалить все репозитории одновременно. Как я могу это сделать? есть ли API?
5 ответов
Сначала вы перечисляете все проекты, получаете список идентификаторов и перебираете список: для каждого идентификатора проекта вы удаляете проект.
Вы можете использовать клиент GitLab ( API-оболочку), они существуют практически для любого языка.
Я использовал API Gitlab для составления списка и удаления большого количества проектов, которые я перенес по ошибке, я сделал для него небольшой скрипт на Python.
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: БУДЬТЕ ОСТОРОЖНЫ, ИСПОЛЬЗУЯ СЛЕДУЮЩИЙ КОД. Внимательно прочтите код. Только вы несете личную ответственность за свои результаты.
При этом вот оно:
import requests
import json
def get_project_ids():
url = "https://gitlab.example.com/api/v4/users/{yourUserId}/projects"
querystring = {"owned":"true","simple":"true","per_page":"50"}
payload = ""
headers = {'authorization': 'Bearer {yourToken}'}
response = requests.request("GET", url, data=payload, headers=headers, params=querystring)
projects = json.loads(response.text)
projects_ids = list(map(lambda project: project.get('id'), projects))
return projects_ids
def remove_project(project_id):
url_temp = "https://gitlab.example.com/api/v4/projects/{project}"
headers = {'authorization': 'Bearer {yourToken}'}
querystring = ""
payload = ""
url = url_temp.format(project=project_id)
response = requests.request("DELETE", url, data=payload, headers=headers, params=querystring)
project = json.loads(response.text)
print(project)
def main():
projects_ids = get_project_ids()
url_temp = "https://gitlab.example.com/api/v4/projects/{project}"
headers = {'authorization': 'Bearer {yourToken}'}
querystring = ""
payload = ""
for project_id in projects_ids:
url = url_temp.format(project=project_id)
response = requests.request("GET", url, data=payload, headers=headers, params=querystring)
project = json.loads(response.text)
print(str(project.get('id')) + " " + project.get('name'))
print("Removing")
# remove_project(project_id)
if __name__ == "__main__":
main()
Заменить {yourUserId}
а также {yourToken}
с соответствующей информацией. Раскомментируйтеremove_project()
функция удаления проектов, я не буду нести никакой ответственности за приведенный выше код.
- Перейти на страницу проекта
- Выберите "Настройки". 3. Если у вас достаточно прав в нижней части страницы, будет кнопка "Опасные настройки" (т.е. настройки проекта, которые могут привести к потере данных) или "Удалить проект" (в более новых версиях GitLab). 4 Нажмите эту кнопку и следуйте инструкциям
Прежде всего вам необходимо создать личный токен доступа:
Перейти к
profile
/preferences
/access tokens
или просто нажмите здесь
Замените свой токен в
token
переменная в этом коде ниже:
const axios = require("axios");
// Your authorization token here
const token = "YOUR_ACCESS_TOKEN";
// fetch all projects
axios
.get("https://gitlab.com/api/v4/projects?visibility=private", {
headers: {
Authorization: `Bearer ${token}`,
},
})
.then(async function (response) {
// get all projects IDs
let ids = response.data.map((e) => e.id);
// delete all
for (let el of ids) {
await axios.delete(`https://gitlab.com/api/v4/projects/${el}/`, {
headers: {
Authorization: `Bearer ${token}`,
},
});
}
})
.catch(function (error) {
// handle error
console.log(error);
});
Вы можете изменить видимость
?visibility=private
или
?visibility=public
"Он будет получать только 20 репо за раз. Есть ли какой-нибудь API, чтобы получить все сразу?"
добавьте этот параметр в свой запрос per_page, как показано ниже https://gitlab.com/api/v4/groups/<group_id> / projects?per_page=