2017-09-06 12 views
2

케이크 스크립트에서 사용자 디렉토리 경로 (절대)가 필요합니다. 빌드 에이전트의 nuget 캐시를 애플리케이션을 빌드하는 도커 컨테이너에 마운트합니다. 어떻게해야합니까?케이크 빌드에서 사용자 디렉토리를 얻는 방법

Directory("~") 

이 작동하지 않습니다.

+0

이 오류를주고 있습니까? 아니면 그 길을 가르쳐주지 않습니까? 또한이 작업은'var curDir = MakeAbsolute (Directory ("~"));' –

+0

입니다. 오류는 없습니다. 정보 (MakeAbsolute (Directory ("~")))는'c : \ Users \ current_user? '대신에'~'를 값으로 반환한다. – WebDucer

답변

2

일반적으로 Windows 및 * nix에서 사용자 홈 폴더는 환경 변수에 저장됩니다. 이 경우에, 당신은 같은 것을 할 수 있어야한다 :

Task("Default") 
.Does(() => 
{ 
    if(IsRunningOnWindows()) { 
     Information(EnvironmentVariable("HOMEPATH")); 
    } 
    else 
    { 
     Information(EnvironmentVariable("HOME")); 
    } 
}); 

위에서 당신이 원하는 것을 포함 가정하면, 당신은 다음 Directory()에 결과를 전달할 수 있습니다.

UPDATE :

는 다음과 같은 시도 :

Task("Default") 
    .Does(() => 
{ 
    if(IsRunningOnWindows()) { 
     Information("{0}{1}", EnvironmentVariable("HOMEDRIVE"), EnvironmentVariable("HOMEPATH")); 
    } else { 
     Information(EnvironmentVariable("HOME")); 
    } 
}); 
+0

Windows에서 위의 값은'/ Users/current_user'를 반환합니다. 'MakeAbsolute (Directory (pathFromEnv))'도 똑같이 반환합니다. Windows의 Docker는 'c : \ Users \ current_user'를 사용하여 올바른 구문을 사용해야합니다. – WebDucer

+0

확인하려면 Windows 또는 * nix에서 실행하고 있습니까? –

+0

둘 다 (우리는 macOS와 Windows 빌드 에이전트가 있습니다) 실행하고 싶기 때문에 사용자 홈 디렉토리의 절대 경로가 필요합니다. 도커 이미지는 .Net Core 빌드 시스템을 기반으로 한 Linux 기반 이미지입니다. 따라서 소스 코드, 너겟 캐시 및 누겟 구성 (비공개 피드)으로 볼륨을 전달해야합니다. 마지막 두 개는 기본적으로 빌드 에이전트의 사용자 디렉토리 (Windows 및 Unix)에 저장됩니다. – WebDucer