Si desea acceder a un archivo desde GitLab privado, puede usar el siguiente enfoque que funcionó para mí:)
Construya la URL:
https://url/api/v4/projects/projectId/repository/files/fileName/raw?ref=master&private_token=Generated_private_token
- url es su URL de Gitlab, por ejemplo:git.lab.com.
- /api/v4/proyectos es una constante.
- ID del proyecto es el ID de proyecto de su proyecto, que puede encontrar debajo del nombre de su proyecto en gitlab.
- /repositorio/archivos vuelve a ser una constante.
- nombre de archivo es el nombre del archivo ej:sagar.txt
- /raw?ref= es una constante y el valor de ref puede ser maestro o cualquier rama de la que le gustaría tomar el archivo. Estoy recuperando el archivo de Master.
- Token_privado_generado debe generarse desde gitlab, siga los pasos mencionados en el enlace:Generar token privado
Actualización 2018-12-25:
siempre y cuando no estés descargando archivos grandes, esto debería funcionar:
curl -s -H "Private-Token: <token>" "https://gitlab.com/api/v4/projects/<urlencode("gitlab_username/project_name")>/repository/files/<path/to/file>/raw?ref=<branch_name>"
, un ejemplo real, descargando el archivo /README.md
del repositorio privado https://gitlab.com/divinity76/Yur17
, donde la URL de descarga web es https://gitlab.com/divinity76/Yur17/raw/master/README.md?inline=false
, es:
curl -s -H "Private-Token: afF2s1xgk6xcwXHy3J4C" "https://gitlab.com/api/v4/projects/divinity76%2Fyur17/repository/files/README%2Emd/raw?ref=master"
toma nota especial de cómo el gitlab_username/repo_name
estaba codificado en URL, por ejemplo, /
se convirtió en %2F
(Puede verificar cómo su nombre de usuario y nombre de repositorio están codificados en URL abriendo el terminal javascript de su navegador y escribiendo encodeURIComponent("your_username/repo_name");
en la terminal y presiona enter.)
gracias a Jonathan Hall
@ gitlab en mg.gitlab.com y https://docs.gitlab.com/ee/api/repository_files.html y tvl por ayudar a encontrar una solución.
Actualización 2018-12-11:este método ya no funciona, ahora solo sirve la página de inicio de sesión, con un mensaje que dice need to log in to continue
, incluso usando HTTP 200 OK (qué vergüenza), se actualizará si descubro por qué (@XavierStuvw afirma que está relacionado con problemas de seguridad)
Encontré una manera mucho más fácil de hacerlo que la respuesta de @tvl,
primero cree un token de acceso con acceso API aquí:https://gitlab.com/profile/personal_access_tokens, luego haga:
wget --header 'PRIVATE-TOKEN: <token>' 'https://gitlab.com/<username>/<repo>/raw/master/path/to/file.ext'
Encontré la solución aquí.
Con la valiosa ayuda de Chris, así es como puede ejecutar un script (archivo .make de Drupal en mi caso) desde un servidor de GitLab. (Probablemente funcione para GitHub pero no lo probé. Tal vez la sintaxis sea un poco diferente). (Por supuesto, esto funciona para cualquier tipo de script)
Se puede hacer usando los tokens de autenticación. Aquí está la documentación de la API de GitLab y aquí está la API de GitHub
Por conveniencia, usaré https://gitlab.com como servidor de ejemplo.
-
Vaya a https://gitlab.com/profile/account y busque su "token privado"
-
Luego imprima la lista de proyectos y encuentre la identificación de su proyecto que está buscando
curl https://gitlab.com/api/v3/projects?private_token=<your_private_token>
o vaya allí con su navegador (un visor json ayudará mucho)
-
Luego imprima la lista de los archivos que están en este proyecto y encuentre la identificación de su archivo que está buscando
curl https://gitlab.com/api/v3/projects/<project_id>/repository/tree?private_token=<your_private_token>
-
¡Finalmente obtén/ejecuta el archivo!
curl https://gitlab.com/api/v3/projects/<project_id>/repository/raw_blobs/<file_id>?private_token=<your_private_token>
En caso de querer ejecutar el script (drupal .make)
drush make https://gitlab.com/api/v3/projects/<project_id>/repository/raw_blobs/<file_id>?private_token=<your_private_token> <drupal_folder>
(Si está buscando un flujo de trabajo para integrar GitLab con Aegir .make plataformas sin usar tokens (¿quizás SSH?), haga un hilo y pegue aquí el enlace).
EDITAR
Puede obtener el archivo sin el project_id
usando el codificado nombre del proyecto. Por ejemplo el my-user-name/my-project
se convertirá en:my-user-name%2Fmy-project