2016-10-12 3 views
4

현재 CI 통합을 위해 다중 러너와 함께 gitlab.com (로컬 설치 아님)을 사용하고 있습니다. 이것은 내 프로젝트 중 하나에서 훌륭하게 작동하지만 다른 프로젝트에서는 실패합니다.gitlab runner 요청 된 URL이 오류를 반환했습니다 : 403

저는 MSBuild 버전 14.0.23107.0으로 내 호스트에 2012R2를 사용하고 있습니다. 나는 아래의 오류가 액세스 거부 메시지 인 403을 보여줍니다. 내 문제는 변경 권한 설정을 찾는 것입니다.

오류 메시지 :

Running with gitlab-ci-multi-runner 1.5.3 (fb49c47) Using Shell executor... Running on WIN-E0ORPCQUFHS...

Fetching changes...

HEAD is now at 6a70d96 update runner file remote: Access denied fatal: unable to access ' https://gitlab-ci-token:[email protected]/##REDACTED##/ADInactiveObjectCleanup.git/ ': The requested URL returned error: 403 Checking out 60ea1410 as Production...

fatal: reference is not a tree: 60ea1410dd7586f6ed9535d058f07c5bea2ba9c7 ERROR: Build failed: exit status 128

gitlab-ci.yml 파일 : 당신이 당신의 before_script에 현재 디렉토리를 인쇄 할 cd 명령을 추가 추가 할 필요가 같은

variables: 
    Solution: ADInactiveObjectCleanup.sln 

before_script: 
    #- "echo off" 
    #- 'call "%VS120COMNTOOLS%\vsvars32.bat"' 
    ## output environment variables (usefull for debugging, propably not what you want to do if your ci server is public) 
    #- echo. 
    #- set 
    #- echo. 

stages: 
    - build 
    #- test 
    #- deploy 

build: 
    stage: build 
    script: 
    - echo building... 
    - '"%ProgramFiles(x86)%\MSBuild\14.0\Bin\msbuild.exe" "%Solution%" /p:Configuration=Release' 
    except: 
    #- tags 

답변

7

이 문제를 해결하려면 프로젝트 회원으로 추가해야했습니다. 이것은 개인 repo입니다. 이로 인해 주자가 다른 권한 설정으로 실패하게되었는지 여부는 확실하지 않지만 가능성이 높습니다.

gitlab의 article 도움말에서이 문제를 간략히 설명합니다.

With the new permission model in place, there may be times that your build will fail. This is most likely because your project tries to access other project's sources, and you don't have the appropriate permissions. In the build log look for information about 403 or forbidden access messages.

As an Administrator, you can verify that the user is a member of the group or project they're trying to have access to, and you can impersonate the user to retry the failing build in order to verify that everything is correct.

프로젝트 페이지에서 설정 기어를 클릭 한 다음 회원을 클릭하십시오. 자신 (또는 사용자 생성 빌드)을 프로젝트의 멤버로 추가하십시오. 저는 "Master"역할을 사용했지만, this document을 기준으로 "Reporter"역할을 최소한으로 사용할 수 있습니다. 기자 역할은 "프로젝트 코드 가져 오기"에 여전히 액세스 할 수있는 최소 권한입니다. 이로 인해 403 오류가 제거되어 계속 진행할 수있었습니다.

+0

환경 변수 덤프에는 빌드를 시작한 사람의 이메일이 있습니다. 그 사람의 권리는 특정 서버 측 요소의 성공과 실패를 결정할 것입니다. 그 맞습니까? –

+0

나를 위해 환경 변수 덤프를 수행하지 않습니다. 'before_script'블록에 도달하기 전에 주자 정지를 복제/가져올 수없는 경우 –

+0

아, 그래, 약간의 실패 사례입니다. gitlab 러너 config.toml에 git clone이 실패 할 때 실행되는 쉘 명령을위한 옵션을 갖는 것이 좋은 기능 일 수 있습니다. 그래서 당신은 그런 것을 알아낼 수 있습니다. –

0

이 보인다. 그런 다음 해당 폴더의 부모에 액세스 할 수있는 권한을 수정하십시오. gitlab 러너를 c : \ glrunner에 설치했다면 수정해야 할 c : \ glrunner \ builds 권한이있을 것입니다.

두 번째 문제는 빌드 폴더를 삭제하여 새 git 복제본을 강제로 적용해야 할 수 있습니다.

gitlab 러너 서비스의 로그인 자격 증명을 관리자가 아닌 계정이어야하는 gitlabuser으로 변경할 수 있습니다.이 계정은 gitlab 러너가 기본적으로 사용하는 LOCAL SYSTEM 계정보다 적은 특권을 가질 수 있습니다.

누가 로그인했는지 알고 싶다면 set을 before_script에도 추가하면 환경 변수 덤프가 생성됩니다. 거기에서 로그인 한 계정과 USERPROFILE이있는 위치 및 다른 것들을 볼 수 있습니다.

+0

나는 한 번에 하나씩 모든 제안을 테스트했습니다. 그것은 여전히 ​​그것을 고치지 않았지만, 올바른 방향으로 나를 찾고 있습니다. 모든 제안을 통해 문제는 설치된 러너 또는 시스템과 관련이 없음을 알 수있었습니다. 문제는 gitlab.com의 프로젝트 권한에 존재했습니다. 나는 곧 나의 결의안을 올릴 것이다. –

+0

시스템에서 완전히 제어 할 수없는 문제를 해결하는 것은 사실 까다 롭습니다. 나는 당신이이 같은 권한 문제를보고 해결할 수 있도록 도움을 줄 도구가 필요하다고 생각합니다. 러너의'~/.ssh/id_rsa.pub' 키가 gitlab에 알려지고 받아 들여지는 것만 큼 간단합니까? –

+0

훨씬 간단합니다. 나는 이미 소유하고있는 프로젝트에 자신을 회원으로 추가해야만했습니다 ... –

관련 문제