Ciao, buongiorno!
Voglio raccontare la mia esperienza nell'impostare l'integrazione tra GitLab e AppCenter tramite BitBucket.
La necessità di tale integrazione è emersa durante la configurazione del lancio automatico dei test UI per un progetto cross-platform su Xamarin. Un tutorial dettagliato sotto il tag!
* Scriverò un articolo a parte sull'automazione dei test UI nelle condizioni di cross-platformità, se la pubblicazione susciterà interesse.
Ho trovato solo un documento 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 delle versioni.
Problema si è rivelato che AppCenter non si integra direttamente con GitLab. Come soluzione, è stata scelta una via alternativa tramite BitBucket.
Passaggi
1. Creiamo un repository vuoto su BitBucket
Non vedo la necessità di descrivere ulteriormente questo 🙂
2. Configuriamo GitLab
Abbiamo bisogno che, al momento del 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).
Prima 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 desiderato:
- git push --mirror https://username:password@bitbucket.org/username/projectname.gitNel mio caso, ho ottenuto un file di questo tipo
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 andate su BitBucket.
* Come ha dimostrato la pratica, la configurazione delle chiavi SSH non è obbligatoria. Ma, per sicurezza, fornirò di seguito l'algoritmo di configurazione della connessione tramite SSH.
Collegamento tramite SSH
Prima di tutto, è necessario generare una chiave SSH. Ci sono molte articoli su questo. Per esempio, puoi consultare .
Le chiavi generate assomigliano più o meno a questo:

Successivamente chiave segreta deve essere aggiunta come variabile su GitLab. Per fare ciò, andiamo su Impostazioni > CI/CD > Variabili di ambiente. 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 fare ciò, apriamo il repository, andiamo su Impostazioni > Chiavi di accesso.

Qui facciamo clic su Aggiungi chiave e incolliamo il contenuto del file con la chiave pubblica (il file con estensione .pub).
Il passo successivo sarà l'utilizzo delle chiavi in gitlab-runner. Utilizza 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.

Specifica il linguaggio/piattaforma

Successivamente, andiamo nella sezione Build dell'applicazione appena creata. Selezioniamo BitBucket e il repository creato al passo 1.
Ottimo, ora dobbiamo configurare il build. A tal fine, troviamo l'icona dell'ingranaggio.

In linea di principio, è tutto intuitivo. Selezioniamo il progetto e la configurazione. Se necessario, attiviamo l'esecuzione dei test dopo il build. Si avvieranno automaticamente.
In linea di principio, è tutto qui. Sembra semplice, ma chiaramente non tutto andrà liscio. Quindi descriverò alcuni errori con cui mi sono imbattuta 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 (applicabile dopo il riavvio del computer) oppure eseguire la console da questa directory.
AppCenter non si è connesso all'account BitBucket corretto?
Per risolvere il problema, è necessario scollegare l'account BitBucket da AppCenter. Accedi all'account BitBucket errato e vai al profilo utente.

Quindi vai su Impostazioni > Gestione accesso > OAuth

Fai clic su Revoca per scollegare l'account.

Dopo ciò, è necessario accedere con l'account BitBucket giusto.
* Come ultima risorsa, potresti pulire anche la cache del browser.
Adesso passiamo a AppCenter. Vai nella sezione Build, fai clic su Disconnetti account BitBucket.

Quando il vecchio account sarà scollegato, ricolleghiamo AppCenter nuovamente. Questa volta all'account corretto.
'eval' non è riconosciuto come comando interno o esterno.
Usa invece il comando
- eval $(ssh-agent -s)Il comando:
- ssh-agentIn alcuni casi dovrai 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 cercando di avviare il build per un progetto da un repository BitBucket obsoleto.
Nel mio caso, il problema è nato dal fatto che lavoravo con diversi account. È stato risolto svuotando la cache.
Fonte: habr.com
