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 . 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.gitNel 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.gitAvviamo 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 .
Le chiavi generate sembrano circa così:

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

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

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/*****/*.git3. Configurazione di AppCenter
Creiamo una nuova applicazione su AppCenter.

Indichiamo il linguaggio / la piattaforma

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.

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.

Successivamente, andare su Impostazioni > Gestione accessi > OAuth

Cliccare su Revoca per dissociare l'account.

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.

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-agentIn 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
