Integrazione di AppCenter e GitLab

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 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 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.git

Nel 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.git

Avviamo 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 qui.
Le chiavi generate assomigliano più o meno a questo:
Integrazione di AppCenter e GitLab

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.
Integrazione di AppCenter e GitLab

Ottimo, ora dobbiamo aggiungere la chiave pubblica su BitBucket. Per fare ciò, apriamo il repository, andiamo su Impostazioni > Chiavi di accesso.

Integrazione di AppCenter e GitLab

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/*****/*.git

3. Configurazione di AppCenter

Creiamo una nuova applicazione su AppCenter.

Integrazione di AppCenter e GitLab

Specifica il linguaggio/piattaforma

Integrazione di AppCenter e GitLab

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.

Integrazione di AppCenter e GitLab

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.

Integrazione di AppCenter e GitLab

Quindi vai su Impostazioni > Gestione accesso > OAuth

Integrazione di AppCenter e GitLab

Fai clic su Revoca per scollegare l'account.

Integrazione di AppCenter e GitLab

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.

Integrazione di AppCenter e GitLab

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

In 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

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