Как удалить репозиторий GitLab с помощью curl? - PullRequest
0 голосов
/ 01 сентября 2018

Я могу добиться этого с GitHub. Но я не могу сделать то же самое с GitLab. В настоящее время у меня есть:

curl -u "$user:$token" -H "Content-Type:application/json" -H "PRIVATE-TOKEN:$token" \
-X DELETE https://git.lab.com/api/v4/projects/$repo_name

И тогда я получаю эту ошибку:

curl: (35) error:14077438:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert internal error

У меня уже есть рабочий скрипт, использующий curl для создания хранилища GitLab в командной строке, поэтому мой curl работает нормально. Мне просто нужно было удалить часть.

1 Ответ

0 голосов
/ 02 сентября 2018

Удаление проекта по пути проекта

curl -H 'Content-Type: application/json' -H 'Private-Token: $privatetoken' \
-X DELETE https://gitlab.com/api/v4/projects/$namespace%2F$projectname

Возможные причины ошибки SSL

Кодировка пространства имен

URI разделяется прямой косой чертой на стороне сервера, а затем результирующие элементы пути классифицируются.

Поскольку косая черта обрабатывается как специальный символ, нам нужно URL-кодировать , если мы хотим включить его в качестве элемента пути URI, чтобы сервер не пытался его разделить.

Как это может вызвать проблему, становится более очевидным, если вы выполняете запрос с дополнительными параметрами за идентификатором.

В следующих примерах $namespace равно foo, а $projectname равно bar.

Good

Запрос: GET /projects/foo%2Fbar/users

Элементы пути URI:

  • projects - ресурсы, на которые будет выполняться вызов
  • foo%2Fbar - имя конкретного ресурса (проекта) foo/bar (после декодирования URL)
  • users - ресурсы для возврата

Bad

Запрос: GET /projects/foo/bar/users

Элементы пути URI:

  • projects - ресурсы, на которые будет выполняться вызов
  • foo - имя конкретного ресурса (проекта) foo (такого проекта нет, пространство имен отсутствует)
  • bar - ресурс для запроса или действие для выполнения (такого ресурса или действия нет)
  • users - дополнительный параметр запроса (родительский ресурс или действие вообще не существует)

Конечная точка API

Если вы используете общедоступный GitLab, размещенный по адресу https://gitlab.com/,, вы должны использовать доменное имя gitlab.com вместо git.lab.com, последнее не принадлежит GitLab Inc.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...