Ios 在Xcode服务器上的构建脚本中通过HTTPS执行git推送

Ios 在Xcode服务器上的构建脚本中通过HTTPS执行git推送,ios,xcode,git,continuous-integration,xcode-server,Ios,Xcode,Git,Continuous Integration,Xcode Server,我应该提到的第一件事是,我不能使用ssh 如果有人能帮上忙,我将永远感激 我需要在我的机器人上运行一个构建后脚本,该脚本创建一个标记,并在构建成功后将其推送到远程。我曾尝试将其作为bot上定义的后期脚本、项目构建设置中的构建阶段以及用于CI的自定义共享方案中的后期构建脚本来运行。脚本如下所示: if [ -z "$PROJECT_DIR" ]; then echo "No project dir variable" else cd $PROJECT_DIR; echo "

我应该提到的第一件事是,我不能使用ssh

如果有人能帮上忙,我将永远感激

我需要在我的机器人上运行一个构建后脚本,该脚本创建一个标记,并在构建成功后将其推送到远程。我曾尝试将其作为bot上定义的后期脚本、项目构建设置中的构建阶段以及用于CI的自定义共享方案中的后期构建脚本来运行。脚本如下所示:

if [ -z "$PROJECT_DIR" ]; then
    echo "No project dir variable"
else
    cd $PROJECT_DIR;
    echo "PROJECT_DIR is $PROJECT_DIR";
    echo "Directory is $(pwd)";

    git config user.email "myself@mycompany.com"
    git config user.name "myself"
    CURRENTTAG=$(git describe --abbrev=0 --tags);
    echo "CURRENTTAG is $CURRENTTAG";
    CURRENTTAG_PRE=`echo $CURRENTTAG | awk -F "_" '{print $1}'`;
    echo "CURRENTTAG_PRE is $CURRENTTAG_PRE";
    CURRENTTAG_POST=`echo $CURRENTTAG | awk -F "_" '{print $2}'`;
    echo "CURRENTTAG_POST is $CURRENTTAG_POST";

    if [ -z "$CURRENTTAG_POST" ]; then
        echo "catastrophic failure"
        exit 0
    else
        CURRENTTAG_POST=$(($CURRENTTAG_POST + 1));
        SPACE="_";
        NEW_TAG=$CURRENTTAG_PRE$SPACE$CURRENTTAG_POST;
        echo "NEW_TAG is $NEW_TAG";
        git tag -a $NEW_TAG -m "$NEW_TAG";
        git push origin "$NEW_TAG"

        echo "New tag $(git describe --abbrev=0 --tags) created"
    fi
fi
所以,git config命令的黑客就是为了阻止git询问机器人,请告诉我你是谁。但是,一旦bot通过了该操作,git推送就会失败,原因如下:

fatal: could not read Password for 'https://myself@mygitremote.com': Device not configured
有没有人能提供一些基于HTTPS的建议,告诉我如何克服这个问题

顺便说一句,我使用的是Xcode 6.4和服务器4.1.2

谢谢


编辑:我已经看到了很多解决方案,它们都是从sudo到xcsbuildd的shell中开始的。在Xcode Server 4.1中,肯定没有用于_xcsbuildd的主目录,因此您无法对git config-global进行任何操作。

我遇到了类似的问题。我试图将更改从bot的预触发脚本推送到git远程存储库,每次我收到:

fatal: could not read Username for 'http://...': Device not configured
我的最终解决方案是在密钥链中为xcsbuildd用户存储凭据:


您是否在.netrc文件或其他可以读取git push的地方输入了密码?问题在于,运行脚本的_xcsbuildd用户实际上没有$HOME或shell。我试着给它一个外壳,它开始在其他地方打碎其他东西。这使得任何基于用户级设置的解决方案都不可能实现。注意,如果您想拥有每个存储库的凭据,则不需要运行git config-global。如果您运行git config,那么它将仅将更改应用于该存储库。
# login as a _xcsbuildd user
sudo -u _xcsbuildd /bin/bash
# store credentials in the default osx keychain
git credential-osxkeychain store https://github.com
# copy added credentials from `login` keychain to `System` keychain