2016-08-29 15 views
10

मुझे अपने विंडोज गिटलैब धावक पर HTTP पर बड़ी रिपॉजिटरीज क्लोनिंग करने में कुछ परेशानी हो रही है। मैंने उथले क्लोन करने या क्लोन संपीड़न को अक्षम करने के कई तरीकों की कोशिश की है। अभी भी कोई भाग्य नहीं है।मैं गिटलाब धावक के लिए एसएसएच पर क्लोनिंग कैसे सक्षम करूं?

एसएसएच पर एक ही भंडार क्लोनिंग एक अस्थायी समाधान के रूप में महान काम करता है और मैं इसे हमारे गिटलैब सीआई प्रक्रिया पर काम करना चाहता हूं।

मुद्दा अब खड़ा है जहां मुझे पता नहीं है कि जीएसएलएब-बहु-धावक के लिए क्लोन विधि के रूप में एसएसएच का उपयोग कैसे किया जाए। ऐसा लगता है कि HTTP को डिफॉल्ट के रूप में उपयोग करना प्रतीत होता है, और क्लोनिंग के संबंध में मेरे एकमात्र विकल्प यह है कि क्या यह पूर्ण क्लोन या फ़ेच करेगा।

CI/CD Display

कोई व्याख्या कर सकते हैं कि कैसे मुझे लगता है कि क्लोन मिल सकता है/के बजाय SSH HTTP पर एक धावक पर काम करने के लाने?

Gitlab संस्करण: GitLab समुदाय संस्करण 8.10.7

धन्यवाद!

+2

इस सुविधा के लिए एक मुद्दा खोला गया है ([233] (https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/issues/233)), लेकिन ऐसा लगता है कि ऐसा लगता है कार्यान्वयन के बिना बंद कर दिया गया है ... – Lucas

उत्तर

0

अनुसार करने के लिए:

  1. ssh-keygen के साथ एक नया SSH कुंजी युग्म
  2. परियोजना के लिए एक गुप्त चर के रूप में निजी कुंजी जोड़े बनाएँ:

    https://docs.gitlab.com/ee/ci/ssh_keys/README.html

    आप की जरूरत है

  3. निजी कुंजी लोड करने के लिए नौकरी के दौरान एसएसएच एजेंट चलाएं।

उदाहरण gitlab_ci.yml:

before_script: 
    # Install ssh-agent if not already installed, it is required by Docker. 
    # (change apt-get to yum if you use a CentOS-based image) 
    - 'which ssh-agent || (apt-get update -y && apt-get install openssh-client -y)' 

    # Run ssh-agent (inside the build environment) 
    - eval $(ssh-agent -s) 

    # Add the SSH key stored in SSH_PRIVATE_KEY variable to the agent store 
    - ssh-add <(echo "$SSH_PRIVATE_KEY") 

    # For Docker builds disable host key checking. Be aware that by adding that 
    # you are suspectible to man-in-the-middle attacks. 
    # WARNING: Use this only with the Docker executor, if you use it with shell 
    # you will overwrite your user's SSH config. 
    - mkdir -p ~/.ssh 
    - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config' 
    # In order to properly check the server's host key, assuming you created the 
    # SSH_SERVER_HOSTKEYS variable previously, uncomment the following two lines 
    # instead. 
    # - mkdir -p ~/.ssh 
    # - '[[ -f /.dockerenv ]] && echo "$SSH_SERVER_HOSTKEYS" > ~/.ssh/known_hosts' 
1

एक नवागंतुक gitlab के रूप में, मैं इस मुद्दे पर कोई समाधान हैक करने प्रबंधित किया है के रूप में मैं भी एक में निर्मित रास्ता बदलने के लिए नहीं मिला है डिफ़ॉल्ट क्लोनिंग प्रक्रिया (हालांकि here is a recent comment about how it can be done)।

disabling the automatic cloning process द्वारा, आप before_script में अपनी क्लोनिंग प्रक्रिया को लिखकर पूरी तरह से अपने व्यवहार को प्रभावी ढंग से ओवरराइड कर सकते हैं। केवल उदाहरण के प्रयोजनों के लिए नीचे दिए गए शो कैसे HTTP क्लोनिंग के लिए यह पूरा करने के करता है लेकिन ssh क्लोनिंग (if you're trying to use HTTP cloning you should use the built-in cloning process and the config.toml) के लिए अनुकूलित किया जा सकता:

  1. "gitlab-धावक" कहा जाता है एक नया उपयोगकर्ता बनाएँ और अपने उपयोगकर्ता प्रमाणन उत्पन्न बाद के उपयोग के लिए टोकन (या आपके मामले में, आप एसएसएच कुंजी उत्पन्न करेंगे)।

  2. धावक के लिए क्लोनिंग प्रक्रिया या तो अपनी परियोजना या समूह सेटिंग में निम्न चर जोड़कर अक्षम: .../settings/ci_cd

    कुंजी: GIT_STRATEGY

    मूल्य: कोई भी

  3. क्लोन अपने रेपो में एक before_script इस तरह के के रूप में:

 
before_script: 
    ## clean the working directory 
    - BUILD_DIR=/home/gitlab-runner/builds/$RUNNER_TOKEN/0 
    - CLONE_DIR="$BUILD_DIR/$CI_PROJECT_PATH" 
    - cd $BUILD_DIR 
    - rm -rf $CLONE_DIR 
    - mkdir -p $CLONE_DIR 

    ## clone the project each time (inefficient, consider performing fetch instead if it already exists) 
    - git clone http://gitlab-runner:[email protected]:8888/${CI_PROJECT_PATH}.git $CLONE_DIR 
    - cd $CLONE_DIR 

नोट:

  • RUNNER_TOKEN:: यहाँ प्रासंगिक चर मैं भी चरण 2 के बजाय कठिन में विन्यस्त लिपि में उन्हें कोडिंग कर रहे हैं विशेष रूप से धावक के लिए "धावक टोकन" मूल्य व्यवस्थापक में सूचीबद्ध "धावक" मेनू आप दौड़ने की कोशिश कर रहे हैं।
  • GITLABRUNNER_USER_AUTH_TOKEN: यह प्रमाणीकरण टोकन आप 1.

भी चरण में बनाया गया है, मैं expanding configuration of the runner cloning process के लिए gitlab में एक मुद्दा खोला।

संबंधित मुद्दे