แž€แžถแžšแžšแžฝแž˜แž”แž‰แŸ’แž…แžผแž› AppCenter แž“แžทแž„ GitLab

แž‘แŸ’แžšแžธแž˜ แžŸแžฝแžŸแŸ’แžแžธ!

แžแŸ’แž‰แžปแŸ†แž…แž„แŸ‹แž“แžทแž™แžถแž™แžขแŸ†แž–แžธแž”แž‘แž–แžทแžŸแŸ„แž’แž“แŸแžšแž”แžŸแŸ‹แžแŸ’แž‰แžปแŸ†แž€แŸ’แž“แžปแž„แž€แžถแžšแžŠแŸ†แžกแžพแž„แž€แžถแžšแžšแžฝแž˜แž”แž‰แŸ’แž…แžผแž› GitLab แž“แžทแž„ AppCenter แžแžถแž˜แžšแž™แŸˆ BitBucket แŸ”

แžแž˜แŸ’แžšแžผแžœแž€แžถแžšแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž’แŸ’แžœแžพแžŸแž˜แžถแž แžšแžŽแž€แž˜แŸ’แž˜แž”แŸ‚แž”แž“แŸแŸ‡แž”แžถแž“แž€แžพแžแžกแžพแž„แž“แŸ…แž–แŸแž›แžšแŸ€แž”แž…แŸ†แž€แžถแžšแž…แžถแž”แŸ‹แž•แŸ’แžŠแžพแž˜แžŠแŸ„แž™แžŸแŸ’แžœแŸแž™แž”แŸ’แžšแžœแžแŸ’แžแžทแž“แŸƒแž€แžถแžšแž’แŸ’แžœแžพแžแŸแžŸแŸ’แž UI แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž‚แž˜แŸ’แžšแŸ„แž„แž†แŸ’แž›แž„แžœแŸแž‘แžทแž€แžถแž“แŸ…แž›แžพ Xamarin แŸ” แž˜แŸแžšแŸ€แž“แž›แž˜แŸ’แžขแžทแžแžแžถแž„แž€แŸ’แžšแŸ„แž˜แž€แžถแžแŸ‹!

* แžแŸ’แž‰แžปแŸ†แž“แžนแž„แž”แž„แŸ’แž€แžพแžแžขแžแŸ’แžแž”แž‘แžŠแžถแž…แŸ‹แžŠแŸ„แž™แžกแŸ‚แž€แž˜แžฝแž™แžขแŸ†แž–แžธแž€แžถแžšแž’แŸ’แžœแžพแžแŸแžŸแŸ’แž UI แžŠแŸ„แž™แžŸแŸ’แžœแŸแž™แž”แŸ’แžšแžœแžแŸ’แžแžทแž“แŸ…แž€แŸ’แž“แžปแž„แž›แž€แŸ’แžแžแžŽแŸ’แžŒแž†แŸ’แž›แž„แžœแŸแž‘แžทแž€แžถ แž”แŸ’แžšแžŸแžทแž“แž”แžพแžŸแžถแž’แžถแžšแžŽแž‡แž“แž…แžถแž”แŸ‹แžขแžถแžšแž˜แŸ’แž˜แžŽแŸแŸ”

แžแŸ’แž‰แžปแŸ†โ€‹แž”แžถแž“โ€‹แž‡แžธแž€โ€‹แž™แž€โ€‹แžแŸ‚โ€‹แžŸแž˜แŸ’แž—แžถแžšแŸˆโ€‹แž”แŸ‚แž”โ€‹แž“แŸแŸ‡โ€‹แž˜แžฝแž™โ€‹แž”แŸ‰แžปแžŽแŸ’แžŽแŸ„แŸ‡แŸ” แžขแžแŸ’แžแž”แž‘. แžŠแžผแž…แŸ’แž“แŸแŸ‡ แžขแžแŸ’แžแž”แž‘แžšแž”แžŸแŸ‹แžแŸ’แž‰แžปแŸ†แžขแžถแž…แž‡แžฝแž™แž“แžšแžŽแžถแž˜แŸ’แž“แžถแž€แŸ‹แž”แžถแž“แŸ”

