Триам, здравей!
Бих искал да говоря за моя опит в настройването на интеграция на GitLab и AppCenter чрез BitBucket.
Необходимостта от такава интеграция възникна при настройването на автоматично стартиране на UI тестове за крос-платформен проект на Xamarin. Подробен урок под разреза!
* Ще направя отделна статия за автоматизирането на тестването на потребителския интерфейс в условия на различни платформи, ако обществеността се интересува.
Изрових само един такъв материал
Задача: Настройте автоматично стартиране на UI тестове в AppCenter, като се има предвид, че нашият екип използва GitLab като система за контрол на версиите.
проблем Оказа се, че AppCenter не се интегрира директно с GitLab. Като едно от решенията беше избран байпас чрез BitBucket.
Шаги
1. Създайте празно хранилище в BitBucket
Не виждам нужда да го описвам по-подробно :)
2. Настройване на GitLab
Имаме нужда, когато натискаме/сливаме в хранилището, промените също да се качват в BitBucket. За да направите това, добавете runner (или редактирайте съществуващия файл .gitlab-ci.yml).
Първо добавяме команди към раздела before_scripts
- git config --global user.email "user@email"
- git config --global user.name "username"
След това добавете следната команда към желания етап:
- git push --mirror https://username:[email protected]/username/projectname.git
В моя случай това е файлът, който получих:
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
Стартираме изграждането, проверяваме дали нашите промени/файлове са в BitBucket.
* както показа практиката, настройването на SSH ключове не е задължително. Но за всеки случай ще предоставя алгоритъм за настройка на връзка чрез SSH по-долу
Връзка чрез SSH
Първо трябва да генерирате SSH ключ. За това са изписани много статии. Например, можете да погледнете
Генерираните ключове изглеждат по следния начин:
Още Тайният ключ трябва да се добави като променлива в GitLab. За да направите това, отидете на Настройки > CI/CD > Променливи на средата. Добавете ЦЯЛОТО съдържание на файла, в който сте записали секретния ключ. Нека извикаме променливата SSH_PRIVATE_KEY.
* този файл, за разлика от файла с публичен ключ, няма да има разширение
Страхотно, следващото трябва да добавите публичния ключ към BitBucket. За да направите това, отворете хранилището и отидете на Настройки > Ключове за достъп.
Тук кликваме Add Key и вмъкваме съдържанието на файла с публичния ключ (файл с разширение .pub).
Следващата стъпка е да използвате ключовете в gitlab-runner. Използвайте тези команди, но заменете звездичките с вашите данни
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. Настройка на AppCenter
Създаваме ново приложение в AppCenter.
Посочете езика/платформата
След това отидете в секцията Build на новосъздаденото приложение. Там избираме BitBucket и хранилището, създадено в стъпка 1.
Страхотно, сега трябва да конфигурираме компилацията. За да направите това, намерете иконата на зъбно колело
По принцип всичко там е интуитивно. Изберете проект и конфигурация. Ако е необходимо, активирайте стартирането на тестове след изграждането. Те ще стартират автоматично.
По принцип това е всичко. Звучи просто, но, естествено, всичко няма да върви гладко. Затова ще опиша някои грешки, които срещнах по време на работа:
'ssh-keygen' не се разпознава като вътрешна или външна команда.
Също така възниква, защото пътят до ssh-keygen.exe не е добавен към променливите на средата.
Има две опции: добавете C:Program FilesGitusrbin към променливите на средата (ще се приложи след рестартиране на машината) или стартирайте конзолата от тази директория.
AppCenter е свързан с грешен BitBucket акаунт?
За да разрешите проблема, трябва да прекратите връзката на вашия BitBucket акаунт с AppCenter. Влизаме в грешния акаунт в BitBucket и отиваме в потребителския профил.
След това отидете на Настройки> Управление на достъпа> OAuth
Щракнете върху Отмяна, за да прекратите връзката на вашия акаунт.
След това трябва да влезете с необходимия BitBucket акаунт.
* В краен случай изчистете и кеша на браузъра си.
Сега да отидем в AppCenter. отидете в секцията Build, щракнете върху Disconnect BitBucket акаунт
Когато старият акаунт бъде прекратен, свързваме AppCenter отново. Сега към желания акаунт.
'eval' не се разпознава като вътрешна или външна команда
Използваме го вместо команда
- eval $(ssh-agent -s)
екип:
- ssh-agent
В някои случаи ще трябва или да посочите пълния път до C:Program FilesGitusrbinssh-agent.exe, или да добавите този път към системните променливи на машината, на която работи програмата
AppCenter Build се опитва да стартира компилация за проект от остаряло bitBucket хранилище
В моя случай проблемът възникна, защото работех с множество акаунти. Реших да изчистя кеша.
Източник: www.habr.com