Integración de AppCenter y GitLab

¡Hola, buenos días!

Quiero contarles sobre mi experiencia configurando la integración de GitLab y AppCenter a través de BitBucket.

La necesidad de esta integración surgió al configurar el lanzamiento automático de pruebas UI para un proyecto multiplataforma en Xamarin. ¡Un tutorial detallado a continuación!

* Escribiré un artículo separado sobre la automatización de pruebas UI en un entorno multiplataforma si hay interés en la publicación.

Solo encontré un material similar. artículo. Por lo tanto, mi artículo puede ayudar a alguien.

Tarea: Configurar el lanzamiento automático de pruebas UI en AppCenter, dado que nuestro equipo utiliza GitLab como sistema de control de versiones.

Problema resultó que AppCenter no se integra directamente con GitLab. Una de las soluciones elegidas fue un enfoque a través de BitBucket.

Pasos

1. Creamos un repositorio vacío en BitBucket.

No veo necesario describir esto con más detalle 🙂

2. Configuramos GitLab.

Necesitamos que al hacer un push/merge en el repositorio, los cambios se envíen también a BitBucket. Para ello, añadimos un runner (o editamos el archivo .gitlab-ci.yml existente).

Primero añadimos los comandos en la sección before_scripts.

 - git config --global user.email "user@email"
 - git config --global user.name "nombredeusuario"

Luego añadimos el siguiente comando en el stage correspondiente:

- git push --mirror https://username:password@bitbucket.org/username/projectname.git

En mi caso, el archivo quedó así:

before_script:
 - git config --global user.email "user@email"
 - git config --global user.name "nombredeusuario"

stages:
  - mirror
mirror:
  stage: mirror
  script:
    - git push --mirror https://****:*****@bitbucket.org/****/testapp.git

Ejecutamos el build, verificamos que nuestros cambios/archivos se hayan subido a BitBucket.
* Como ha mostrado la práctica, configurar las claves SSH no es obligatorio. Pero, por si acaso, a continuación daré el algoritmo para configurar la conexión a través de SSH.

Conexión a través de SSH.

Primero necesitamos generar una clave SSH. Hay muchos artículos sobre esto. Como ejemplo, pueden ver aquí.
Las claves generadas se ven aproximadamente así:
Integración de AppCenter y GitLab

Siguiente clave secreta se debe agregar como variable en GitLab. Para ello vamos a Settings > CI/CD > Enviroment Variables. Añadimos TODO el contenido del archivo donde guardamos la clave secreta. Llamaremos a la variable SSH_PRIVATE_KEY.
* este archivo, a diferencia del archivo con la clave pública, no tendrá extensión.
Integración de AppCenter y GitLab

Perfecto, luego necesitamos añadir la clave pública en BitBucket. Para ello, abrimos el repositorio, vamos a Settings > Access Keys.

Integración de AppCenter y GitLab

Aquí hacemos clic en Add Key y pegamos el contenido del archivo con la clave pública (archivo con extensión .pub).

El siguiente paso es utilizar las claves en gitlab-runner. Usa estos comandos, pero reemplaza los asteriscos con tus 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 git@bitbucket.org

mirror:
  stage: mirror
  script:
    - git push --mirror https://****:****@bitbucket.org/*****/*.git

3. Configuración de AppCenter

Creando una nueva aplicación en AppCenter.

Integración de AppCenter y GitLab

Especificamos el idioma/plataforma

Integración de AppCenter y GitLab

A continuación, entramos en la sección de Build de la aplicación recién creada. Elegimos allí BitBucket y el repositorio creado en la etapa 1.

Genial, ahora necesitamos configurar el build. Para esto, buscamos el ícono de engranaje

Integración de AppCenter y GitLab

En general, todo es bastante intuitivo. Elegimos el proyecto y la configuración. Si es necesario, activamos la ejecución de pruebas después del build. Se ejecutarán automáticamente.

En principio, eso es todo. Suena simple, pero, por supuesto, no todo saldrá sin problemas. Por lo tanto, describiré algunos errores con los que me encontré durante el trabajo:

‘ssh-keygen’ no es reconocido como un comando interno o externo.

Esto ocurre porque la ruta a ssh-keygen.exe no se ha añadido a las variables de entorno.
Hay dos opciones: agrega C:Program FilesGitusrbin a las Variables de Entorno (aplicará después de reiniciar la máquina), o ejecuta la consola desde este directorio.

¿AppCenter se conectó a la cuenta de BitBucket incorrecta?

Para resolver el problema, es necesario desvincular la cuenta de BitBucket de AppCenter. Ingresamos a la cuenta de BitBucket incorrecta y vamos al perfil de usuario.

Integración de AppCenter y GitLab

A continuación, vamos a Configuración > Gestión de Acceso > OAuth

Integración de AppCenter y GitLab

Hacemos clic en Revocar para desvincular la cuenta.

Integración de AppCenter y GitLab

Después de esto, es necesario iniciar sesión con la cuenta correcta de BitBucket
* En última instancia, también limpiar la caché del navegador

Ahora vamos a AppCenter. Vamos a la sección de Build, hacemos clic en Desconectar cuenta de BitBucket

Integración de AppCenter y GitLab

Cuando la cuenta antigua esté desvinculada, vinculamos AppCenter de nuevo. Ahora a la cuenta correcta.

‘eval’ no es reconocido como un comando interno o externo

Usamos en lugar del comando

  - eval $(ssh-agent -s)

El comando:

  - ssh-agent

En algunos casos, será necesario especificar la ruta completa a C:Program FilesGitusrbinssh-agent.exe, o agregar esta ruta a las variables del sistema en la máquina donde se ejecuta el runner

AppCenter Build intenta iniciar el build para el proyecto desde un repositorio de bitBucket no actualizado

En mi caso, el problema surgió porque estaba trabajando con varias cuentas. Se resolvió limpiando la caché.

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster