@4cloudguru/pipeline-task-core

中文文档
0.9.3发布于 2026/09/09Apache-2.0TypeScriptESM + CJS零依赖构建来源已验证近 30 天下载 4330

为Azure管道任务扩展而共享的HTTP,再试,相入和红化原始.

中文使用文档
文档目录7 节
  1. 为什么会这样
  2. B. 影响建筑物的制约因素
  3. 入境点
  4. 代理支持
  5. 具有证书的运输
  6. 为什么不是 fetch
  7. 发展

管道任务核心

@4cloudguru/pipeline-task-core ——共享,版本的安全原始(HTTP客户端,再试, Egreat) 每个 Azure DevOps 管道任务所消耗的允许列表、 URL 秘密编辑、 代理配置 破产财产中的扩展 :

状态:脚手架. 工具链、CI和治理已经到位,一个原始的 (单位:千美元)parseRetryAfterMs)是用来证明建设结束到结束的. 其余模块库存 是第0阶段的工作。 计划是建立在 文献/倡议/倡议-1-共享-任务核心. md 并且既包括这个套件,也包括推动它的新扩展.

为什么会这样

Terraform 和 Packer 扩展 各自携带相同的 HTTP/ retry/ asset 复制件 原始资料——分别为33个档案和8个档案——按照出处评论公约加以保存 而不是编译器。 公约只检查了标记 已存在,而不是他们的主张 真实的,所以状态 传言腐烂 而CI保持绿色。 本套件以下列案文取代公约: 依赖性.

B. 影响建筑物的制约因素

故意与 cloud-suite-ui,这是一个浏览器/反应包:

约束数值为什么
模块格式cJS + 无害环境管理ADO 任务为 commonJS 并使用 import tl = require(...)CI说: require() 决定.
节点层20国每个任务都宣布 Node20_1 没有节点24跑道的特工的后退处理器.
运行时间依赖关系无openpgp 是一个 选项对等点,只能通过 ./gpg 子路径.
书记官处公共 npmjs,带出处任何消费者都无需安装标志 --provenance 发布可核查的软件包 + 承诺 + 工作流程链接.

入境点

import { parseRetryAfterMs } from '@4cloudguru/pipeline-task-core'
import type { VerifyDetached } from '@4cloudguru/pipeline-task-core/gpg'

./gpg 任务是分开的,所以从不验证发布签名不销售 openpgp 进入 .vsix它故意载运 没有签名密钥 - 呼叫者通过自己的装甲钥匙并保持 他们自己的密钥新鲜度检查, 因为信任根属于依赖它的数据库.

代理支持

resolveProxy 读取 Azure DevOps 代理的配置. resolveEnvProxy 读取 HTTPS_PROXY 编号 : HTTP_PROXY 编号 : NO_PROXY a GitHub 自行托管的跑步器集—— 两者均 拼写, 小写取胜 —— 此节点的 fetch 光荣自在,为一无所取. 也没有 构建调度器 : undici 继续依赖消费者.

import { ProxyAgent } from 'undici'
import { createHttpClient, resolveEnvProxy } from '@4cloudguru/pipeline-task-core'

const client = createHttpClient({
  // Called for every attempt AND every redirect hop, with the URL about to be
  // issued — the answer depends on the destination, so a chain that redirects
  // off the origin has to be resolved again.
  fetchOptions: (url) => {
    const proxy = resolveEnvProxy(url)
    if (!proxy) return {}
    proxy.secrets.forEach((secret) => core.setSecret(secret)) // credentials in the URL are secrets
    return { dispatcher: new ProxyAgent(proxy.proxyUrl) } as RequestInit
  },
})

套接字带请求的代理更改, 绝不允许选择哪个目标 . assertEgressHostAllowed 仍然运行与 目标 东道主——初始和每个 重定向 hop —— 而它的主题绝不是代理: CONNECT 隧道到未经授权的主机仍然 未经授权的入侵.

