Nous travaillons sur l’intégration de GitLab (Enterprise Edition) dans nos outils, mais l’une des choses qui figure toujours dans notre liste de souhaits est de créer une demande de fusion dans GitLab via une ligne de commande (ou un fichier batch ou similaire, par exemple). Nous aimerions intégrer cela dans notre outillage. Rechercher ici et sur le Web m'amène à penser que cela n'est pas possible avec GitLab en natif, mais que nous avons besoin d'outils supplémentaires pour cela.
Ai-je raison? Et quel type d'outils voudrais-je utiliser pour cela?
Ce n'est pas supporté nativement, mais ce n'est pas difficile à lancer ensemble. L'API gitlab prend en charge l'ouverture de MR: https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/merge_requests.md#create-mr
Vous pouvez utiliser l'utilitaire suivant.
Divulgation: Je l'ai développé.
https://github.com/vishwanatharondekar/gitlab-cli
Il est développé en javascript. Vous pouvez créer une demande de fusion en utilisant ceci.
Certaines des fonctionnalités dont il dispose sont.
Malheureusement, GitLab ne supporte malheureusement pas cela, mais je l’ai récemment vu sur leur issue tracker . Il semble que l'on puisse s'attendre à un "outil natif" dans les mois à venir.
GitLab a tweeté à propos de numa08/git-gitlab il y a quelque temps, alors je suppose que cela vaudrait la peine d'essayer.
Dans notre script de construction, nous affichons simplement le navigateur avec l'URL correcte et permettons au développeur d'écrire ses commentaires sous la forme, cliquez sur Enregistrer pour créer la demande de fusion. Vous obtenez cette URL avec les paramètres corrects en créant une demande de fusion manuellement et en copiant l'URL du formulaire.
#!/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"
J'utilise https://github.com/mdsb100/cli-gitlab
Je crée le MR depuis l'intérieur d'un conteneur gitlab CI docker basé sur Alpine Linux, aussi j'inclue la commande install dans before-script (qui pourrait également être inclus dans votre image). Toutes les commandes du fichier .gitlab-ci.yml ci-dessous sont également pertinentes pour une utilisation normale en ligne de commande (tant que le logiciel cli-gitlab npm est installé).
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
Cela fera écho vrai si la demande de fusion existe déjà, et fera écho le résultat json du nouveau MR s'il réussit à en créer un (enregistrement également dans un fichier mr.json).