แž‚แŸ„แž›แž”แŸ†แžŽแž„แŸ– แžŠแŸ†แžกแžพแž„แž€แžถแžšแž…แžถแž”แŸ‹แž•แŸ’แžŠแžพแž˜แž€แžถแžšแž’แŸ’แžœแžพแžแŸแžŸแŸ’แž UI แžŠแŸ„แž™แžŸแŸ’แžœแŸแž™แž”แŸ’แžšแžœแžแŸ’แžแžทแž“แŸ…แž›แžพ AppCenter แžŠแŸ„แž™แž•แŸ’แžแž›แŸ‹แžฑแŸ’แž™แžแžถแž€แŸ’แžšแžปแž˜แžšแž”แžŸแŸ‹แž™แžพแž„แž”แŸ’แžšแžพ GitLab แž‡แžถแž”แŸ’แžšแž–แŸแž“แŸ’แž’แž‚แŸ’แžšแž”แŸ‹แž‚แŸ’แžšแž„แž€แŸ†แžŽแŸ‚แŸ”

แž”แž‰แŸ’แž แžถ แžœแžถแž”แŸ’แžšแŸ‚แžแžถ AppCenter แž˜แžทแž“แžšแžฝแž˜แž”แž‰แŸ’แž…แžผแž›แžŠแŸ„แž™แž•แŸ’แž‘แžถแž›แŸ‹แž‡แžถแž˜แžฝแž™ GitLab แž‘แŸแŸ” Bypass แžแžถแž˜แžšแž™แŸˆ 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:password@bitbucket.org/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 แŸ” แžขแžแŸ’แžแž”แž‘แž‡แžถแž…แŸ’แžšแžพแž“แžแŸ’แžšแžผแžœแž”แžถแž“แžŸแžšแžŸแŸแžšแžขแŸ†แž–แžธแžšแžฟแž„แž“แŸแŸ‡แŸ” แžงแž‘แžถแž แžšแžŽแŸแžขแŸ’แž“แž€แžขแžถแž…แž˜แžพแž› แž“แŸ…แž‘แžธแž“แŸแŸ‡.
แžŸแŸ„แžŠแŸ‚แž›แž”แžถแž“แž”แž„แŸ’แž€แžพแžแž˜แžพแž›แž‘แŸ…แžŠแžผแž…แž“แŸแŸ‡แŸ–
แž€แžถแžšแžšแžฝแž˜แž”แž‰แŸ’แž…แžผแž› AppCenter แž“แžทแž„ GitLab

แž”แž“แŸ’แžแŸ‚แž˜แž‘แŸ€แž แž‚แž“แŸ’แž›แžนแŸ‡แžŸแž˜แŸ’แž„แžถแžแŸ‹ แžแŸ’แžšแžผแžœแž€แžถแžšแž”แž“แŸ’แžแŸ‚แž˜แž‡แžถแžขแžแŸแžšแž‘แŸ… GitLab แŸ” แžŠแžพแž˜แŸ’แž”แžธแž’แŸ’แžœแžพแžŠแžผแž…แž“แŸแŸ‡แž…แžผแž›แž‘แŸ…แž€แžถแž“แŸ‹แž€แžถแžšแž€แŸ†แžŽแžแŸ‹ > CI/CD > Environment VariablesแŸ” แž”แž“แŸ’แžแŸ‚แž˜แž˜แžถแžแžทแž€แžถแž‘แžถแŸ†แž„แžขแžŸแŸ‹แž“แŸƒแžฏแž€แžŸแžถแžšแžŠแŸ‚แž›แžขแŸ’แž“แž€แž”แžถแž“แžšแž€แŸ’แžŸแžถแž‘แžปแž€แžŸแŸ„แžŸแž˜แŸ’แž„แžถแžแŸ‹แŸ” แžแŸ„แŸ‡แž แŸ…แžขแžแŸแžš SSH_PRIVATE_KEY แŸ”
* แžฏแž€แžŸแžถแžšแž“แŸแŸ‡ แž˜แžทแž“แžŠแžผแž…แžฏแž€แžŸแžถแžšแžŸแŸ„แžŸแžถแž’แžถแžšแžŽแŸˆแž‘แŸ แž“แžนแž„แž˜แžทแž“แž˜แžถแž“แž•แŸ’แž“แŸ‚แž€แž”แž“แŸ’แžแŸ‚แž˜แž‘แŸแŸ”
แž€แžถแžšแžšแžฝแž˜แž”แž‰แŸ’แž…แžผแž› AppCenter แž“แžทแž„ GitLab

