Integrazione di AppCenter e GitLab

Ciao, salve!

Voglio condividere la mia esperienza nella configurazione dell'integrazione tra GitLab e AppCenter attraverso BitBucket.

La necessità di tale integrazione è emersa durante la configurazione del lancio automatico dei test UI per un progetto multipiattaforma su Xamarin. Un tutorial dettagliato qui sotto!

* Farò un articolo separato sull'automazione del testing UI in un contesto multipiattaforma, se la pubblicazione susciterà interesse.

Ho trovato solo un materiale simile articolo. Pertanto, il mio articolo potrebbe essere utile a qualcuno.

Compito: Configurare il lancio automatico dei test UI su AppCenter dato che il nostro team utilizza GitLab come sistema di controllo versione.

Problema si è rivelato che AppCenter non si integra direttamente con GitLab. Come una delle soluzioni, è stata scelta la via indiretta tramite BitBucket.

Passaggi

1. Creiamo un repository vuoto su BitBucket

Non vedo la necessità di descrivere questo in dettaglio 🙂

2. Configuriamo GitLab

Abbiamo bisogno che, durante il push/merge nel repository, le modifiche vengano caricate anche su BitBucket. Per fare ciò, aggiungiamo un runner (o modifichiamo il file .gitlab-ci.yml esistente).

Innanzitutto, aggiungiamo i comandi nella sezione before_scripts

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

Poi aggiungiamo il seguente comando nello stage necessario:

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

Nel mio caso, ho ottenuto un file del genere

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

Avviamo il build, verifichiamo che le nostre modifiche/file siano state caricate su BitBucket.
* come dimostra l'esperienza, la configurazione delle chiavi SSH non è obbligatoria. Ma, per ogni evenienza, fornirò di seguito l'algoritmo per configurare la connessione tramite SSH

Connessione tramite SSH

Prima di tutto, è necessario generare una chiave SSH. Sono stati scritti molti articoli al riguardo. Per esempio, puoi dare un'occhiata qui.
Le chiavi generate sembrano circa così:
Integrazione di AppCenter e GitLab

Avanti chiave segreta deve essere aggiunta come variabile su GitLab. A tal fine, andiamo su Settings > CI/CD > Environment Variables. Aggiungiamo TUTTO il contenuto del file in cui hai salvato la chiave segreta. Chiamiamo la variabile SSH_PRIVATE_KEY.
* questo file, a differenza del file con la chiave pubblica, non avrà un'estensione
Integrazione di AppCenter e GitLab

Ottimo, ora dobbiamo aggiungere la chiave pubblica su BitBucket. Per farlo, apriamo il repository, andiamo su Settings > Access Keys.

Integrazione di AppCenter e GitLab

Qui clicchiamo su Add Key e incolliamo il contenuto del file con la chiave pubblica (file con estensione .pub).

Il passo successivo sarà l'uso delle chiavi in gitlab-runner. Usa questi comandi, ma inserisci i tuoi dati al posto degli asterischi.

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. Configurazione di AppCenter

Creiamo una nuova applicazione su AppCenter.

Integrazione di AppCenter e GitLab

Indichiamo il linguaggio / la piattaforma

Integrazione di AppCenter e GitLab

Successivamente, accediamo alla sezione Build della nuova applicazione creata. Selezioniamo BitBucket e il repository creato al passo 1.

Ottimo, ora dobbiamo configurare il build. Per farlo, cerchiamo l'icona dell'ingranaggio.

Integrazione di AppCenter e GitLab

Fondamentalmente, tutto è intuitivo. Selezioniamo il progetto e la configurazione. Se necessario, attiviamo l'esecuzione dei test dopo il build. Saranno eseguiti automaticamente.

In effetti, questo è tutto. Sembra semplice, ma naturalmente non andrà tutto liscio. Quindi descriverò alcuni errori with cui mi sono trovata durante il lavoro:

‘ssh-keygen’ non è riconosciuto come comando interno o esterno.

Si verifica perché il percorso a ssh-keygen.exe non è stato aggiunto alle variabili di ambiente.
Ci sono due opzioni: aggiungere C:Program FilesGitusrbin a Enviroment Variables (applicherà dopo il riavvio della macchina) oppure avviare il terminale da questa directory.

AppCenter si è collegato all'account BitBucket sbagliato?

Per risolvere il problema, è necessario dissociare l'account BitBucket da AppCenter. Accedere all'account BitBucket sbagliato e andare nel profilo utente.

Integrazione di AppCenter e GitLab

Successivamente, andare su Impostazioni > Gestione accessi > OAuth

Integrazione di AppCenter e GitLab

Cliccare su Revoca per dissociare l'account.

Integrazione di AppCenter e GitLab

Dopo di che, è necessario accedere all'account BitBucket corretto.
* In casi estremi, potrebbe essere necessario pulire anche la cache del browser.

Ora andiamo in AppCenter. Andiamo alla sezione Build, clicchiamo su Dissocia account BitBucket.

Integrazione di AppCenter e GitLab

Quando il vecchio account sarà dissociato, ricolleghiamo AppCenter nuovamente. Questa volta, all'account corretto.

'eval' non è riconosciuto come comando interno o esterno.

Usiamo invece il comando

  - eval $(ssh-agent -s)

Comando:

  - ssh-agent

In alcuni casi potrebbe essere necessario specificare il percorso completo a C:Program FilesGitusrbinssh-agent.exe o aggiungere questo percorso alle variabili di sistema sulla macchina dove è in esecuzione il runner.

AppCenter Build sta tentando di avviare il build per il progetto da un repository bitBucket non aggiornato.

Nel mio caso, il problema è sorto perché stavo lavorando con diversi account. Si è risolto pulendo la cache.

Fonte: habr.com

Acquista un hosting affidabile per siti con protezione DDoS, server VPS VDS 🔥 Acquista un hosting affidabile per siti con protezione DDoS, server VPS VDS | ProHoster