Intégration d'AppCenter et de GitLab

Bonjour bonjour


Je veux parler de mon expérience dans la configuration de l'intégration de GitLab et AppCenter via BitBucket.


La nécessité d'une telle intégration est apparue lors de la configuration du lancement automatique des tests d'interface utilisateur pour un projet multiplateforme sur Xamarin. Un tutoriel détaillé sous la coupe!


* Sur l'automatisation des tests d'interface utilisateur dans des conditions multiplateformes, je ferai un article séparé si le public est intéressé.


Ce matériel n'a déterré qu'un seul article . Par conséquent, mon article peut aider quelqu'un.


Tâche : configurer le lancement automatique des tests d'interface utilisateur sur AppCenter, tandis que notre équipe utilise GitLab comme système de contrôle de version.


Le problème s'est avéré que AppCenter ne s'intègre pas directement avec GitLab. Comme l'une des solutions, un contournement via BitBucket a été choisi.


Étapes


1. Créez un référentiel BitBucket vide


Je ne vois pas la nécessité de le décrire plus en détail :)


2. Configurer GitLab


Nous en avons besoin lorsque les modifications push / fusion vers le référentiel sont également versées sur BitBucket. Pour ce faire, ajoutez le runner (ou modifiez le fichier .gitlab-ci.yml existant).


Tout d'abord, ajoutez des commandes Ă  la section before_scripts


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

Ajoutez ensuite la commande suivante à l'étape souhaitée:


 - git push --mirror https://username:password@bitbucket.org/username/projectname.git 

Dans mon cas, j'ai un tel fichier


 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 

Nous lançons la construction, vérifions que nos modifications / fichiers sont basés sur BitBucket.
* Comme le montre la pratique, la configuration des clés SSH est facultative. Mais, au cas où, je donnerai l'algorithme de configuration de la connexion via SSH ci-dessous


Connexion SSH

Vous devez d'abord générer une clé SSH. De nombreux articles ont été écrits à ce sujet. Pour un exemple, vous pouvez regarder ici .
Les clés générées ressemblent à ceci:


Ensuite, la clé secrète doit être ajoutée en tant que variable sur GitLab. Pour ce faire, accédez à Paramètres> CI / CD> Variables d'environnement. Ajoutez TOUT le contenu du fichier dans lequel vous avez enregistré la clé privée. Appelons la variable SSH_PRIVATE_KEY.
* ce fichier, contrairement à un fichier de clé publique, n'aura pas d'extension


Très bien, alors vous devez ajouter la clé publique à BitBucket. Pour ce faire, ouvrez le référentiel, accédez à Paramètres> Clés d'accès.



Cliquez ensuite sur Ajouter une clé et collez le contenu du fichier avec la clé publique (fichier avec l'extension .pub).


L'étape suivante consiste à utiliser les clés dans gitlab-runner. Utilisez ces commandes, mais spécifiez vos données au lieu d'astérisques


 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. Configurer AppCenter


Nous créons une nouvelle application sur AppCenter.



Précisez la langue / la plateforme



Ensuite, accédez à la section Build de la nouvelle application créée. Nous y sélectionnons BitBucket et le référentiel créé à l'étape 1.


Ok, maintenant vous devez configurer la build. Pour ce faire, recherchez l'icĂ´ne d'engrenage



En principe, tout y est intuitif. Nous sélectionnons le projet et la configuration. Si nécessaire, activez le lancement des tests après la génération. Ils démarreront automatiquement.


En principe, c'est tout. Cela semble facile, mais naturellement, tout ne se passera pas bien. Par conséquent, je décrirai quelques erreurs que j'ai rencontrées en travaillant:


'ssh-keygen' n'est pas reconnu comme une commande interne ou externe.

Il se produit car le chemin d'accès à ssh-keygen.exe n'est pas ajouté aux variables d'environnement.
Il existe deux options: ajoutez C: \ Program Files \ Git \ usr \ bin aux variables d'environnement (s'appliquera après le redémarrage de la machine), ou démarrez la console à partir de ce répertoire.


AppCenter connecté au mauvais compte BitBucket?

Pour résoudre le problème, vous devez détacher le compte BitBucket d'AppCenter. Nous entrons dans le mauvais compte BitBucket, accédez au profil utilisateur.



Ensuite, accédez à Paramètres> Gestion des accès> OAuth



Cliquez sur Révoquer pour délier le compte.



Après cela, vous devez vous connecter sous le compte BitBucket nécessaire
* Dans les cas extrêmes, effacez également le cache du navigateur


Accédez maintenant à AppCenter. allez dans la section Build, cliquez sur Disconnect BitBucket account



Lorsque l'ancien compte est délié, nous lions à nouveau AppCenter. Passons maintenant au compte souhaité.


'eval' n'est pas reconnu comme une commande interne ou externe

Utiliser Ă  la place de la commande


  - eval $(ssh-agent -s) 

Commande:


  - ssh-agent 

Dans certains cas, vous devrez soit spécifier le chemin d'accès complet à C: \ Program Files \ Git \ usr \ bin \ ssh-agent.exe, soit ajouter ce chemin aux variables système sur la machine sur laquelle runner s'exécute


AppCenter Build essaie de lancer une génération pour un projet à partir d'un référentiel bitBucket non pertinent

Dans mon cas, le problème est survenu parce que j'ai travaillé avec plusieurs comptes. J'ai décidé de vider le cache.

Source: https://habr.com/ru/post/fr444136/


All Articles