Трам, добры дзень!
Жадаю распавесці аб сваім досведзе налады інтэргацыі GitLab і AppCenter праз BitBucket.
Неабходнасць такой інтэграцыі ўзнікла падчас налады аўтаматычнага запуску UI тэстаў для кросплатформавага праекта на Xamarin. Падрабязны тутарыял пад катом!
* Аб аўтаматызацыі UI тэставання ва ўмовах кросплатформавасці зраблю асобны артыкул, калі публіка зацікавіцца.
Падобнага матэрыялу накапала толькі адну
Задача: Наладзіць аўтаматычны запуск UI тэстаў на AppCenter пры тым, што наша каманда выкарыстоўвае GitLab як сістэму кантролю версій.
праблема аказалася ў тым, што AppCenter не інтэргулюецца з GitLab напрамую. Як адзін з рашэнняў быў абраны абыход праз BitBucket.
крокі
1. Ствараем пусты рэпазітар на BitBucket
Не бачу неабходнасці апісваць гэта падрабязней 🙂
2. Наладжваем GitLab
Нам трэба, каб пры push/merge у рэпазітар змены заліваліся яшчэ і на BitBucket. Для гэтага дадаем runner(ці рэдагуемы існуючы .gitlab-ci.yml файл).
Спачатку дадаем каманды ў секцыю before_scripts
- git config --global user.email "user@email"
- git config --global user.name "username"
Потым дадаем наступную каманду ў патрэбны stage:
- 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. Для гэтага ідзем у Settings > CI/CD > Enviroment Variables. Дадаем УСЕ змесціва файла, у які вы захавалі сакрэтны ключ. Назавем зменную SSH_PRIVATE_KEY.
* гэты файл, у адрозненне ад файла з адчыненым ключом, не будзе мець пашырэнні
Выдатна, далей трэба дадаць адчынены ключ на BitBucket. Для гэтага адкрываем рэпазітар, пераходзім у Settings > Access Keys.
Тут нажываем 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' не з'яўляецца reconcognized як internal or external command.
Узнікае і з-за таго, што шлях да ssh-keygen.exe не дададзены ў зменныя асяроддзі.
Варыянты два: дадайце C:Program FilesGitusrbin у Enviroment Variables (прымяніцца пасля перазагрузкі машыны), або запускайце кансоль з гэтай дырэкторыі.
AppCenter падключыўся не да таго BitBucket акаўнту?
Для вырашэння праблемы трэба адвязаць акаўнт BitBucket ад AppCenter. Заходзім у няправільны BitBucket акаўнт, ідзем у профіль карыстальніка.
Далей пераходзім у Settings > Access Management > OAuth
Націскаем Revoke, каб адвязаць акаўнт.
Пасля гэтага трэба залагініцца пад патрэбным BitBucket акаўнтам.
* У крайнім выпадку яшчэ і пачысціць кэш браўзэра
Цяпер пераходзім у AppCenter. пераходзім у секцыю Build, націскаем Disconnect BitBucket account
Калі стары акаўнт будзе адвязаны, прывязваем AppCenter нанова. Цяпер ужо да патрэбнага акаўнта.
'eval' не з'яўляецца reconcognized як internal or external command
Выкарыстоўваны замест каманды
- eval $(ssh-agent -s)
Каманду:
- ssh-agent
У некаторых выпадках давядзецца або паказаць поўны шлях да C:Program FilesGitusrbinssh-agent.exe, або дадаць гэты шлях у сістэмныя зменныя на машыне, дзе запушчаны runner
AppCenter Build спрабуе запусціць білд для праекта з неактуальнага bitBucket рэпазітара
У маім выпадку праблема ўзнікла з-за таго, што я працавала з некалькімі акаўнтамі. Вырашылася ачысткай кэша.
Крыніца: habr.com