แž‡แžถแž€แžถแžšแž”แŸ’แžšแžŸแžพแžšแžŽแžถแžŸแŸ‹ แž”แž“แŸ’แž‘แžถแž”แŸ‹แžขแŸ’แž“แž€แžแŸ’แžšแžผแžœแž”แž“แŸ’แžแŸ‚แž˜แžŸแŸ„แžŸแžถแž’แžถแžšแžŽแŸˆแž‘แŸ… BitBucket แŸ” แžŠแžพแž˜แŸ’แž”แžธแž’แŸ’แžœแžพแžŠแžผแž…แž“แŸแŸ‡แž”แžพแž€แžƒแŸ’แž›แžถแŸ†แž„แž แžพแž™แž…แžผแž›แž‘แŸ…แž€แžถแž“แŸ‹แž€แžถแžšแž€แŸ†แžŽแžแŸ‹> แžŸแŸ„แž…แžผแž›แŸ”

แž€แžถแžšแžšแžฝแž˜แž”แž‰แŸ’แž…แžผแž› AppCenter แž“แžทแž„ GitLab

แž“แŸ…แž‘แžธแž“แŸแŸ‡แž™แžพแž„แž…แžปแž… 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 git@bitbucket.org

mirror:
  stage: mirror
  script:
    - git push --mirror https://****:****@bitbucket.org/*****/*****.git

3. แž€แžถแžšแžŠแŸ†แžกแžพแž„ AppCenter

แž™แžพแž„แž”แž„แŸ’แž€แžพแžแž€แž˜แŸ’แž˜แžœแžทแž’แžธแžแŸ’แž˜แžธแž“แŸ…แž›แžพ AppCenter แŸ”

แž€แžถแžšแžšแžฝแž˜แž”แž‰แŸ’แž…แžผแž› AppCenter แž“แžทแž„ GitLab

แž”แž‰แŸ’แž‡แžถแž€แŸ‹แž—แžถแžŸแžถ/แžœแŸแž‘แžทแž€แžถ

แž€แžถแžšแžšแžฝแž˜แž”แž‰แŸ’แž…แžผแž› AppCenter แž“แžทแž„ GitLab

แž”แž“แŸ’แž‘แžถแž”แŸ‹แž˜แž€แž…แžผแž›แž‘แŸ…แž€แžถแž“แŸ‹แž•แŸ’แž“แŸ‚แž€ Build แž“แŸƒแž€แž˜แŸ’แž˜แžœแžทแž’แžธแžŠแŸ‚แž›แž”แžถแž“แž”แž„แŸ’แž€แžพแžแžแŸ’แž˜แžธแŸ” แž“แŸ…แž‘แžธแž“แŸ„แŸ‡แž™แžพแž„แž‡แŸ’แžšแžพแžŸแžšแžพแžŸ BitBucket แž“แžทแž„แžƒแŸ’แž›แžถแŸ†แž„แžŠแŸ‚แž›แž”แžถแž“แž”แž„แŸ’แž€แžพแžแž€แŸ’แž“แžปแž„แž‡แŸ†แž แžถแž“แž‘แžธ 1 แŸ”

แž›แŸ’แžขแžŽแžถแžŸแŸ‹ แžฅแžกแžผแžœแž™แžพแž„แžแŸ’แžšแžผแžœแž€แŸ†แžŽแžแŸ‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’แžŸแŸ†แžŽแž„แŸ‹แŸ” แžŠแžพแž˜แŸ’แž”แžธแž’แŸ’แžœแžพแžŠแžผแž…แž“แŸแŸ‡แžŸแŸ’แžœแŸ‚แž„แžšแž€แžšแžผแž”แžแŸ†แžŽแžถแž„แžŸแŸ’แž–แžบ

แž€แžถแžšแžšแžฝแž˜แž”แž‰แŸ’แž…แžผแž› AppCenter แž“แžทแž„ GitLab

แž‡แžถแž‚แŸ„แž›แž€แžถแžšแžŽแŸแžขแŸ’แžœแžธแž‚แŸ’แžšแž”แŸ‹แž™แŸ‰แžถแž„แžŠแŸ‚แž›แž˜แžถแž“แžœแžทแž…แžถแžšแžŽแž‰แžถแžŽแŸ” แž‡แŸ’แžšแžพแžŸแžšแžพแžŸแž‚แž˜แŸ’แžšแŸ„แž„ แž“แžทแž„แž€แžถแžšแž€แŸ†แžŽแžแŸ‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’แŸ” แž”แžพแž…แžถแŸ†แž”แžถแž…แŸ‹ แž”แžพแž€แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž€แžถแžšแžŸแžถแž€แž›แŸ’แž”แž„แž”แž“แŸ’แž‘แžถแž”แŸ‹แž–แžธแž€แžถแžšแžŸแŸ’แžแžถแž”แž“แžถแŸ” แž–แžฝแž€แž‚แŸแž“แžนแž„แž…แžถแž”แŸ‹แž•แŸ’แžแžพแž˜แžŠแŸ„แž™แžŸแŸ’แžœแŸแž™แž”แŸ’แžšแžœแžแŸ’แžแžทแŸ”

