¡Hola, Tryam!
Me gustaría hablar sobre mi experiencia en la configuración de la integración de GitLab y AppCenter a través de BitBucket.
La necesidad de dicha integración surgió al configurar el lanzamiento automático de pruebas de UI para un proyecto multiplataforma en Xamarin. ¡Tutorial detallado debajo del corte!
* Haré un artículo aparte sobre la automatización de las pruebas de UI en condiciones multiplataforma si el público está interesado.
Sólo desenterré uno de esos materiales.
Tarea: Configure el inicio automático de las pruebas de UI en AppCenter, dado que nuestro equipo usa GitLab como sistema de control de versiones.
problema Resultó que AppCenter no se integra directamente con GitLab. Se eligió el bypass a través de BitBucket como una de las soluciones.
Pasos
1. Cree un repositorio vacío en BitBucket
No veo la necesidad de describir esto con más detalle :)
2. Configurando GitLab
Necesitamos que al insertar/fusionar en el repositorio, los cambios también se carguen en BitBucket. Para hacer esto, agregue un ejecutor (o edite el archivo .gitlab-ci.yml existente).
Primero agregamos comandos a la sección before_scripts
- git config --global user.email "user@email"
- git config --global user.name "username"
Luego agregue el siguiente comando a la etapa deseada:
- git push --mirror https://username:[email protected]/username/projectname.git
En mi caso, este es el archivo que obtuve:
before_script:
- git config --global user.email "user@email"
- git config --global user.name "username"
stages:
- mirror
mirror:
stage: mirror
script:
- git push --mirror https://****:*****@bitbucket.org/****/testapp.git
Lanzamos la compilación, verificamos que nuestros cambios/archivos estén en BitBucket.
* como lo ha demostrado la práctica, configurar claves SSH es opcional. Pero, por si acaso, a continuación proporcionaré un algoritmo para configurar una conexión a través de SSH.
Conexión a través de SSH
Primero necesitas generar una clave SSH. Se han escrito muchos artículos sobre esto. Por ejemplo, puedes mirar
Las claves generadas se parecen a esto:
Siguiente La llave secreta debe agregarse como una variable en GitLab. Para hacer esto, vaya a Configuración > CI/CD > Variables de entorno. Agregue TODO el contenido del archivo en el que guardó la clave secreta. Llamemos a la variable SSH_PRIVATE_KEY.
* este archivo, a diferencia del archivo de clave pública, no tendrá la extensión
Genial, a continuación debes agregar la clave pública a BitBucket. Para hacer esto, abra el repositorio y vaya a Configuración > Claves de acceso.
Aquí hacemos clic en Agregar clave e insertamos el contenido del archivo con la clave pública (archivo con la extensión .pub).
El siguiente paso es usar las claves en gitlab-runner. Utilice estos comandos, pero reemplace los asteriscos con sus datos
image: timbru31/node-alpine-git:latest
stages:
- mirror
before_script:
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d 'r' | ssh-add - > /dev/null
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- ssh-keyscan bitbucket.org >> ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
- git config --global user.email "*****@***"
- git config --global user.name "****"
- ssh -T [email protected]
mirror:
stage: mirror
script:
- git push --mirror https://****:****@bitbucket.org/*****/*****.git
3. Configurar AppCenter
Creamos una nueva aplicación en AppCenter.
Especificar el idioma/plataforma
A continuación, vaya a la sección Construir de la aplicación recién creada. Allí seleccionamos BitBucket y el repositorio creado en el paso 1.
Genial, ahora necesitamos configurar la compilación. Para hacer esto, busque el ícono de ajustes
En principio, todo es intuitivo. Seleccione un proyecto y configuración. Si es necesario, habilite el lanzamiento de pruebas después de la compilación. Se iniciarán automáticamente.
Básicamente, eso es todo. Suena sencillo, pero, naturalmente, no todo saldrá bien. Por lo tanto, describiré algunos errores que encontré mientras trabajaba:
'ssh-keygen' no se reconoce como un comando interno o externo.
También ocurre porque la ruta a ssh-keygen.exe no se agrega a las variables de entorno.
Hay dos opciones: agregar C:Program FilesGitusrbin a las variables de entorno (se aplicará después de reiniciar la máquina) o iniciar la consola desde este directorio.
¿AppCenter está conectado a la cuenta BitBucket incorrecta?
Para resolver el problema, debe desvincular su cuenta BitBucket de AppCenter. Iniciamos sesión en la cuenta BitBucket incorrecta y vamos al perfil de usuario.
A continuación, vaya a Configuración > Gestión de acceso > OAuth
Haga clic en Revocar para desvincular su cuenta.
Después de esto, deberá iniciar sesión con la cuenta BitBucket requerida.
* Como último recurso, borre también la memoria caché de su navegador.
Ahora vayamos al AppCenter. vaya a la sección Crear, haga clic en Desconectar cuenta BitBucket
Cuando se desvincula la cuenta anterior, vinculamos AppCenter nuevamente. Ahora a la cuenta deseada.
'eval' no se reconoce como un comando interno o externo
Lo usamos en lugar de un comando.
- eval $(ssh-agent -s)
Equipo:
- ssh-agent
En algunos casos, deberá especificar la ruta completa a C:Archivos de programaGitusrbinssh-agent.exe o agregar esta ruta a las variables del sistema en la máquina donde se ejecuta el ejecutor.
AppCenter Build está intentando iniciar una compilación para un proyecto desde un repositorio de bitBucket obsoleto
En mi caso, el problema surgió porque estaba trabajando con varias cuentas. Decidí borrar el caché.
Fuente: habr.com