Integración de AppCenter y GitLab

¡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. Artículo. Por lo tanto, mi artículo puede ayudar a alguien.

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 aquí.
Las claves generadas se parecen a esto:
Integración de AppCenter y GitLab

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
Integración de AppCenter y GitLab

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.

Integración de AppCenter y GitLab

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.

Integración de AppCenter y GitLab

Especificar el idioma/plataforma

Integración de AppCenter y GitLab

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

Integración de AppCenter y GitLab

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.

Integración de AppCenter y GitLab

A continuación, vaya a Configuración > Gestión de acceso > OAuth

Integración de AppCenter y GitLab

Haga clic en Revocar para desvincular su cuenta.

Integración de AppCenter y GitLab

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

Integración de AppCenter y GitLab

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

Añadir un comentario