แž‡แžถแž‘แžผแž‘แŸ… แž“แŸ„แŸ‡แž แžพแž™แž‡แžถแžขแŸ’แžœแžธแž‘แžถแŸ†แž„แžขแžŸแŸ‹แŸ” แžœแžถแžŸแŸ’แžแžถแž”แŸ‹แž‘แŸ…แžŸแžถแž˜แž‰แŸ’แž‰ แž”แŸ‰แžปแž“แŸ’แžแŸ‚แžแžถแž˜แž’แž˜แŸ’แž˜แž‡แžถแžแžท แžขแŸ’แžœแžธแŸ—แž“แžนแž„แž˜แžทแž“แžšแž›แžผแž“แž‘แŸแŸ” แžขแžถแžŸแŸ’แžšแŸแž™แž แŸแžแžปแž“แŸแŸ‡ แžแŸ’แž‰แžปแŸ†แž“แžนแž„แžšแŸ€แž”แžšแžถแž”แŸ‹แžขแŸ†แž–แžธแž€แŸ†แž แžปแžŸแž˜แžฝแž™แž…แŸ†แž“แžฝแž“แžŠแŸ‚แž›แžแŸ’แž‰แžปแŸ†แž”แžถแž“แž‡แžฝแž”แž”แŸ’แžšแž‘แŸ‡แž“แŸ…แž–แŸแž›แž’แŸ’แžœแžพแž€แžถแžšแŸ–

'ssh-keygen' แž˜แžทแž“แžแŸ’แžšแžผแžœแž”แžถแž“แž‘แž‘แžฝแž›แžŸแŸ’แž‚แžถแž›แŸ‹แžแžถแž‡แžถแž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถแžแžถแž„แž€แŸ’แž“แžปแž„ แžฌแžแžถแž„แž€แŸ’แžšแŸ…แž‘แŸแŸ”

แžœแžถแž€แŸแž€แžพแžแžกแžพแž„แž•แž„แžŠแŸ‚แžšแžŠแŸ„แž™แžŸแžถแžšแžแŸ‚แž•แŸ’แž›แžผแžœแž‘แŸ…แž€แžถแž“แŸ‹ ssh-keygen.exe แž˜แžทแž“แžแŸ’แžšแžผแžœแž”แžถแž“แž”แž“แŸ’แžแŸ‚แž˜แž‘แŸ…แžขแžแŸแžšแž”แžšแžทแžŸแŸ’แžแžถแž“แŸ”
แž˜แžถแž“แž‡แž˜แŸ’แžšแžพแžŸแž–แžธแžšแŸ– แž”แž“แŸ’แžแŸ‚แž˜ C:Program FilesGitusrbin แž‘แŸ… Environment Variables (แž“แžนแž„แžแŸ’แžšแžผแžœแž”แžถแž“แžขแž“แžปแžœแžแŸ’แžแž”แž“แŸ’แž‘แžถแž”แŸ‹แž–แžธแž…แžถแž”แŸ‹แž•แŸ’แžแžพแž˜แž˜แŸ‰แžถแžŸแŸŠแžธแž“แžกแžพแž„แžœแžทแž‰) แžฌแž”แžพแž€แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž€แžปแž„แžŸแžผแž›แž–แžธแžแžแž“แŸแŸ‡แŸ”

AppCenter แž”แžถแž“แž—แŸ’แž‡แžถแž”แŸ‹แž‘แŸ…แž‚แžŽแž“แžธ BitBucket แžแžปแžŸ?

