GNU/Linux >> Tutoriales Linux >  >> Linux

Abra un archivo directamente desde un repositorio privado de GitLab

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


Linux
  1. Instalar binarios en /bin, /sbin, /usr/bin y /usr/sbin, interacciones con --prefix y DESTDIR

  2. Django static_root en /var/www/... - sin permisos para recopilar estática

  3. ¿Cómo saber desde qué carpeta se está ejecutando un proceso?

  4. unix:///var/run/supervisor.sock no hay tal archivo

  5. /sys/ documentación?

¿Cómo maneja Linux múltiples separadores de rutas consecutivas (/home////username///file)?

Bash =~ Regex y Https://regex101.com/?

Kubuntu muestra un error al iniciar sesión (file:///usr/share/sddm//themes/breeze/main.qml:no such file or directory)?

Ubuntu 14.04 "¿no obtuvo un Uri de reproducción en el archivo de entrada:///*"?

CentOS / RHEL:cómo recuperarse de un archivo /etc/passwd eliminado

Comprender los archivos /proc/mounts, /etc/mtab y /proc/partitions