AppCenter en GitLab-integrasie

Trem, hallo!

Ek wil jou vertel van my ervaring met die opstel van GitLab en AppCenter-integrasie via BitBucket.

Die behoefte aan sulke integrasie het ontstaan ​​tydens die opstel van outomatiese bekendstelling van UI-toetse vir 'n kruisplatformprojek op Xamarin. Gedetailleerde tutoriaal onder die snit!

* Ek sal 'n aparte artikel skryf oor die outomatisering van UI-toetsing in kruisplatformtoestande as die publiek belangstel.

Ek het net een soortgelyke materiaal opgegrawe 'n artikel. Daarom kan my artikel iemand help.

Taak: Stel UI-toetse op om outomaties op AppCenter te loop terwyl ons span GitLab as 'n weergawebeheerstelsel gebruik.

probleem blyk te wees dat AppCenter nie direk met GitLab integreer nie. As een van die oplossings is 'n omleiding deur BitBucket gekies.

stappe

1. Skep 'n leë bewaarplek op BitBucket

Ek sien nie nodig om dit in meer besonderhede te beskryf nie 🙂

2. Stel GitLab op

Ons moet veranderinge aan die bewaarplek druk/saamvoeg om ook na BitBucket opgelaai te word. Om dit te doen, voeg 'n hardloper by (of wysig 'n bestaande .gitlab-ci.yml-lêer).

Voeg eers opdragte by die before_scripts-afdeling

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

Voeg dan die volgende opdrag by die verlangde stadium:

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

In my geval is dit die lêer

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

Ons hardloop die bou, maak seker dat ons veranderinge/lêers op BitBucket is.
* Soos die praktyk getoon het, is die opstel van SSH-sleutels opsioneel. Maar, net vir ingeval, sal ek die verbindingsopstelalgoritme deur SSH hieronder gee

Verbind via SSH

Eerstens moet u 'n SSH-sleutel genereer. Baie artikels is hieroor geskryf. Vir 'n voorbeeld kan jy sien hier.
Die gegenereerde sleutels lyk iets soos volg:
AppCenter en GitLab-integrasie

Verdere Die geheime sleutel moet bygevoeg word as 'n veranderlike op GitLab. Om dit te doen, gaan na Instellings > CI / CD > Omgewingsveranderlikes. Ons voeg AL die inhoud by van die lêer waarin jy die geheime sleutel gestoor het. Kom ons noem die veranderlike SSH_PRIVATE_KEY.
* hierdie lêer, anders as die publieke sleutellêer, sal nie 'n uitbreiding hê nie
AppCenter en GitLab-integrasie

Groot, die volgende stap is om die publieke sleutel by BitBucket te voeg. Om dit te doen, maak die bewaarplek oop, gaan na Instellings > Toegangsleutels.

AppCenter en GitLab-integrasie

Hier maak ons ​​Add Key en plak die inhoud van die lêer met die publieke sleutel (lêer met die .pub-uitbreiding).

Die volgende stap is om die sleutels in gitlab-runner te gebruik. Gebruik hierdie opdragte, maar vervang die sterretjies met jou eie data

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. Stel AppCenter op

Ons skep 'n nuwe toepassing op AppCenter.

AppCenter en GitLab-integrasie

Spesifiseer taal/platform

AppCenter en GitLab-integrasie

Gaan dan na die Bou-afdeling van die nuutgeskepte toepassing. Kies BitBucket daar en die bewaarplek wat in stap 1 geskep is.

Groot, nou moet jy die bou konfigureer. Om dit te doen, vind die rat-ikoon

AppCenter en GitLab-integrasie

In beginsel is alles daar intuïtief duidelik. Kies 'n projek en konfigurasie. Aktiveer indien nodig die bekendstelling van toetse na die bou. Hulle sal outomaties begin.

Basies, dit is al. Dit klink maklik, maar alles sal natuurlik nie vlot verloop nie. Daarom sal ek sommige van die foute beskryf wat ek ondervind het terwyl ek gewerk het:

'ssh-keygen' word nie herken as 'n interne of eksterne opdrag nie.

Kom voor omdat die pad na ssh-keygen.exe nie by die omgewingsveranderlikes gevoeg is nie.
Daar is twee opsies: voeg C:Program FilesGitusrbin by die Enviroment Variables (sal van toepassing wees nadat die masjien herlaai is), of laat die konsole vanaf hierdie gids hardloop.

AppCenter aan die verkeerde BitBucket-rekening gekoppel?

Om die probleem op te los, moet jy jou BitBucket-rekening van AppCenter ontkoppel. Ons gaan na die verkeerde BitBucket-rekening, gaan na die gebruikersprofiel.

AppCenter en GitLab-integrasie

Gaan dan na Instellings > Toegangsbestuur > OAuth

AppCenter en GitLab-integrasie

Klik Herroep om jou rekening te ontkoppel.

AppCenter en GitLab-integrasie

Daarna moet u onder die gewenste BitBucket-rekening aanmeld
* As 'n laaste uitweg, maak u blaaierkas skoon.

Kom ons gaan nou na AppCenter. gaan na die Bou-afdeling, klik Ontkoppel BitBucket-rekening

AppCenter en GitLab-integrasie

Wanneer die ou rekening ontkoppel is, koppel ons die AppCenter weer. Nou na die verlangde rekening.

'eval' word nie as 'n interne of eksterne opdrag erken nie

Gebruik in plaas van opdrag

  - eval $(ssh-agent -s)

Span:

  - ssh-agent

In sommige gevalle sal jy óf die volledige pad na C:\Program Files\Gitusrbinssh-agent.exe moet spesifiseer, óf hierdie pad moet byvoeg by die stelselveranderlikes op die masjien waar runner loop

AppCenter Build probeer om 'n bou vir 'n projek uit 'n verouderde bitBucket-bewaarplek te laat loop

In my geval het die probleem ontstaan ​​as gevolg van die feit dat ek met verskeie rekeninge gewerk het. Besluit om die kas skoon te maak.

Bron: will.com

Voeg 'n opmerking