Intégration AppCenter et GitLab

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 статью. Par conséquent, mon article peut aider quelqu'un.

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

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

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.

Intégration AppCenter et GitLab

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.

Intégration AppCenter et GitLab

Spécifiez la langue/plateforme

Intégration AppCenter et GitLab

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

Intégration AppCenter et GitLab

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.

Intégration AppCenter et GitLab

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

Intégration AppCenter et GitLab

Cliquez sur Révoquer pour dissocier votre compte.

Intégration AppCenter et GitLab

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

Intégration AppCenter et GitLab

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

Ajouter un commentaire