具有证书的运输

createHttpClient 是用来下载公共文物的 fetch。 。 。 . httpsRequest 是另一个 运输:生 node:https,对于带有无记名标志、API键或基本 证书。 因此,其拒绝措辞是: 拒绝发送证书 超过一个非https URL 而不是拒绝取到一个 .

createProxyTunnelAgent 是原始https对应的 resolveProxy数字 : node:https 荣誉无 代理设置, 除非交出 agent,因此它会构建一个打开 HTTP CONNECT 隧道和 将其升级为 TLS. registerSecret 实值 所需经费,不是可选的 —— 衍生基数64 Basic 证明是一个字节序列 呼叫者从来不会构造 所以永远也不会想掩盖.

import { createProxyTunnelAgent, httpsRequest, truncateBody } from '@4cloudguru/pipeline-task-core'

const { status, body } = await httpsRequest({
  method: 'POST',
  url: new URL(registryUrl), // parsed by the caller, which owns the "bad URL" message
  headers: { Authorization: `Bearer ${apiKey}` },
  body: Buffer.from(JSON.stringify(payload), 'utf8'),
  agent: createProxyTunnelAgent(tl.getHttpProxyConfiguration(), {
    tunnelTimeoutMs: DEFAULT_REQUEST_TIMEOUT_MS,
    registerSecret: (secret) => tl.setSecret(secret),
  }),
})
if (status >= 400) throw new Error(`Publish failed: ${truncateBody(body)}`)

为什么不是 fetch

有两个独立的原因, 两者仍然坚持:

  • undici 留下来. 这个软件包没有运行时间依赖性,也没有增长;消费者 针 undici 目前为7.x,因为8号断裂 与节点24捆.
  • 消费者嘲笑 nock 并注入一个 agent。 。 。 . fetch 没有 agent 选项,所以 一个端口会静静地放下代理-代理支持——上面的地道——以及驱动一个 请求通过一个真正的 CONNECT 代理.

一个状态被恢复,从不放弃: 打电话者对一个非-2xx的含义有分歧,所以决定继续 与他们. truncateBody 是限制远程机构选择工作日志的绑定值 失败占上风; truncateForLog 是更强大的帮助者(它也会剥去 C0 字符 并且是新来电者应该开始的地方.

发展

npm ci
npm run typecheck
npm test
npm run build

承诺遵循常规承诺(强制使用公关名称);请通过释放削减释放.

版本与发布记录

@4cloudguru/pipeline-task-core 共发布 20 个版本,首次发布于 2026/08/12;过去 12 个月发布了 20 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.9.3latest2026/09/091 个月前
0.9.12026/09/081 个月前
0.9.02026/09/072 个月前
0.8.02026/09/012 个月前
0.7.22026/08/312 个月前
0.7.12026/08/252 个月前

关于 @4cloudguru/pipeline-task-core 的常见问题

@4cloudguru/pipeline-task-core 是什么?

为Azure管道任务扩展而共享的HTTP,再试,相入和红化原始.

如何安装 @4cloudguru/pipeline-task-core?

在项目目录运行 npm install @4cloudguru/pipeline-task-core,或使用 pnpm add / yarn add / bun add。

@4cloudguru/pipeline-task-core 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@4cloudguru/pipeline-task-core 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@4cloudguru/pipeline-task-core 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@4cloudguru/pipeline-task-core 可以商用吗?

@4cloudguru/pipeline-task-core 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@4cloudguru/pipeline-task-core 的下载量有多少?

根据 npm 官方下载统计,@4cloudguru/pipeline-task-core 在 2026/10/05 – 2026/11/03 这 30 天内被下载 4,330 次,日均约 144 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@4cloudguru/pipeline-task-core 还在维护吗?

最新版本 0.9.3 发布于 2026/09/09(1 个月前);至今共发布 20 个版本,其中过去 12 个月发布了 20 个;首次发布于 2026/08/12。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。