我在Mac上将Jenkins作为CI服务器运行。在具有用户jenkins的典型设置的情况下,它在macOS 10.12上运行良好。
今天,我将macOS升级到10.13(High Sierra)。升级过程完成后,Jenkins无法启动。此外,系统上没有用户詹金斯。所有Jenkins文件都存在,但是在设置->用户和组中没有jenkins用户。如果我尝试在终端中使用jenkins用户,例如,如果我尝试使用chown将文件所有权更改为jenkins,则会得到:
chown: jenkins: illegal user name
我该如何解决?
通过从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