Bonjour !
Je souhaite partager mon expérience de 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 UI pour un projet multiplateforme sur Xamarin. Un tutoriel détaillé est disponible ici !
* Concernant l'automatisation des tests UI dans le cadre du multiplateformisme, je ferai un article sĂ©parĂ© si la publication suscite de l'intĂ©rĂȘt.
Je n'ai trouvĂ© qu'un seul . Par consĂ©quent, mon article pourrait ĂȘtre utile Ă quelqu'un.
La tùche: Configurer le lancement automatique des tests UI sur AppCenter alors que notre équipe utilise GitLab comme systÚme de contrÎle de version.
Le problĂšme s'est avĂ©rĂ© ĂȘtre que AppCenter ne s'intĂšgre pas directement avec GitLab. Comme une des solutions, nous avons choisi de contourner cela par BitBucket.
Ătapes
1. Créer un dépÎt vide sur BitBucket
Je ne vois pas la nĂ©cessitĂ© de dĂ©crire cela plus en dĂ©tail đ
2. Configurer GitLab
Nous devons nous assurer que lors d'un push/merge dans le dépÎt, les modifications sont envoyées également sur BitBucket. Pour cela, nous ajoutons un runner (ou nous modifions le fichier .gitlab-ci.yml existant).
D'abord, ajoutons des commandes dans la section before_scripts
- git config --global user.email "user@email"
- git config --global user.name "username"Ensuite, ajoutons la commande suivante dans la phase souhaitée :
- git push --mirror https://username:password@bitbucket.org/username/projectname.gitDans mon cas, cela a donné le fichier suivant
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.gitLançons la build et vérifions que nos modifications/fichiers ont bien été envoyés sur BitBucket.
* Comme l'expérience l'a montré, la configuration des clés SSH n'est pas obligatoire. Mais, par précaution, je fournirai ci-dessous l'algorithme de configuration de la connexion via SSH.
Connexion via SSH
Tout d'abord, il faut générer une clé SSH. De nombreuses articles en parlent. Vous pouvez consulter un exemple. .
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 cela, allez dans Settings > CI/CD > Enviroment Variables. Ajoutez TOUT le contenu du fichier oĂč vous avez enregistrĂ© la clĂ© secrĂšte. Nommons la variable SSH_PRIVATE_KEY.
* ce fichier, contrairement au fichier de clé publique, n'aura pas d'extension

Super, maintenant il faut ajouter la clé publique sur BitBucket. Pour cela, ouvrez le dépÎt, allez dans Settings > Access Keys.

Cliquez sur Ajouter une clé et collez le contenu du fichier contenant la clé publique (fichier avec l'extension .pub).
La prochaine étape sera d'utiliser des clés dans gitlab-runner. Utilisez ces commandes, mais remplacez les astérisques par vos donné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 git@bitbucket.org
mirror:
stage: mirror
script:
- git push --mirror https://****:****@bitbucket.org/*****/*.git3. Configuration de l'AppCenter
Créons une nouvelle application sur AppCenter.

Indiquez la langue/plateforme

Ensuite, accédez à la section Build de l'application nouvellement créée. Sélectionnez BitBucket et le dépÎt créé à l'étape 1.
Super, maintenant nous devons configurer la build. Pour cela, cherchons l'icĂŽne d'engrenage.

En principe, tout est intuitif. Choisissez le projet et la configuration. Si nécessaire, activez l'exécution des tests aprÚs la build. Ils seront lancés automatiquement.
En gros, c'est tout. Cela semble simple, mais, bien sûr, tout ne se passera pas sans accroc. Par conséquent, je vais décrire quelques erreurs auxquelles j'ai été confrontée lors de l'utilisation :
âssh-keygenâ n'est pas reconnu comme une commande interne ou externe.
Cela se produit parce que le chemin vers ssh-keygen.exe n'est pas ajouté aux variables d'environnement.
Il y a deux options : ajoutez C:Program FilesGitusrbin dans les variables d'environnement (cela s'appliquera aprÚs le redémarrage de la machine), ou exécutez la console depuis ce répertoire.
L'AppCenter ne s'est pas connecté au bon compte BitBucket ?
Pour résoudre ce problÚme, il faut dissocier le compte BitBucket de l'AppCenter. Accédez au mauvais compte BitBucket et allez dans le profil utilisateur.

Ensuite, allez dans ParamĂštres > Gestion des accĂšs > OAuth

Cliquez sur Révoquer pour dissocier le compte.

AprĂšs cela, il faut se connecter avec le bon compte BitBucket.
* En dernier recours, vous pouvez également vider le cache du navigateur.
Maintenant, retournons dans l'AppCenter. Accédez à la section Build, cliquez sur Déconnecter le compte BitBucket.

Lorsque l'ancien compte sera déconnecté, associez à nouveau l'AppCenter. Cette fois au bon compte.
âevalâ n'est pas reconnu comme une commande interne ou externe.
Utilisez Ă la place la commande
- eval $(ssh-agent -s)La commande :
- ssh-agentDans certains cas, il faudra soit indiquer le chemin complet vers C:Program FilesGitusrbinssh-agent.exe, soit ajouter ce chemin aux variables systĂšme sur la machine oĂč le runner est lancĂ©.
L'AppCenter Build essaie de lancer la build pour un projet à partir d'un dépÎt BitBucket obsolÚte.
Dans mon cas, le problÚme est survenu parce que je travaillais avec plusieurs comptes. Il a été résolu en vidant le cache.
Source : habr.com
