omc - how to approve a merge request in gitlab
Cómo crear una solicitud de fusión de GitLab a través de la línea de comandos (5)
Estamos trabajando en la integración de GitLab (edición empresarial) en nuestras herramientas, pero una cosa que aún está en nuestra lista de deseos es crear una solicitud de fusión en GitLab a través de una línea de comandos (o un archivo por lotes o similar). Nos gustaría integrar esto en nuestras herramientas. La búsqueda aquí y en la web me lleva a creer que esto no es posible con GitLab nativo, pero que necesitamos herramientas adicionales para eso.
¿Estoy en lo correcto? ¿Y qué tipo de herramientas querría usar para esto?
A partir de ahora, GitLab lamentablemente no lo admite, sin embargo, recientemente lo vi en su rastreador de problemas . Parece que se puede esperar una ''herramienta nativa'' en los próximos meses.
GitLab twitteó sobre numa08/git-gitlab algún tiempo, así que creo que valdría la pena intentarlo.
En nuestro script de compilación, simplemente abrimos el navegador con la URL correcta y permitimos que el desarrollador escriba sus comentarios en la forma de guardar para crear la solicitud de fusión. Obtiene esta url con los parámetros correctos creando una solicitud de fusión manualmente y copiando la url del formulario.
#!/bin/bash
set -e
set -o pipefail
BRANCH=${2}
....
git push -f origin-gitlab $BRANCH
open "https://gitlab.com/**username**/**project-name**/merge_requests/new?merge_request%5Bsource_branch%5D=$BRANCH&merge_request%5Bsource_project_id%5D=99999&merge_request%5Btarget_branch%5D=master&merge_request%5Btarget_project_id%5D=99999"
No es compatible de forma nativa, pero no es difícil de juntar. La API de gitlab tiene soporte para abrir MR: https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/merge_requests.md#create-mr
Puedes usar la siguiente utilidad.
Revelación: Lo desarrollé.
https://github.com/vishwanatharondekar/gitlab-cli
Está desarrollado en javascript. Puedes crear una solicitud de fusión usando esto.
Algunas de las características que tiene son.
- La rama base es opcional. Si no se proporciona la rama base. La rama actual se utiliza como rama base.
- rama de destino es opcional. Si no se proporciona la rama de destino, se utilizará la rama predeterminada del repositorio en gitlab.
- La página de solicitud de extracción creada se abrirá automáticamente después de la creación exitosa.
- Si el título no es compatible con el valor de opción -m. Se tomará de editor en su lugar abierto. La primera línea se toma como título.
- En el editor abierto tercera línea en adelante se toma como descripción.
- La lista de etiquetas separadas por comas se puede proporcionar con su opción.
- Soporta CI.
- Se pueden dar configuraciones específicas de repositorio.
- Opción de squash está disponible.
- La opción de eliminar la rama fuente está disponible.
Yo uso https://github.com/mdsb100/cli-gitlab
Estoy creando el MR desde el interior de un contenedor docker gitlab CI basado en linux alpino, así que incluyo el comando de instalación en el script anterior (que también podría incluirse en su imagen). Todos los comandos en el siguiente archivo .gitlab-ci.yml, también son relevantes para el uso normal de la línea de comandos (siempre que tenga instalado el cli-gitlab npm).
variables:
TARGET_BRANCH: ''live''
GITLAB_URL: ''https://your.gitlab.net''
GITLAB_TOKEN: $PRIVATE_TOKEN #created in user profile & added in project settings
before-script:
-apk update && apk add nodejs && npm install cli-gitlab -g
script:
- gitlab url $GITLAB_URL && gitlab token $GITLAB_TOKEN
- ''echo "gitlab addMergeRequest $CI_PROJECT_ID $CI_COMMIT_REF_NAME /"$TARGET_BRANCH/" 13 `date +%Y%m%d%H%M%S`"''
- ''gitlab addMergeRequest $CI_PROJECT_ID $CI_COMMIT_REF_NAME "$TARGET_BRANCH" 13 `date +%Y%m%d%H%M%S` 2> ./mr.json''
- cat ./mr.json
Esto se hará eco de verdadero si ya existe la solicitud de combinación, y se hará eco del resultado json del nuevo MR si logra crear uno (también se guarda en un archivo mr.json).