Integració d'AppCenter i GitLab

Tryam, hola!

M'agradaria parlar de la meva experiència en la configuració de la integració de GitLab i AppCenter mitjançant BitBucket.

La necessitat d'aquesta integració va sorgir quan es va configurar el llançament automàtic de proves d'IU per a un projecte multiplataforma a Xamarin. Tutorial detallat a sota del tall!

* Faré un article separat sobre l'automatització de les proves de la interfície d'usuari en condicions multiplataforma si el públic està interessat.

Només vaig desenterrar un d'aquests materials un article. Per tant, el meu article pot ajudar algú.

Tasca: configureu el llançament automàtic de proves d'IU a AppCenter, atès que el nostre equip utilitza GitLab com a sistema de control de versions.

problema Va resultar que AppCenter no s'integra directament amb GitLab. Es va triar Bypass via BitBucket com una de les solucions.

Шаги

1. Creeu un repositori buit a BitBucket

No veig la necessitat de descriure això amb més detall :)

2. Configuració de GitLab

Necessitem que quan s'empènyer/fusionar al repositori, els canvis també es carreguen a BitBucket. Per fer-ho, afegiu un corredor (o editeu el fitxer .gitlab-ci.yml existent).

Primer afegim ordres a la secció before_scripts

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

A continuació, afegiu l'ordre següent a l'etapa desitjada:

- git push --mirror https://username:[email protected]/username/projectname.git

En el meu cas, aquest és el fitxer que tinc:

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

Llencem la compilació, comprovem que els nostres canvis/fitxers estiguin a BitBucket.
* com ha demostrat la pràctica, la configuració de claus SSH és opcional. Però, per si de cas, proporcionaré un algorisme per configurar una connexió mitjançant SSH a continuació

Connexió mitjançant SSH

Primer heu de generar una clau SSH. S'han escrit molts articles sobre això. Per exemple, podeu mirar aquí.
Les claus generades tenen un aspecte semblant a això:
Integració d'AppCenter i GitLab

Addicional La clau secreta s'ha d'afegir com a variable a GitLab. Per fer-ho, aneu a Configuració > CI/CD > Variables d'entorn. Afegiu TOT el contingut del fitxer on heu desat la clau secreta. Anem a cridar la variable SSH_PRIVATE_KEY.
* aquest fitxer, a diferència del fitxer de clau pública, no tindrà l'extensió
Integració d'AppCenter i GitLab

Genial, a continuació, heu d'afegir la clau pública a BitBucket. Per fer-ho, obriu el repositori i aneu a Configuració > Claus d'accés.

Integració d'AppCenter i GitLab

Aquí fem clic a Afegeix clau i inserim el contingut del fitxer amb la clau pública (fitxer amb l'extensió .pub).

El següent pas és utilitzar les claus a gitlab-runner. Utilitzeu aquestes ordres, però substituïu els asteriscs amb les vostres dades

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. Configuració d'AppCenter

Creem una nova aplicació a AppCenter.

Integració d'AppCenter i GitLab

Especifiqueu l'idioma/plataforma

Integració d'AppCenter i GitLab

A continuació, aneu a la secció Creació de l'aplicació recentment creada. Allà seleccionem BitBucket i el repositori creat al pas 1.

Genial, ara hem de configurar la construcció. Per fer-ho, cerqueu la icona d'engranatge

Integració d'AppCenter i GitLab

En principi, tot allà és intuïtiu. Seleccioneu un projecte i una configuració. Si cal, activeu el llançament de proves després de la compilació. S'iniciaran automàticament.

Bàsicament, això és tot. Sembla senzill, però, naturalment, no tot anirà bé. Per tant, descriuré alguns errors que he trobat mentre treballava:

'ssh-keygen' no es reconeix com una ordre interna o externa.

També es produeix perquè el camí a ssh-keygen.exe no s'afegeix a les variables d'entorn.
Hi ha dues opcions: afegir C:Program FilesGitusrbin a les variables d'entorn (s'aplicarà després de reiniciar la màquina) o iniciar la consola des d'aquest directori.

AppCenter està connectat al compte de BitBucket incorrecte?

Per resoldre el problema, heu de desenllaçar el vostre compte BitBucket d'AppCenter. Iniciem sessió al compte de BitBucket incorrecte i anem al perfil d'usuari.

Integració d'AppCenter i GitLab

A continuació, aneu a Configuració > Gestió d'accés > OAuth

Integració d'AppCenter i GitLab

Feu clic a Revoca per desenllaçar el vostre compte.

Integració d'AppCenter i GitLab

Després d'això, heu d'iniciar sessió amb el compte BitBucket necessari.
* Com a últim recurs, també esborreu la memòria cau del vostre navegador.

Ara anem a AppCenter. aneu a la secció Construcció, feu clic a Desconnecta el compte de BitBucket

Integració d'AppCenter i GitLab

Quan el compte antic es desenllaça, tornem a enllaçar AppCenter. Ara al compte desitjat.

'eval' no es reconeix com una ordre interna o externa

L'utilitzem en lloc d'una ordre

  - eval $(ssh-agent -s)

Equip:

  - ssh-agent

En alguns casos, haureu d'especificar el camí complet a C:Program FilesGitusrbinssh-agent.exe o afegir aquest camí a les variables del sistema de la màquina on s'executa el corredor.

AppCenter Build està intentant llançar una compilació per a un projecte des d'un dipòsit de bitBucket obsolet

En el meu cas, el problema va sorgir perquè estava treballant amb diversos comptes. Vaig decidir esborrar la memòria cau.

Font: www.habr.com

Afegeix comentari