Integrarea AppCenter și GitLab

Tryam, salut!

Aș dori să vorbesc despre experiența mea în configurarea integrării GitLab și AppCenter prin BitBucket.

Necesitatea unei astfel de integrări a apărut la configurarea lansării automate a testelor UI pentru un proiect multiplatform pe Xamarin. Tutorial detaliat sub tăietură!

* Voi face un articol separat despre automatizarea testării interfeței de utilizator în condiții multiplatforme dacă publicul este interesat.

Am dezgropat doar un astfel de material статью. Prin urmare, articolul meu poate ajuta pe cineva.

Sarcină: Configurați lansarea automată a testelor UI pe AppCenter, având în vedere că echipa noastră folosește GitLab ca sistem de control al versiunilor.

problemă S-a dovedit că AppCenter nu se integrează direct cu GitLab. Bypass via BitBucket a fost aleasă ca una dintre soluții.

Шаги

1. Creați un depozit gol pe BitBucket

Nu văd nevoia să descriu asta mai detaliat :)

2. Configurarea GitLab

Avem nevoie de faptul că atunci când împingăm/combinăm în depozit, modificările sunt încărcate și în BitBucket. Pentru a face acest lucru, adăugați un runner (sau editați fișierul existent .gitlab-ci.yml).

Mai întâi adăugăm comenzi la secțiunea before_scripts

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

Apoi adăugați următoarea comandă la etapa dorită:

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

În cazul meu, acesta este fișierul pe care l-am primit:

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

Lansăm build-ul, verificăm dacă modificările/fișierele noastre sunt pe BitBucket.
* după cum a arătat practica, configurarea cheilor SSH este opțională. Dar, pentru orice eventualitate, voi oferi mai jos un algoritm pentru configurarea unei conexiuni prin SSH

Conexiune prin SSH

Mai întâi trebuie să generați o cheie SSH. S-au scris multe articole despre asta. De exemplu, poți să te uiți aici.
Cheile generate arată cam așa:
Integrarea AppCenter și GitLab

Mai departe Cheia secretă trebuie adăugată ca variabilă pe GitLab. Pentru a face acest lucru, accesați Setări > CI/CD > Variabile de mediu. Adăugați TOT conținutul fișierului în care ați salvat cheia secretă. Să numim variabila SSH_PRIVATE_KEY.
* acest fișier, spre deosebire de fișierul cu cheie publică, nu va avea extensia
Integrarea AppCenter și GitLab

Grozav, în continuare trebuie să adăugați cheia publică la BitBucket. Pentru a face acest lucru, deschideți depozitul și accesați Setări > Chei de acces.

Integrarea AppCenter și GitLab

Aici facem clic pe Add Key și introducem conținutul fișierului cu cheia publică (fișier cu extensia .pub).

Următorul pas este să folosiți cheile în gitlab-runner. Utilizați aceste comenzi, dar înlocuiți asteriscurile cu detaliile dvs

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. Configurarea AppCenter

Creăm o nouă aplicație pe AppCenter.

Integrarea AppCenter și GitLab

Specificați limba/platforma

Integrarea AppCenter și GitLab

Apoi, accesați secțiunea Construire a aplicației nou create. Acolo selectăm BitBucket și depozitul creat la pasul 1.

Grozav, acum trebuie să configuram construcția. Pentru a face acest lucru, găsiți pictograma roată

Integrarea AppCenter și GitLab

În principiu, totul acolo este intuitiv. Selectați un proiect și o configurație. Dacă este necesar, activați lansarea testelor după compilare. Vor porni automat.

Practic, asta-i tot. Sună simplu, dar, în mod natural, totul nu va merge bine. Prin urmare, voi descrie câteva erori pe care le-am întâlnit în timpul lucrului:

„ssh-keygen” nu este recunoscut ca o comandă internă sau externă.

De asemenea, apare deoarece calea către ssh-keygen.exe nu este adăugată la variabilele de mediu.
Există două opțiuni: adăugați C:Program FilesGitusrbin la Variabilele de mediu (va fi aplicat după repornirea mașinii) sau lansați consola din acest director.

AppCenter este conectat la contul BitBucket greșit?

Pentru a rezolva problema, trebuie să deconectați contul BitBucket de la AppCenter. Ne conectăm la contul BitBucket greșit și mergem la profilul de utilizator.

Integrarea AppCenter și GitLab

Apoi, accesați Setări > Gestionarea accesului > OAuth

Integrarea AppCenter și GitLab

Faceți clic pe Revocare pentru a vă deconecta contul.

Integrarea AppCenter și GitLab

După aceasta, trebuie să vă conectați cu contul BitBucket necesar.
* Ca ultimă soluție, ștergeți și memoria cache a browserului.

Acum să mergem la AppCenter. accesați secțiunea Build, faceți clic pe Deconectați contul BitBucket

Integrarea AppCenter și GitLab

Când vechiul cont este deconectat, conectăm din nou AppCenter. Acum la contul dorit.

„eval” nu este recunoscut ca o comandă internă sau externă

Îl folosim în loc de o comandă

  - eval $(ssh-agent -s)

Echipă:

  - ssh-agent

În unele cazuri, va trebui fie să specificați calea completă către C:Program FilesGitusrbinssh-agent.exe, fie să adăugați această cale la variabilele de sistem de pe mașina pe care rulează rulantul

AppCenter Build încearcă să lanseze o versiune pentru un proiect dintr-un depozit bitBucket învechit

În cazul meu, problema a apărut deoarece lucram cu mai multe conturi. Am decis să șterg memoria cache.

Sursa: www.habr.com

Adauga un comentariu