构建管道是否需要内部连接才能运行

时间:2020-05-14 06:38:07

标签: azure-devops

我正在使用Onprimise AzureDevOps。我的服务器中有Intranet,但无法访问Internet。

使用Nugget和Nugget安装程序是否需要Internet才能成功。

3 个答案:

答案 0 :(得分:0)

如果您查看here,则会发现以下代码:

async function getLatestMatchVersionInfo(versionSpec: string): Promise<INuGetVersionInfo> {
    taskLib.debug('Querying versions list');

    let versionsUrl = 'https://dist.nuget.org/tools.json';
    let proxyRequestOptions = {
        proxy: taskLib.getHttpProxyConfiguration(versionsUrl)
    };
    let rest: restm.RestClient = new restm.RestClient('vsts-tasks/NuGetToolInstaller', undefined, undefined, proxyRequestOptions);

    let nugetVersions: INuGetVersionInfo[] = (await rest.get<INuGetVersionInfo[]>(versionsUrl, GetRestClientOptions())).result;
    // x.stage is the string representation of the enum, NuGetReleaseStage.Value = number, NuGetReleaseStage[NuGetReleaseStage.Value] = string, NuGetReleaseStage[x.stage] = number
    let releasedVersions: INuGetVersionInfo[] = nugetVersions.filter(x => x.stage.toString() !== NuGetReleaseStage[NuGetReleaseStage.EarlyAccessPreview]);
    let versionStringsFromDist: string[] = releasedVersions.map(x => x.version);

    let version: string = toolLib.evaluateVersions(versionStringsFromDist, versionSpec);
    if (!version)
    {
        taskLib.error(taskLib.loc("Error_NoVersionWasFoundWhichMatches", versionSpec));
        taskLib.error(taskLib.loc("Info_AvailableVersions", releasedVersions.map(x => x.version).join("; ")));
        throw new Error(taskLib.loc("Error_NuGetToolInstallerFailer", NUGET_TOOL_NAME));
    }

    return releasedVersions.find(x => x.version === version);
}

如果在本地计算机上找不到nuget版本,它基本上会查找nuget版本。我假设所有这些REST调用都将在没有互联网的情况下无法正常工作。因此,如果您不想提供对Internet的访问,则应仅使用代理程序上安装的那些版本。

答案 1 :(得分:0)

与Krzysztof Madej同意,我认为在没有Internet连接的情况下运行构建管道是可行的。从NuGet工具安装程序任务的描述中,我们可以知道:

从互联网或工具获取特定版本的NuGet 缓存,并将其添加到PATH。

enter image description here

因此,您需要确保在本地计算机上安装了所需的nuget版本。

答案 2 :(得分:0)

如果您不使用DevOps服务器中的Feed中的upstream packages,则您的DevOps服务器计算机可能仅位于Intranet网络中。

但是,如果您执行某些需要访问Internet的操作(例如“使用Nuget任务”),则构建代理计算机需要访问Internet。