Xcode 在选择Jenkins节点之前,如何检查git中文件的值?

Xcode 在选择Jenkins节点之前,如何检查git中文件的值?,xcode,git,jenkins,Xcode,Git,Jenkins,我们的iOS存储库中有一个.xcode版本文件,fastlane使用该文件来确保使用正确的版本来构建项目。不同的分支需要不同版本的Xcode来构建,不同的节点安装了不同版本的Xcode。我们确实在每个节点上安装了多个Xcode,但有时安装新版本的Xcode会破坏旧的安装,这就是为什么我们不一次更新所有Xcode。因此,每个节点都不能构建每个分支,我们需要根据该分支的.xcode版本选择节点 这里有一点鸡毛蒜皮的问题,因为在节点被选中之前,该文件不会被签出。但是,考虑到Jenkins在选择节点和执

我们的iOS存储库中有一个.xcode版本文件,fastlane使用该文件来确保使用正确的版本来构建项目。不同的分支需要不同版本的Xcode来构建,不同的节点安装了不同版本的Xcode。我们确实在每个节点上安装了多个Xcode,但有时安装新版本的Xcode会破坏旧的安装,这就是为什么我们不一次更新所有Xcode。因此,每个节点都不能构建每个分支,我们需要根据该分支的.xcode版本选择节点

这里有一点鸡毛蒜皮的问题,因为在节点被选中之前,该文件不会被签出。但是,考虑到Jenkins在选择节点和执行管道之前正在签出Jenkins文件,这应该不是问题。我不明白为什么在任何文件中都不可能做到这一点


如何从管道中的git检出任意文件,并根据其内容做出任意决定,如节点选择?

一种肮脏的方法是使用版本文件的原始git url在工作区中下载该文件,读取其内容,并在进入管道块之前设置代理/节点

例如:

node {
    withCredentials([usernameColonPassword(credentialsId: 'mylogin', variable: 'USERPASS')]) {
        sh 'curl -u "$USERPASS" https://raw.github.myorg/myrepo/${GIT_BRANCH}/.xcode-version -O .xcode-version'
        def version = readFile('.xcode-version').trim()
        switch(version) {
            case 'x.xx':
                agentLabel = 'agentX';
                break;
            case 'y.yy':
                agentLabel = 'agentY';
                break;
        }
    }
}
pipeline {
    agent {
        label agentLabel
    }
    stages {
    ...
    }
}

你发现成功了吗?很抱歉没有早点跟进。我还没试过,因为有更重要的工作。在所有节点升级之前,这只是一个问题,因此,由于所有节点现在都升级了,所以这暂时不是一个优先事项。这有点粗糙,但看起来应该可以工作。我希望git插件中会有一些简洁的功能。