2016-08-29 4 views
10

내 Windows Gitlab 러너에서 HTTP를 통해 대형 리포지토리를 복제하는 데 문제가 있습니다. 나는 얕은 복제를하거나 복제 압축을 불가능하게하는 몇 가지 방법을 시도했다. 아직도 운이 없다.Gitlab 러너에 대해 SSH를 통한 복제를 활성화하려면 어떻게해야합니까?

SSH를 통해 동일한 저장소를 복제하는 것이 임시 솔루션으로 효과적이므로 Gitlab CI 프로세스에서이 작업을 수행하고 싶습니다.

이제는 gitlab-multi-runner의 복제 방법으로 SSH를 사용하는 방법을 알지 못합니다. 단지 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 키 쌍을 생성합니다

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

    당신이 필요

  2. 작업 중에 ssh-agent를 실행하여 개인 키를로드하십시오.

예 gitlab_ci.yml : 나는 또한을 변경하는 내장 된 방법을 발견하지 않은 것처럼 gitlab하는 신규 이민자

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

, 나는이 문제에 대한 해결 방법을 해킹하기 위해 관리했습니다 기본 복제 프로세스 (비록 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 주자"라는 새 사용자를 생성하고 사용자 인증을 생성 토큰을 사용하십시오 (또는 ssh 키를 생성하는 경우).사용자의 프로젝트 또는 그룹 설정에서 다음과 같은 변수를 추가하여 주자

  2. 해제 복제 프로세스 : GIT_STRATEGY

    값 : 없음

  3. 복제 당신의 repo before_script 등의 주요 .../settings/ci_cd

    예 :

 
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 
012 3,516,

참고 :

  • RUNNER_TOKEN : 다음은 스크립트를 코딩 나는 또한 2 단계가 아닌 하드에 구성 관련 변수 특정 주자를위한 "주자에게"관리자에 나와 "러너 토큰"값 메뉴는 도망 가고있다.
  • GITLABRUNNER_USER_AUTH_TOKEN : 이것은 당신이 1

또한 단계에서 생성 된 인증 토큰, 내가 expanding configuration of the runner cloning process에 대한 gitlab에 문제를 열었다.

관련 문제