在Xcode服务器上的构建脚本中执行git push OVER HTTPS

时间:2015-07-10 14:53:17

标签: ios xcode git continuous-integration xcode-server

我应该首先提到的是我不能使用ssh。

如果有人可以提供帮助,我会永远感激。

我需要在我的机器人上运行一个后期构建脚本,该脚本会在构建成功时创建一个标记并将其推送到远程。我已尝试将其作为"帖子"在机器人上定义的脚本,作为"构建阶段"在项目构建设置中,以及作为自定义共享方案中的后构建脚本,我用于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询问机器人"请告诉我你是谁"。但是,一旦机器人超过了它,git push就会失败,并带有以下内容:

fatal: could not read Password for 'https://myself@mygitremote.com': Device not configured

任何人都可以提供任何基于HTTPS的建议,告诉我如何解决这个问题吗?

顺便说一句,我在Xcode 6.4和Server 4.1.2上。

感谢。

编辑:我已经看到很多解决方案,最初是通过sudoing进入 _xcsbuildd 的shell。在Xcode Server 4.1中,肯定没有 _xcsbuildd 的主目录,所以你不能" git config --global"任何东西。

1 个答案:

答案 0 :(得分:0)

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

fatal: could not read Username for 'http://...': Device not configured

我的最终解决方案是将凭据存储在_xcsbuildd用户的钥匙串中:

# 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