2017-11-02 4 views
4

Jenkins를 Mac에서 CI 서버로 실행하고 있습니다. 그것은 사용자 젠킨스와 함께 전형적인 설정으로 macOS 10.12에서 잘 돌아가고있었습니다.Jenkins 사용자가 macOS 업데이트를 마친 경우

오늘 MacOS를 10.13 (High Sierra)으로 업그레이드했습니다. Jenkins는 업그레이드 프로세스가 완료된 후 시작할 수 없습니다. 또한 시스템에 사용자 젠킨스가 없었습니다. 모든 Jenkins 파일이 있지만 설정 -> 사용자 & 그룹에 jenkins 사용자가 없습니다. 내가 chown 명령으로 젠킨스에 파일 소유권을 변경하려고하면 예를 들어, 터미널에서 젠킨스 사용자를 사용하려고하면 내가 얻을 :

chown: jenkins: illegal user name 

가 어떻게이 문제를 해결합니까?

+1

나는 당신과 똑같은 문제를 겪고 있습니다. 그걸 우회 할 수 있었 니? 감사 – Hetote

답변

5

저는 젠킨스 설치에서 스크립트 명령을 추출하여 jenkins 사용자를 다시 생성 할 수있었습니다. 나는 특히이 스크립트를 실행 : 여전히

JENKINS_HOMEDIR="/Users/Shared/Jenkins" 
DEFAULTS_PLIST="/Library/Preferences/org.jenkins-ci.plist" 

if dscl . -list /Users/jenkins; then 
    echo 'jenkins user already exists, attempting to change the shell to /bin/bash' 
    # Will fail if UserShell is not /usr/bin/false, but that's ok. 
    # Then we will assume an admin has changed it. 
    dscl . -change /Users/jenkins UserShell /usr/bin/false /bin/bash 
else 
    echo 'No jenkins user found, creating jenkins user and group' 

# Find free uid under 500 
    uid=$(dscl . -list /Users uid | sort -nrk 2 | awk '$2 < 500 {print $2 + 1; exit 0}') 
    if [ $uid -eq 500 ]; then 
     echo 'ERROR: All system uids are in use!' 
     exit 1 
    fi 
    echo "Using uid $uid for jenkins" 

    gid=$uid 
    while dscl -search /Groups gid $gid | grep -q $gid; do 
     echo "gid $gid is not free, trying next" 
     gid=$(($gid + 1)) 
    done 
    echo "Using gid $gid for jenkins" 

    dscl . -create /Groups/jenkins PrimaryGroupID $gid 

    dscl . -create /Users/jenkins UserShell /bin/bash 
    dscl . -create /Users/jenkins Password '*' 
    dscl . -create /Users/jenkins UniqueID $uid 
    dscl . -create /Users/jenkins PrimaryGroupID $gid 
    dscl . -create /Users/jenkins NFSHomeDirectory "$JENKINS_HOMEDIR" 

    dscl . -append /Groups/jenkins GroupMembership jenkins 
fi 

# identify the real default group name for user jenkins 
groupid=`dscl . read /Users/jenkins PrimaryGroupID | awk '{print $2}'` 
gname=`id -n -g $groupid` 

echo "Using jenkins:${gname} as file owner and group for jenkins daemon files" 

find "$JENKINS_HOMEDIR" \(-not -user jenkins -or -not -group ${gname} \) -print0 | xargs -0 chown jenkins:${gname} 

# Add defaults for heap sizing 
arch=$(uname -m) 
if [ $arch = 'x86_64' ]; then 
    defaults write $DEFAULTS_PLIST heapSize 512m 
    defaults write $DEFAULTS_PLIST permGen 512m 
    defaults write $DEFAULTS_PLIST minHeapSize 256m 
    defaults write $DEFAULTS_PLIST minPermGen 256m 
else 
    # i386 
    defaults write $DEFAULTS_PLIST heapSize 128m 
    defaults write $DEFAULTS_PLIST permGen 128m 
    defaults write $DEFAULTS_PLIST minHeapSize 64m 
    defaults write $DEFAULTS_PLIST minPermGen 64m  
fi 

defaults write $DEFAULTS_PLIST httpPort 8080 

# Set tmpdir 
JENKINS_TMPDIR="$JENKINS_HOMEDIR/tmp" 
defaults write $DEFAULTS_PLIST tmpdir $JENKINS_TMPDIR 
mkdir -p $JENKINS_TMPDIR 
chown jenkins:${gname} $JENKINS_TMPDIR 

# Create log directory, which can be written by Jenkins daemon 
mkdir -p /var/log/jenkins 
chown jenkins:${gname} /var/log/jenkins 
3

당신 젠킨스 구성 라이브러리/LaunchDaemons/org.jenkins-ci.plist 아래에 존재하지만 높은 시에라의 OS에 대한 업데이트 후 젠킨스 사용자가 사라지게되었다. 당신이있는 그 후 젠킨스

: 젠킨스, 이름을 :

그래서, 우선은 & 그룹

계정 이름 시스템 환경 설정/사용자에서 수동으로 젠킨스 사용자를 생성해야 이 새로운 사용자에게 젠킨스 구성을 설정하십시오.

  • sudo chown -R jenkins/사용자/공유/젠킨스는
  • sudo는 대한 Chown 젠킨스는/var/log/젠킨스
  • 마지막으로

언로드하고 /Library/LaunchDaemons/org.jenkins-ci.plist 언로드 launchctl 서버를 젠킨스에게

  • sudo는로드
  • 는 sudo launchctl 부하 /Library/LaunchDaemons/org.jenkins-ci.plist는

는 Safari에서 http://localhost:8080에 입력하고 당신은 Y를 볼 수 있습니다 ou 젠킨스 서버