ืฉื™ืœื•ื‘ AppCenter ื•-GitLab

ื˜ืจื™ืื, ืฉืœื•ื!

ืื ื™ ืจื•ืฆื” ืœื“ื‘ืจ ืขืœ ื”ื ื™ืกื™ื•ืŸ ืฉืœื™ ื‘ื”ื’ื“ืจืช ืฉื™ืœื•ื‘ GitLab ื•-AppCenter ื‘ืืžืฆืขื•ืช BitBucket.

ื”ืฆื•ืจืš ื‘ืื™ื ื˜ื’ืจืฆื™ื” ื›ื–ื• ื”ืชืขื•ืจืจ ื‘ืขืช ื”ื’ื“ืจืช ื”ืฉืงื” ืื•ื˜ื•ืžื˜ื™ืช ืฉืœ ืžื‘ื—ื ื™ UI ืขื‘ื•ืจ ืคืจื•ื™ืงื˜ ื—ื•ืฆื” ืคืœื˜ืคื•ืจืžื•ืช ื‘-Xamarin. ื”ื“ืจื›ื” ืžืคื•ืจื˜ืช ืžืชื—ืช ืœื’ื–ืจื”!

* ืื ื™ ืืขืฉื” ืžืืžืจ ื ืคืจื“ ืขืœ ืื•ื˜ื•ืžืฆื™ื” ืฉืœ ื‘ื“ื™ืงื•ืช ืžืžืฉืง ืžืฉืชืžืฉ ื‘ืชื ืื™ื ื—ื•ืฆื™ ืคืœื˜ืคื•ืจืžื” ืื ื”ืฆื™ื‘ื•ืจ ืžืขื•ื ื™ื™ืŸ.

ื—ืคืจืชื™ ืจืง ื—ื•ืžืจ ืื—ื“ ื›ื–ื” ืžืืžืจ. ืœื›ืŸ, ื”ืžืืžืจ ืฉืœื™ ืขืฉื•ื™ ืœืขื–ื•ืจ ืœืžื™ืฉื”ื•.

ืžืฉื™ืžื”: ื”ื’ื“ืจ ื”ืฉืงื” ืื•ื˜ื•ืžื˜ื™ืช ืฉืœ ืžื‘ื—ื ื™ ืžืžืฉืง ืžืฉืชืžืฉ ื‘-AppCenter, ื‘ื”ืชื—ืฉื‘ ื‘ื›ืš ืฉื”ืฆื•ื•ืช ืฉืœื ื• ืžืฉืชืžืฉ ื‘-GitLab ื›ืžืขืจื›ืช ื‘ืงืจืช ื’ืจืกืื•ืช.

ื‘ืขื™ื” ื”ืชื‘ืจืจ ืฉ-AppCenter ืœื ืžืฉืชืœื‘ ื™ืฉื™ืจื•ืช ืขื GitLab. ืžืขืงืฃ ื“ืจืš BitBucket ื ื‘ื—ืจ ื›ืื—ื“ ื”ืคืชืจื•ื ื•ืช.

ะจะฐะณะธ

1. ืฆื•ืจ ืžืื’ืจ ืจื™ืง ื‘-BitBucket

ืื ื™ ืœื ืจื•ืื” ืฆื•ืจืš ืœืชืืจ ืืช ื–ื” ื‘ื™ืชืจ ืคื™ืจื•ื˜ :)

2. ื”ื’ื“ืจืช GitLab

