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
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
Le chiavi generate assomigliano a queste:
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
Ottimo, poi devi aggiungere la chiave pubblica a BitBucket. Per fare ciò, apri il repository e vai su Impostazioni > Chiavi di accesso.
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.
Specificare la lingua/piattaforma
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
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.
Successivamente, vai su Impostazioni > Gestione accessi > OAuth
Fai clic su Revoca per scollegare il tuo account.
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
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