当前位置: 首页 > 面试题库 >

Jenkins用户在macOS更新后不见了

相温文
2023-03-14
问题内容

我在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


 类似资料:
  • 问题内容: 我想知道如何更改Jenkins的默认端口8080。使用linux或Windows,只需通过配置文件即可完成。但是Jenkins的Mac配置文件看起来与其他文件完全不同。 当然,启动服务器时可以传递–httpPort参数,但是我想在配置文件中执行此操作。 有没有选择的余地? PS:通过Apache传递Jenkins实例可以解决问题,但是我想更改Jenkins端口。 谢谢! 问题答案: 我

  • 问题内容: 我的本地Windows设备上有一个Jenkins服务器,但我想使它对外界不可见(关于服务器的办公规则)。一种令人满意的工作方式是显而易见的,微妙的方法,它是设置防火墙规则以阻止对其端口的传入访问,但是我认为必须有一个Jenkins设置来阻止它向除本地主机之外的任何人发布其服务。谁能告诉我是否有? 请注意,设置用户凭据不是有效的解决方案,因为服务器可见但未经登录便无法访问,这仍然违反了办

  • php5_module /usr/local/Cellar/php56/5.6.31_7/libexec/apache2/libphp5.so 以下是apache错误日志: [Tue Sep26 23:59:38.600410 2017][mpm_prefork:通知][pid 980]AH00169:捕获SIGTERM,关闭[Tue Sep26 23:59:38.622998 2017][cor

  • 我在Play Store上有一个Android应用程序。我最近更新了它和它的版本。不过,我的应用程序用户- 未获得任何更新通知 在Play Store应用程序上仍然看到 应用程序,而不是 我怎么能改变这个?

  • 我有一个曾经正常工作的AndroidAVD映像。我必须更新我的macOS Big Sierra,更新后AVD映像无法启动。我得到的错误是:avd的模拟器进程被杀死。 我尝试了现在冷启动选项,但也出现了同样的错误。 有没有一种方法可以运行此AVD图像而不丢失我在其上的数据?

  • 问题内容: 我正在使用Groovy脚本控制台在Jenkins上创建和更新作业。使用此处记录的API http://javadoc.jenkins-ci.org/ 我发现了如何通过使用创建工作 但是,如果作业已经存在,则此方法将失败。如何使用新的xml更新现有作业? 更新资料 基于@ogondza的答案,我使用了以下内容来创建然后更新作业 问题答案: 使用AbstractItem#updateByX