Intégration d'AppCenter et de GitLab

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 article. 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.git

Dans 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.git

Lanç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. ici.
Les clés générées ressemblent à ceci :
Intégration d'AppCenter et de GitLab

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
Intégration d'AppCenter et de GitLab

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

Intégration d'AppCenter et de GitLab

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/*****/*.git

3. Configuration de l'AppCenter

Créons une nouvelle application sur AppCenter.

Intégration d'AppCenter et de GitLab

Indiquez la langue/plateforme

Intégration d'AppCenter et de GitLab

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.

Intégration d'AppCenter et de GitLab

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.

Intégration d'AppCenter et de GitLab

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

Intégration d'AppCenter et de GitLab

Cliquez sur Révoquer pour dissocier le compte.

Intégration d'AppCenter et de GitLab

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.

Intégration d'AppCenter et de GitLab

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-agent

Dans 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

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster