Tryam, bonjour !
Je voudrais parler de mon expérience dans la mise en place de l'intégration de GitLab et AppCenter via BitBucket.
Le besoin d'une telle intégration est apparu lors de la mise en place du lancement automatique des tests d'interface utilisateur pour un projet multiplateforme sur Xamarin. Tutoriel détaillé en dessous de la coupe !
* Je ferai un article séparé sur l'automatisation des tests d'interface utilisateur dans des conditions multiplateformes si le public est intéressé.
Je n'ai déterré qu'un seul de ces documents
Tâche: Mettre en place le lancement automatique des tests UI sur AppCenter, étant donné que notre équipe utilise GitLab comme système de contrôle de version.
problème Il s'est avéré qu'AppCenter ne s'intègre pas directement à GitLab. Le contournement via BitBucket a été choisi comme l'une des solutions.
Pas
1. Créez un référentiel vide sur BitBucket
Je ne vois pas la nécessité de décrire cela plus en détail :)
2. Configuration de GitLab
Nous en avons besoin lors du transfert/fusion dans le référentiel, les modifications soient également téléchargées sur BitBucket. Pour ce faire, ajoutez un runner (ou modifiez le fichier .gitlab-ci.yml existant).
Nous ajoutons d’abord 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:[email protected]/username/projectname.git
Dans mon cas, voici le fichier que j'ai obtenu :
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 le build, vérifions que nos modifications/fichiers sont sur BitBucket.
* comme la pratique l'a montré, la configuration des clés SSH est facultative. Mais, juste au cas où, je fournirai ci-dessous un algorithme pour établir une connexion via SSH
Connexion via SSH
Vous devez d’abord générer une clé SSH. De nombreux articles ont été écrits à ce sujet. Par exemple, vous pouvez regarder
Les clés générées ressemblent à ceci :
Suivant La clé secrète doit être ajouté 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é secrète. Appelons la variable SSH_PRIVATE_KEY.
* ce fichier, contrairement au fichier de clé publique, n'aura pas l'extension
Génial, vous devez ensuite ajouter la clé publique à BitBucket. Pour ce faire, ouvrez le référentiel et accédez à Paramètres > Clés d'accès.
Ici, nous cliquons sur Ajouter une clé et insérons 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 remplacez les astérisques par vos coordonnées
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. Configuration d'AppCenter
Nous créons une nouvelle application sur AppCenter.
Spécifiez la langue/plateforme
Ensuite, accédez à la section Build de l’application nouvellement créée. Là, nous sélectionnons BitBucket et le référentiel créé à l'étape 1.
Super, nous devons maintenant configurer la build. Pour ce faire, recherchez l'icône d'engrenage
En principe, tout y est intuitif. Sélectionnez un projet et une configuration. Si nécessaire, activez le lancement des tests après le build. Ils démarreront automatiquement.
En gros, c'est tout. Cela semble simple, mais, naturellement, tout ne se passera pas sans heurts. Par conséquent, je vais décrire quelques erreurs que j'ai rencontrées en travaillant :
'ssh-keygen' n'est pas reconnu comme une commande interne ou externe.
Cela se produit également parce que le chemin d’accès à ssh-keygen.exe n’est pas ajouté aux variables d’environnement.
Il y a deux options : ajouter C:Program FilesGitusrbin aux variables d'environnement (sera appliqué après le redémarrage de la machine), ou lancer la console depuis ce répertoire.
AppCenter connecté au mauvais compte BitBucket ?
Pour résoudre le problème, vous devez dissocier votre compte BitBucket d'AppCenter. Nous nous connectons au mauvais compte BitBucket et accédons au profil utilisateur.
Ensuite, allez dans Paramètres > Gestion des accès > OAuth
Cliquez sur Révoquer pour dissocier votre compte.
Après cela, vous devez vous connecter avec le compte BitBucket requis.
* En dernier recours, videz également le cache de votre navigateur.
Passons maintenant à AppCenter. allez dans la section Build, cliquez sur Déconnecter le compte BitBucket
Lorsque l'ancien compte est dissocié, nous associons à nouveau AppCenter. Passons maintenant au compte souhaité.
'eval' n'est pas reconnu comme une commande interne ou externe
Nous l'utilisons à la place d'une commande
- eval $(ssh-agent -s)
Équipe:
- ssh-agent
Dans certains cas, vous devrez soit spécifier le chemin complet vers C:Program FilesGitusrbinssh-agent.exe, soit ajouter ce chemin aux variables système sur la machine sur laquelle le programme d'exécution s'exécute.
AppCenter Build tente de lancer une build pour un projet à partir d'un référentiel bitBucket obsolète
Dans mon cas, le problème est survenu parce que je travaillais avec plusieurs comptes. J'ai décidé de vider le cache.
Source: habr.com