แžŠแžพแž˜แŸ’แž”แžธแžŠแŸ„แŸ‡แžŸแŸ’แžšแžถแž™แž”แž‰แŸ’แž แžถ แžขแŸ’แž“แž€แžแŸ’แžšแžผแžœแž•แŸ’แžแžถแž…แŸ‹แž‚แžŽแž“แžธ BitBucket แžšแž”แžŸแŸ‹แžขแŸ’แž“แž€แž–แžธ AppCenter แŸ” แž™แžพแž„แž…แžผแž›แž‘แŸ…แž€แŸ’แž“แžปแž„แž‚แžŽแž“แžธ BitBucket แžแžปแžŸ แž แžพแž™แž…แžผแž›แž‘แŸ…แž€แžถแž“แŸ‹แž‘แž˜แŸ’แžšแž„แŸ‹แžขแŸ’แž“แž€แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แŸ”

แž€แžถแžšแžšแžฝแž˜แž”แž‰แŸ’แž…แžผแž› AppCenter แž“แžทแž„ GitLab

แž”แž“แŸ’แž‘แžถแž”แŸ‹แž˜แž€แž…แžผแž›แž‘แŸ…แž€แžถแž“แŸ‹แž€แžถแžšแž€แŸ†แžŽแžแŸ‹ > แž€แžถแžšแž‚แŸ’แžšแž”แŸ‹แž‚แŸ’แžšแž„แž€แžถแžšแž…แžผแž›แžŠแŸ†แžŽแžพแžšแž€แžถแžš > OAuth

แž€แžถแžšแžšแžฝแž˜แž”แž‰แŸ’แž…แžผแž› AppCenter แž“แžทแž„ GitLab

แž…แžปแž…แž›แžปแž”แž…แŸ„แž› แžŠแžพแž˜แŸ’แž”แžธแž•แŸ’แžŠแžถแž…แŸ‹แž‚แžŽแž“แžธแžšแž”แžŸแŸ‹แžขแŸ’แž“แž€แŸ”

แž€แžถแžšแžšแžฝแž˜แž”แž‰แŸ’แž…แžผแž› AppCenter แž“แžทแž„ GitLab

แž”แž“แŸ’แž‘แžถแž”แŸ‹แž–แžธแž“แŸแŸ‡แžขแŸ’แž“แž€แžแŸ’แžšแžผแžœแž…แžผแž›แžŠแŸ„แž™แž”แŸ’แžšแžพแž‚แžŽแž“แžธ BitBucket แžŠแŸ‚แž›แžแŸ’แžšแžผแžœแž€แžถแžšแŸ”
* แž‡แžถแž˜แž’แŸ’แž™แŸ„แž”แžถแž™แž…แžปแž„แž€แŸ’แžšแŸ„แž™ แžŸแžผแž˜แžŸแž˜แŸ’แžขแžถแžแžƒแŸ’แž›แžถแŸ†แž„แžŸแž˜แŸ’แž„แžถแžแŸ‹แž€แž˜แŸ’แž˜แžœแžทแž’แžธแžšแžปแž€แžšแž€แžแžถแž˜แžขแŸŠแžธแž“แž’แžบแžŽแžทแžแžšแž”แžŸแŸ‹แžขแŸ’แž“แž€แž•แž„แžŠแŸ‚แžšแŸ”

แžฅแžกแžผแžœแž“แŸแŸ‡แžŸแžผแž˜แž…แžผแž›แž‘แŸ…แž€แžถแž“แŸ‹ AppCenter แŸ” แž…แžผแž›แž‘แŸ…แž€แžถแž“แŸ‹แž•แŸ’แž“แŸ‚แž€ Build แž…แžปแž…แž•แŸ’แžแžถแž…แŸ‹แž‚แžŽแž“แžธ BitBucket

แž€แžถแžšแžšแžฝแž˜แž”แž‰แŸ’แž…แžผแž› AppCenter แž“แžทแž„ GitLab

แž“แŸ…แž–แŸแž›แžŠแŸ‚แž›แž‚แžŽแž“แžธแž…แžถแžŸแŸ‹แžแŸ’แžšแžผแžœแž”แžถแž“แž•แŸ’แžŠแžถแž…แŸ‹ แž™แžพแž„แž—แŸ’แž‡แžถแž”แŸ‹ AppCenter แž˜แŸ’แžแž„แž‘แŸ€แžแŸ” แžฅแžกแžผแžœแž“แŸแŸ‡แž‘แŸ…แž€แžถแž“แŸ‹แž‚แžŽแž“แžธแžŠแŸ‚แž›แž…แž„แŸ‹แž”แžถแž“แŸ”

