작업을 실행하는 사용자를 찾으려면 Jenkins에서 "스크래치"작업을 만드십시오. 하나의 "Windows 일괄 처리 실행"빌드 단계를 수행하고 일괄 처리 명령의 텍스트로 "설정"을 입력하십시오. 영향을받는 작업이 Windows 슬레이브에서 실행중인 경우이 작업이 동일한 슬레이브에서 실행되는지 확인하십시오. 작업을 실행하십시오. 콘솔에는 데스크탑의 명령 프롬프트 창에 "set"을 입력 한 것과 같은 작업에 대해 알려진 환경 변수 목록이 표시됩니다. 차이점은 맨 아래에, 명령 창에서 "USERDOMAIN"및 "USERNAME"으로 표시된 사용자 이름이 사용자 (로그인 한 사용자)가됩니다. 콘솔 출력에서 Jenkins 작업이 실행되는 사용자 계정이됩니다.
해당 사용자는 실제로 로그인 권한이 없을 수 있습니다. Jenkins가 서비스로 실행중인 경우 명령 창에서 공유를 설정할 수 없습니다. Jenkins 작업은 다른 Windows "세션"에서 실행되며 해당 세션에는 사용자가 로그인 세션에서 만든 공유가 표시되지 않습니다.
매우 안정적인 방법은 사용자 이름 (문자열 매개 변수)과 암호 (암호 매개 변수)에 대한 작업에 매개 변수를 추가하는 것입니다. 해당 빌드 단계 이전에 실행되는 동일한 빌드 단계 또는 'Windows 일괄 처리 실행'단계에서 드라이브에 대한 액세스가 필요하기 전에 "@net use : \ computername \ sharename %%/USER : %%/persistent : no ". (예 : "@net use p : \ COMPUTER \ SHARE % PASSWORD % % USER %/persistent : no"). "@"는 로그에 암호가 표시되지 않도록합니다. (그러나 비밀번호는 작업과 연관되어 있으며 "재 작성 허용"이 활성화 된 경우 Jenkins에서 인코딩됩니다.) 작업을 마쳤 으면 정리하고 ("net use/delete") 드라이브 문자를 해제하지 않고 이전 작업이 실패한 경우를 대비하여 연결하기 전에 드라이브 문자를 정리하십시오.
이 시나리오에서는 작업을 실행할 때 공유에 액세스 할 수있는 사용자의 사용자 이름과 암호를 입력해야합니다. 숨겨진 매개 변수는 미리 채워진 값으로 인코딩 할 수 있지만 사용자의 사용자 이름과 비밀번호는 작업 정의로 인코딩되며 숨겨진 비밀번호 매개 변수의 기본값은 Jenkins 구성 파일에서 암호화되지 않습니다.
젠킨스 서비스 세션에서 드라이브 공유를 활성화하는 확실한 방법이 있지만 환경에 따라 현재 직면 한 블록을 지나칠 수있는 '충분 함'이 될 수 있습니다. 나는 Jenkins 관리자가 아니었고 Jenkins 노예에 대한 액세스 권한 (및 관리자 권한 없음)이 매우 제한적인 환경에서 이러한 트릭을 사용했습니다.
고마워요, 당신은 awsome입니다. 저것이 작동하더라도, 나는 암호를 은폐 할 방법이 있는지 생각해 보는가? 아니면이 직업에 대한 새 계정을 만들어야합니까? 내가 뭘해야한다고 제안하는거야? 고마워요. – Davis8988
"암호 숨기기"란 무엇을 의미합니까? 그것이 없어야한다는 것을 보여주는 곳은 어디입니까? 명령 앞에 "@"를 사용하면 DOS는 해당 명령을 표시하지 않습니다. 매개 변수가 "암호"매개 변수이면 해당 작업의 실행 값이 암호화되어야합니다. 다른 곳에서 보시겠습니까? –
환경을 덤프하는 경우 (일반적으로하는 일) "set | findstr -v (PASSWORD_PARAMETER_NAME)"(예 : "set | findstr -v PASSWORD")를 사용하여 암호를 제거 할 수 있습니다. –