¿Cómo puedo hacer que el código de combinación del cornetworkingor Gitlab en una twig en una construcción exitosa

Bueno, el título es bastante auto explicativo.

En resumen, quiero que una twig (es decir, dev) se fusione con otra twig (es decir, producción) SI la construcción es exitosa.

En caso de que se pregunte por qué, eche un vistazo a esta pregunta:
http://sofes.miximages.com/questions/42109335/gitlab-runner-starts-merge-automate-merge?nonetworkingirect=1#comment71394445_42109335

No hay una manera fácil de hacerlo a partir de la versión 8.15 de GitLab. La única forma de hacerlo es aprovechar la API y los webhooks.

Esta es la esencia de lo que tienes que hacer:

1. Crea un webhook que enlaza events push.

2. Verifique si el empuje pertenece a la twig en la que desea realizar la fusión.

3. Cree una request de combinación e inmediatamente acéptela con la opción "merge_when_build_succeeds": true .

De esta manera fusionará la twig, si la construcción tiene éxito. No es realmente lo más cómodo de configurar, pero debería funcionar.

La solución más fácil es hacer una request de combinación y hacer clic en el button "Fusionar cuando la línea de producción tenga éxito", esto fusionará la twig después de la compilation. Este es el que recomendaría.

A continuación se muestra la solución de trabajo que no recomiendo para una fusión automática. Requiere que cree una key de implementación con acceso de escritura y guarde la key privada como una variable de proyecto GITLAB_DEPLOY KEY , también haga ssh-keyscan en el server y GITLAB_PUBLIC_KEY variable GITLAB_PUBLIC_KEY .

 mergetomaster: stage: deploy image: alpine only: - dev script: - apk add --update git openssh-client - mkdir ~/.ssh - echo $GITLAB_DEPLOY_KEY > ~/.ssh/id_rsa - chmod 400 ~/.ssh/id_rsa - echo $GITLAB_PUBLIC_KEY > ~/.ssh/known_hosts // Steal the identity of person that triggenetworking the build - git config --global user.email "$GITLAB_USER_EMAIL" - git config --global user.name "$GITLAB_USER_ID" - git remote set-url origin <ssh-repository-url> - git checkout master - git reset --hard origin/master - git merge $CI_BUILD_REF - git push origin master 

Intenté la solución @ jakub-kania, pero siempre id_rsa invalid format . Creo que las variables secretas de gitlab están jodidas de alguna manera.

Lo hice funcionar pasando directamente la key de implementación a ssh-add sin crear keys ssh. Aquí está la solución de trabajo:

 merge to master: stage: deploy image: alpine only: - dev-branch before_script: - apk add --update git openssh-client - mkdir ~/.ssh - ssh-keyscan -p 2222 <gitlab.domain.com> > ~/.ssh/known_hosts - eval `ssh-agent -s` - ssh-add <(echo "$GITLAB_DEPLOY_KEY") - ssh -T git@<gitlab.domain.com> -p 2222 - git config --global user.email "$GITLAB_USER_EMAIL" - git config --global user.name "$GITLAB_USER_ID" - git remote set-url origin ssh://git@<gitlab.domain.com>:2222/path/to/repo.git script: - git checkout master - git reset --hard origin/master - git merge $CI_BUILD_REF - git push origin master