Integrazione tra AppCenter e GitLab

Tryam, ciao!

Vorrei parlare della mia esperienza nella configurazione dell'integrazione GitLab e AppCenter tramite BitBucket.

La necessità di tale integrazione è nata durante la configurazione dell'avvio automatico dei test dell'interfaccia utente per un progetto multipiattaforma su Xamarin. Tutorial dettagliato sotto il taglio!

* Se il pubblico è interessato, scriverò un articolo separato sull'automazione dei test dell'interfaccia utente in condizioni multipiattaforma.

Ho trovato solo uno di questi materiali Articolo. Pertanto, il mio articolo potrebbe aiutare qualcuno.

Compito: imposta l'avvio automatico dei test dell'interfaccia utente su AppCenter, dato che il nostro team utilizza GitLab come sistema di controllo della versione.

Problema Si è scoperto che AppCenter non si integra direttamente con GitLab. Come una delle soluzioni è stato scelto il bypass tramite BitBucket.

Passi

1. Crea un repository vuoto su BitBucket

Non vedo la necessità di descriverlo in modo più dettagliato :)

2. Configurazione di GitLab

Abbiamo bisogno che durante il push/l'unione nel repository, le modifiche vengano caricate anche su BitBucket. Per fare ciò, aggiungi un corridore (o modifica il file .gitlab-ci.yml esistente).

Per prima cosa aggiungiamo i comandi alla sezione before_scripts

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

Quindi aggiungi il seguente comando alla fase desiderata:

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

Nel mio caso, questo è il file che ho ottenuto:

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

Lanciamo la build, controlliamo che le nostre modifiche/file siano su BitBucket.
* come ha dimostrato la pratica, la configurazione delle chiavi SSH è facoltativa. Ma, per ogni evenienza, di seguito fornirò un algoritmo per impostare una connessione tramite SSH

Connessione tramite SSH

Per prima cosa devi generare una chiave SSH. Sono stati scritti molti articoli a riguardo. Ad esempio, puoi guardare qui.
Le chiavi generate assomigliano a queste:
Integrazione tra AppCenter e GitLab

Avanti La chiave segreta deve essere aggiunto come variabile a GitLab. Per fare ciò, vai su Impostazioni > CI/CD > Variabili d'ambiente. Aggiungi TUTTO il contenuto del file in cui hai salvato la chiave segreta. Chiamiamo la variabile SSH_PRIVATE_KEY.
* questo file, a differenza del file della chiave pubblica, non avrà l'estensione
Integrazione tra AppCenter e GitLab

Ottimo, poi devi aggiungere la chiave pubblica a BitBucket. Per fare ciò, apri il repository e vai su Impostazioni > Chiavi di accesso.

Integrazione tra AppCenter e GitLab

Qui facciamo clic su Aggiungi chiave e inseriamo il contenuto del file con la chiave pubblica (file con estensione .pub).

Il passaggio successivo è utilizzare le chiavi in ​​gitlab-runner. Usa questi comandi, ma sostituisci gli asterischi con i tuoi dettagli

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

Creiamo una nuova applicazione su AppCenter.

Integrazione tra AppCenter e GitLab

Specificare la lingua/piattaforma

Integrazione tra AppCenter e GitLab

Successivamente, vai alla sezione Compila dell'applicazione appena creata. Lì selezioniamo BitBucket e il repository creato nel passaggio 1.

Ottimo, ora dobbiamo configurare il build. Per fare ciò, trova l'icona dell'ingranaggio

Integrazione tra AppCenter e GitLab

In linea di principio, tutto è intuitivo. Seleziona un progetto e una configurazione. Se necessario, abilitare l'avvio dei test dopo la compilazione. Si avvieranno automaticamente.

Fondamentalmente, questo è tutto. Sembra semplice, ma, naturalmente, non tutto andrà liscio. Pertanto, descriverò alcuni errori che ho riscontrato durante il lavoro:

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

Si verifica anche perché il percorso di ssh-keygen.exe non viene aggiunto alle variabili di ambiente.
Sono disponibili due opzioni: aggiungere C:Program FilesGitusrbin alle variabili d'ambiente (verrà applicato dopo aver riavviato la macchina) o avviare la console da questa directory.

AppCenter è connesso all'account BitBucket sbagliato?

Per risolvere il problema, devi scollegare il tuo account BitBucket da AppCenter. Accediamo all'account BitBucket sbagliato e andiamo al profilo utente.

Integrazione tra AppCenter e GitLab

Successivamente, vai su Impostazioni > Gestione accessi > OAuth

Integrazione tra AppCenter e GitLab

Fai clic su Revoca per scollegare il tuo account.

Integrazione tra AppCenter e GitLab

Successivamente, è necessario accedere con l'account BitBucket richiesto.
* Come ultima risorsa, svuota anche la cache del browser.

Ora andiamo su AppCenter. vai alla sezione Compila, fai clic su Disconnetti account BitBucket

Integrazione tra AppCenter e GitLab

Quando il vecchio account viene scollegato, colleghiamo nuovamente AppCenter. Ora passiamo all'account desiderato.

'eval' non è riconosciuto come comando interno o esterno

Lo usiamo al posto di un comando

  - eval $(ssh-agent -s)

Squadra:

  - ssh-agent

In alcuni casi, dovrai specificare il percorso completo di C:Program FilesGitusrbinssh-agent.exe o aggiungere questo percorso alle variabili di sistema sulla macchina su cui è in esecuzione il runner

AppCenter Build sta tentando di avviare una build per un progetto da un repository bitBucket obsoleto

Nel mio caso, il problema è sorto perché lavoravo con più account. Ho deciso di svuotare la cache.

Fonte: habr.com

Aggiungi un commento