'eval' แž˜แžทแž“แžแŸ’แžšแžผแžœแž”แžถแž“แž‘แž‘แžฝแž›แžŸแŸ’แž‚แžถแž›แŸ‹แžแžถแž‡แžถแž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถแžแžถแž„แž€แŸ’แž“แžปแž„ แžฌแžแžถแž„แž€แŸ’แžšแŸ…แž‘แŸแŸ”

แž™แžพแž„แž”แŸ’แžšแžพแžœแžถแž‡แŸ†แž“แžฝแžŸแžฑแŸ’แž™แž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถ

  - eval $(ssh-agent -s)

แž€แŸ’แžšแžปแž˜แŸ–

  - ssh-agent

แž€แŸ’แž“แžปแž„แž€แžšแžŽแžธแžแŸ’แž›แŸ‡ แžขแŸ’แž“แž€แž“แžนแž„แžแŸ’แžšแžผแžœแž”แž‰แŸ’แž‡แžถแž€แŸ‹แž•แŸ’แž›แžผแžœแž–แŸแž‰แž›แŸแž‰แž‘แŸ…แž€แžถแž“แŸ‹ C:Program FilesGitusrbinssh-agent.exe แžฌแž”แž“แŸ’แžแŸ‚แž˜แž•แŸ’แž›แžผแžœแž“แŸแŸ‡แž‘แŸ…แžขแžแŸแžšแž”แŸ’แžšแž–แŸแž“แŸ’แž’แž“แŸ…แž›แžพแž˜แŸ‰แžถแžŸแŸŠแžธแž“แžŠแŸ‚แž›แžขแŸ’แž“แž€แžšแžแŸ‹แž€แžถแžšแž€แŸ†แž–แžปแž„แžŠแŸ†แžŽแžพแžšแž€แžถแžšแŸ”

AppCenter Build แž€แŸ†แž–แžปแž„แž–แŸ’แž™แžถแž™แžถแž˜แž”แžพแž€แžŠแŸ†แžŽแžพแžšแž€แžถแžšแžŸแžถแž„แžŸแž„แŸ‹แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž‚แž˜แŸ’แžšแŸ„แž„แž–แžธแžƒแŸ’แž›แžถแŸ†แž„ bitBucket แž แžฝแžŸแžŸแž˜แŸแž™

แž€แŸ’แž“แžปแž„แž€แžšแžŽแžธแžšแž”แžŸแŸ‹แžแŸ’แž‰แžปแŸ† แž”แž‰แŸ’แž แžถแž”แžถแž“แž€แžพแžแžกแžพแž„แžŠแŸ„แž™แžŸแžถแžšแžแŸ‚แžแŸ’แž‰แžปแŸ†แž€แŸ†แž–แžปแž„แž’แŸ’แžœแžพแž€แžถแžšแž‡แžถแž˜แžฝแž™แž‚แžŽแž“แžธแž‡แžถแž…แŸ’แžšแžพแž“แŸ” แžแŸ’แž‰แžปแŸ†แž”แžถแž“แžŸแž˜แŸ’แžšแŸแž…แž…แžทแžแŸ’แžแž›แžปแž”แžƒแŸ’แž›แžถแŸ†แž„แžŸแž˜แŸ’แž„แžถแžแŸ‹แŸ”

แž”แŸ’แžšแž—แž–: www.habr.com

แž‘แžทแž‰แž€แžถแžšแž”แž„แŸ’แž แŸ„แŸ‡แžŠแŸ‚แž›แžขแžถแž…แž‘แžปแž€แž…แžทแžแŸ’แžแž”แžถแž“แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž‚แŸแž แž‘แŸ†แž–แŸแžšแžŠแŸ‚แž›แž˜แžถแž“แž€แžถแžšแž€แžถแžšแž–แžถแžš DDoS, แž˜แŸ‰แžถแžŸแŸŠแžธแž“แž˜แŸ VPS VDS ๐Ÿ”ฅ แž‘แžทแž‰แžŸแŸแžœแžถแž”แž„แŸ’แž แŸ„แŸ‡แž‚แŸแž แž‘แŸ†แž–แŸแžšแžŠแŸ‚แž›แžขแžถแž…แž‘แžปแž€แž…แžทแžแŸ’แžแž”แžถแž“แž‡แžถแž˜แžฝแž™แž“แžนแž„แž€แžถแžšแž€แžถแžšแž–แžถแžš DDoS แž“แžทแž„แž˜แŸ‰แžถแžŸแŸŠแžธแž“แž˜แŸ VPS VDS | ProHoster