ืื ื—ื ื• ืฆืจื™ื›ื™ื ืฉื›ืืฉืจ ื“ื•ื—ืคื™ื/ืžื™ื–ื•ื’ื™ื ืœืžืื’ืจ, ืฉื™ื ื•ื™ื™ื ื™ื•ืขืœื• ื’ื ืœ-BitBucket. ืœืฉื ื›ืš, ื”ื•ืกืฃ ืจืฅ (ืื• ืขืจื•ืš ืืช ืงื•ื‘ืฅ ื”-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

ืื ื• ืžืฉื™ืงื™ื ืืช ื”-build, ื‘ื•ื“ืงื™ื ืฉื”ืฉื™ื ื•ื™ื™ื/ืงื‘ืฆื™ื ืฉืœื ื• ื ืžืฆืื™ื ื‘-BitBucket.
* ื›ืคื™ ืฉื”ืจืื” ื‘ืคื•ืขืœ, ื”ื’ื“ืจืช ืžืคืชื—ื•ืช SSH ื”ื™ื ืื•ืคืฆื™ื•ื ืœื™ืช. ืื‘ืœ, ืœื›ืœ ืžืงืจื”, ืืกืคืง ืืœื’ื•ืจื™ืชื ืœื”ื’ื“ืจืช ื—ื™ื‘ื•ืจ ื‘ืืžืฆืขื•ืช SSH ืœืžื˜ื”

ืžืชื—ื‘ืจ ื“ืจืš SSH

ืจืืฉื™ืช ืขืœื™ืš ืœื™ืฆื•ืจ ืžืคืชื— SSH. ืขืœ ื›ืš ื ื›ืชื‘ื• ืžืืžืจื™ื ืจื‘ื™ื. ืœื“ื•ื’ืžื”, ืืชื” ื™ื›ื•ืœ ืœื”ืกืชื›ืœ ื›ืืŸ.
ื”ืžืคืชื—ื•ืช ืฉื ื•ืฆืจื• ื ืจืื™ื ื‘ืขืจืš ื›ืš:
ืฉื™ืœื•ื‘ AppCenter ื•-GitLab

ื”ืžืฉืš ื”ืžืคืชื— ื”ืกื•ื“ื™ ืฆืจื™ืš ืœื”ื•ืกื™ืฃ ื›ืžืฉืชื ื” ืœ-GitLab. ื›ื“ื™ ืœืขืฉื•ืช ื–ืืช, ืขื‘ื•ืจ ืืœ ื”ื’ื“ืจื•ืช > CI/CD > ืžืฉืชื ื™ ืกื‘ื™ื‘ื”. ื”ื•ืกืฃ ืืช ื›ืœ ื”ืชื•ื›ืŸ ืฉืœ ื”ืงื•ื‘ืฅ ืฉื‘ื• ืฉืžืจืช ืืช ื”ืžืคืชื— ื”ืกื•ื“ื™. ื‘ื•ืื• ื ืงืจื ืœืžืฉืชื ื” SSH_PRIVATE_KEY.
* ืœืงื•ื‘ืฅ ื–ื”, ื‘ื ื™ื’ื•ื“ ืœืงื•ื‘ืฅ ื”ืžืคืชื— ื”ืฆื™ื‘ื•ืจื™, ืœื ืชื”ื™ื” ื”ืกื™ื•ืžืช
ืฉื™ืœื•ื‘ AppCenter ื•-GitLab

ืžืฆื•ื™ืŸ, ื‘ืฉืœื‘ ื”ื‘ื ืขืœื™ืš ืœื”ื•ืกื™ืฃ ืืช ื”ืžืคืชื— ื”ืฆื™ื‘ื•ืจื™ ืœ-BitBucket. ื›ื“ื™ ืœืขืฉื•ืช ื–ืืช, ืคืชื— ืืช ื”ืžืื’ืจ ื•ืขื‘ื•ืจ ืืœ ื”ื’ื“ืจื•ืช > ืžืคืชื—ื•ืช ื’ื™ืฉื”.

ืฉื™ืœื•ื‘ AppCenter ื•-GitLab

ื›ืืŸ ืื ื• ืœื•ื—ืฆื™ื ืขืœ ื”ื•ืกืฃ ืžืคืชื— ื•ืžื›ื ื™ืกื™ื ืืช ืชื•ื›ืŸ ื”ืงื•ื‘ืฅ ืขื ื”ืžืคืชื— ื”ืฆื™ื‘ื•ืจื™ (ืงื•ื‘ืฅ ืขื ื”ืกื™ื•ืžืช .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.

ืฉื™ืœื•ื‘ AppCenter ื•-GitLab

ืฆื™ื™ืŸ ืืช ื”ืฉืคื”/ืคืœื˜ืคื•ืจืžื”

ืฉื™ืœื•ื‘ AppCenter ื•-GitLab

ืœืื—ืจ ืžื›ืŸ, ืขื‘ื•ืจ ืœืงื˜ืข Build ืฉืœ ื”ื™ื™ืฉื•ื ื”ื—ื“ืฉ ืฉื ื•ืฆืจ. ืฉื ืื ื• ื‘ื•ื—ืจื™ื ืืช BitBucket ื•ืืช ื”ืžืื’ืจ ืฉื ื•ืฆืจ ื‘ืฉืœื‘ 1.

ื ื”ื“ืจ, ืขื›ืฉื™ื• ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื”ื’ื“ื™ืจ ืืช ื”-build. ื›ื“ื™ ืœืขืฉื•ืช ื–ืืช, ืžืฆื ืืช ืกืžืœ ื’ืœื’ืœ ื”ืฉื™ื ื™ื™ื

ืฉื™ืœื•ื‘ AppCenter ื•-GitLab

ื‘ืื•ืคืŸ ืขืงืจื•ื ื™, ื”ื›ืœ ืฉื ืื™ื ื˜ื•ืื™ื˜ื™ื‘ื™. ื‘ื—ืจ ืคืจื•ื™ืงื˜ ื•ืชืฆื•ืจื”. ื‘ืžื™ื“ืช ื”ืฆื•ืจืš, ืืคืฉืจ ืืช ื”ืฉืงืช ื”ื‘ื“ื™ืงื•ืช ืœืื—ืจ ื”ื‘ื ื™ื™ื”. ื”ื ื™ืชื—ื™ืœื• ืื•ื˜ื•ืžื˜ื™ืช.

ื‘ืขื™ืงืจื•ืŸ, ื–ื” ื”ื›ืœ. ื–ื” ื ืฉืžืข ืคืฉื•ื˜, ืื‘ืœ, ื‘ืื•ืคืŸ ื˜ื‘ืขื™, ื”ื›ืœ ืœื ื™ืขื‘ื•ืจ ื—ืœืง. ืœื›ืŸ, ืืชืืจ ื›ืžื” ืฉื’ื™ืื•ืช ืฉื ืชืงืœืชื™ ื‘ื”ืŸ ื‘ืžื”ืœืš ื”ืขื‘ื•ื“ื”:

'ssh-keygen' ืื™ื ื• ืžื–ื•ื”ื” ื›ืคืงื•ื“ื” ืคื ื™ืžื™ืช ืื• ื—ื™ืฆื•ื ื™ืช.

ื–ื” ืงื•ืจื” ื’ื ื‘ื’ืœืœ ืฉื”ื ืชื™ื‘ ืœ-ssh-keygen.exe ืื™ื ื• ื ื•ืกืฃ ืœืžืฉืชื ื™ ื”ืกื‘ื™ื‘ื”.
ื™ืฉื ืŸ ืฉืชื™ ืืคืฉืจื•ื™ื•ืช: ื”ื•ืกืฃ C:Program FilesGitusrbin ืœืžืฉืชื ื™ ื”ืกื‘ื™ื‘ื” (ื™ื•ื—ืœ ืœืื—ืจ ืืชื—ื•ืœ ื”ืžื—ืฉื‘), ืื• ื”ืคืขืœ ืืช ื”ืงื•ื ืกื•ืœื” ืžื”ืกืคืจื™ื™ื” ื”ื–ื•.

AppCenter ืžื—ื•ื‘ืจ ืœื—ืฉื‘ื•ืŸ BitBucket ื”ืœื ื ื›ื•ืŸ?

ื›ื“ื™ ืœืคืชื•ืจ ืืช ื”ื‘ืขื™ื”, ืขืœื™ืš ืœื‘ื˜ืœ ืืช ื”ืงื™ืฉื•ืจ ืฉืœ ื—ืฉื‘ื•ืŸ BitBucket ืฉืœืš ืž-AppCenter. ืื ื• ื ื›ื ืกื™ื ืœื—ืฉื‘ื•ืŸ BitBucket ื”ืœื ื ื›ื•ืŸ ื•ื ื›ื ืกื™ื ืœืคืจื•ืคื™ืœ ื”ืžืฉืชืžืฉ.

ืฉื™ืœื•ื‘ AppCenter ื•-GitLab

ืœืื—ืจ ืžื›ืŸ, ืขื‘ื•ืจ ืืœ ื”ื’ื“ืจื•ืช > ื ื™ื”ื•ืœ ื’ื™ืฉื” > OAuth

ืฉื™ืœื•ื‘ AppCenter ื•-GitLab

ืœื—ืฅ ืขืœ ื‘ื˜ืœ ื›ื“ื™ ืœื‘ื˜ืœ ืืช ืงื™ืฉื•ืจ ื”ื—ืฉื‘ื•ืŸ ืฉืœืš.

ืฉื™ืœื•ื‘ AppCenter ื•-GitLab

ืœืื—ืจ ืžื›ืŸ, ืขืœื™ืš ืœื”ืชื—ื‘ืจ ืขื ื—ืฉื‘ื•ืŸ BitBucket ื”ื ื“ืจืฉ.
* ื›ืžื•ืฆื ืื—ืจื•ืŸ, ื ืงื” ื’ื ืืช ืžื˜ืžื•ืŸ ื”ื“ืคื“ืคืŸ ืฉืœืš.

ื›ืขืช ื ืขื‘ื•ืจ ืœ- AppCenter. ืขื‘ื•ืจ ืœืงื˜ืข ื‘ื ื™ื™ื”, ืœื—ืฅ ืขืœ ื ืชืง ื—ืฉื‘ื•ืŸ BitBucket

ืฉื™ืœื•ื‘ AppCenter ื•-GitLab

ื›ืืฉืจ ื”ื—ืฉื‘ื•ืŸ ื”ื™ืฉืŸ ืžื‘ื•ื˜ืœ, ืื ื• ืžืงืฉืจื™ื ืฉื•ื‘ ืืช AppCenter. ืขื›ืฉื™ื• ืœื—ืฉื‘ื•ืŸ ื”ืจืฆื•ื™.

'eval' ืื™ื ื• ืžื•ื›ืจ ื›ืคืงื•ื“ื” ืคื ื™ืžื™ืช ืื• ื—ื™ืฆื•ื ื™ืช

ืื ื• ืžืฉืชืžืฉื™ื ื‘ื• ื‘ืžืงื•ื ืคืงื•ื“ื”

  - eval $(ssh-agent -s)

ืงึฐื‘ื•ึผืฆึธื”:

  - ssh-agent

ื‘ืžืงืจื™ื ืžืกื•ื™ืžื™ื, ื™ื”ื™ื” ืขืœื™ืš ืœืฆื™ื™ืŸ ืืช ื”ื ืชื™ื‘ ื”ืžืœื ืืœ C:Program FilesGitusrbinssh-agent.exe, ืื• ืœื”ื•ืกื™ืฃ ื ืชื™ื‘ ื–ื” ืœืžืฉืชื ื™ ื”ืžืขืจื›ืช ื‘ืžื—ืฉื‘ ืฉื‘ื• ืคื•ืขืœ ื”ืจืฅ

AppCenter Build ืžื ืกื” ืœื”ืฉื™ืง build ืขื‘ื•ืจ ืคืจื•ื™ืงื˜ ืžืžืื’ืจ bitBucket ืžื™ื•ืฉืŸ

ื‘ืžืงืจื” ืฉืœื™, ื”ื‘ืขื™ื” ื ื•ืฆืจื” ื‘ื’ืœืœ ืฉืขื‘ื“ืชื™ ืขื ืžืกืคืจ ื—ืฉื‘ื•ื ื•ืช. ื”ื—ืœื˜ืชื™ ืœื ืงื•ืช ืืช ื”ืžื˜ืžื•ืŸ.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”