Hi, hello!
Gusto kong ibahagi ang aking karanasan sa pagse-set up ng pagsasama sa pagitan ng GitLab at AppCenter sa pamamagitan ng BitBucket.
Ang pangangailangan para sa integration na ito ay lumitaw habang nagse-set up ng awtomatikong UI test execution para sa isang cross-platform na proyekto ng Xamarin. Nasa ibaba ang isang detalyadong tutorial!
* Magsusulat ako ng hiwalay na artikulo tungkol sa pag-automate ng pagsubok sa UI sa isang cross-platform na kapaligiran kung interesado ang publiko.
Naghukay lang ako ng isang katulad na materyal . Samakatuwid, ang aking artikulo ay maaaring makatulong sa isang tao.
Gawain: I-set up ang awtomatikong paglulunsad ng mga pagsubok sa UI sa AppCenter, dahil ginagamit ng aming team ang GitLab bilang isang version control system.
problema Ito ay lumabas na ang AppCenter ay hindi direktang nagsasama sa GitLab. Ang isang workaround sa pamamagitan ng BitBucket ay pinili bilang isa sa mga solusyon.
Steps
1. Gumawa ng walang laman na repository sa BitBucket
Hindi ko na kailangang ilarawan ito nang mas detalyado 🙂
2. Pagse-set up ng GitLab
Gusto naming i-push/i-merge ang mga pagbabago sa repository at i-push din sa BitBucket. Para magawa ito, nagdagdag kami ng runner (o i-edit ang umiiral na .gitlab-ci.yml file).
Una, magdagdag ng mga utos sa seksyong before_scripts.
- git config --global user.email "user@email"
- git config --global user.name "username"Pagkatapos ay idinagdag namin ang sumusunod na utos sa nais na yugto:
- git push --mirror https://username:password@bitbucket.org/username/projectname.gitSa aking kaso, nakakuha ako ng isang file na tulad nito
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.gitPinapatakbo namin ang build at tinitingnan kung na-upload na ang aming mga pagbabago/file sa BitBucket.
* Gaya ng ipinakita ng kasanayan, ang pag-set up ng mga SSH key ay opsyonal. Ngunit kung sakali, ibibigay ko ang algorithm para sa pag-set up ng koneksyon sa pamamagitan ng SSH sa ibaba.
Kumokonekta sa pamamagitan ng SSH
Una, kailangan mong bumuo ng isang SSH key. Mayroong maraming mga artikulo tungkol dito. Para sa isang halimbawa, maaari mong tingnan .
Ang mga nabuong key ay ganito ang hitsura:

Pa lihim na susi Kailangan mong idagdag ito bilang isang variable sa GitLab. Upang gawin ito, pumunta sa Mga Setting > CI/CD > Environment Variables. Idagdag ang buong nilalaman ng file kung saan mo na-save ang sikretong key. Tawagan natin ang variable na SSH_PRIVATE_KEY.
* Ang file na ito, hindi katulad ng pampublikong key file, ay hindi magkakaroon ng extension

Mahusay, ngayon kailangan nating idagdag ang pampublikong susi sa BitBucket. Upang gawin ito, buksan ang repositoryo at pumunta sa Mga Setting > Mga Access Key.

Dito namin i-click ang Add Key at i-paste ang mga nilalaman ng file gamit ang pampublikong key (file na may extension na .pub).
Ang susunod na hakbang ay ang paggamit ng mga susi sa gitlab-runner. Gamitin ang mga command na ito, ngunit palitan ang mga asterisk ng sarili mong data.
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. Pagse-set up ng AppCenter
Gumawa ng bagong application sa AppCenter.

Tukuyin ang wika/platform

Susunod, pumunta sa seksyong Build ng bagong likhang application. Piliin ang BitBucket at ang repository na ginawa sa hakbang 1.
Mahusay, ngayon kailangan nating i-configure ang build. Upang gawin ito, hanapin ang icon na gear.

Karaniwan, ang lahat ay madaling maunawaan. Pumili ng proyekto at configuration. Kung kinakailangan, paganahin ang mga pagsubok pagkatapos ng build. Awtomatiko silang tatakbo.
Iyon talaga. Mukhang simple, ngunit natural, hindi ito magiging maayos. Kaya, ilalarawan ko ang ilan sa mga pagkakamaling naranasan ko sa daan:
Ang 'ssh-keygen' ay hindi kinikilala bilang isang panloob o panlabas na utos.
Nangyayari rin ito dahil hindi idinagdag ang path sa ssh-keygen.exe sa mga variable ng kapaligiran.
Mayroong dalawang opsyon: idagdag ang C:\Program Files\Gitus\rbin sa Environment Variables (ito ay ilalapat pagkatapos i-reboot ang makina), o ilunsad ang console mula sa direktoryong ito.
Nakakonekta ang AppCenter sa maling BitBucket account?
Upang malutas ang isyung ito, kailangan mong i-unlink ang iyong BitBucket account mula sa AppCenter. Mag-log in sa maling BitBucket account at pumunta sa iyong user profile.

Susunod, pumunta sa Mga Setting > Pamamahala sa Pag-access > OAuth

I-click ang Bawiin upang i-unlink ang iyong account.

Pagkatapos nito, kailangan mong mag-log in gamit ang nais na BitBucket account.
* Bilang huling paraan, i-clear din ang cache ng iyong browser.
Pumunta ngayon sa AppCenter. Pumunta sa seksyong Build at i-click ang Idiskonekta ang BitBucket account.

Kapag na-unlink na ang lumang account, muling i-link ang AppCenter sa tamang account.
Ang 'eval' ay hindi kinikilala bilang isang panloob o panlabas na utos
Ginagamit namin sa halip na utos
- eval $(ssh-agent -s)Koponan:
- ssh-agentSa ilang mga kaso, kakailanganin mong tukuyin ang buong path sa C:\Program Files\Gitusrbinssh-agent.exe, o idagdag ang path na ito sa mga variable ng system sa makina kung saan tumatakbo ang runner.
Sinusubukan ng AppCenter Build na bumuo ng isang proyekto mula sa isang lumang bitBucket repository.
Sa aking kaso, lumitaw ang problema dahil nagtatrabaho ako sa maraming account. Nalutas ng pag-clear ng cache ang problema.
Pinagmulan: www.habr.com
