tuyoo-devflow 0.1.10 → 0.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/dist/constants/whitelist.d.ts +1 -0
- package/dist/constants/whitelist.js +4 -0
- package/dist/constants/whitelist.js.map +1 -1
- package/dist/core/generator/linuxSystemd.js +3 -0
- package/dist/core/generator/linuxSystemd.js.map +1 -1
- package/dist/core/precheck/network.js +9 -3
- package/dist/core/precheck/network.js.map +1 -1
- package/dist/types.d.ts +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.1.11] - 2026-04-22
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- Linux `start_jenkins_agent.sh` 在加载 `/home/tywork/.bashrc` 前会临时关闭 `set -u`,避免 systemd 启动时因 `/etc/bashrc` 读取未定义变量(如 `BASHRCSOURCED`)而报 `unbound variable`。
|
|
14
|
+
- `agent doctor` 与 `agent install` 的网络白名单检查中,Harbor 现在改为非必选项;不可达时仅提示警告,不再阻塞流程。
|
|
15
|
+
|
|
9
16
|
## [0.1.10] - 2026-04-22
|
|
10
17
|
|
|
11
18
|
### Changed
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import { NetworkTarget } from "../types.js";
|
|
2
2
|
export declare const STATIC_WHITELIST_TARGETS: NetworkTarget[];
|
|
3
|
+
export declare function isBlockingNetworkTarget(target: NetworkTarget): boolean;
|
|
3
4
|
export declare function getWhitelistTargets(jenkinsBaseUrl: string): NetworkTarget[];
|
|
@@ -18,8 +18,12 @@ export const STATIC_WHITELIST_TARGETS = [
|
|
|
18
18
|
name: "Harbor",
|
|
19
19
|
host: "harbor.ops.tuyoops.com",
|
|
20
20
|
port: 443,
|
|
21
|
+
required: false,
|
|
21
22
|
},
|
|
22
23
|
];
|
|
24
|
+
export function isBlockingNetworkTarget(target) {
|
|
25
|
+
return target.required !== false;
|
|
26
|
+
}
|
|
23
27
|
export function getWhitelistTargets(jenkinsBaseUrl) {
|
|
24
28
|
const parsed = new URL(jenkinsBaseUrl);
|
|
25
29
|
const jenkinsHost = parsed.hostname;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whitelist.js","sourceRoot":"","sources":["../../src/constants/whitelist.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,wBAAwB,GAAoB;IACvD;QACE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,GAAG;KACV;IACD;QACE,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,KAAK;KACZ;IACD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,mBAAmB;QACzB,IAAI,EAAE,GAAG;KACV;IACD;QACE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,wBAAwB;QAC9B,IAAI,EAAE,GAAG;
|
|
1
|
+
{"version":3,"file":"whitelist.js","sourceRoot":"","sources":["../../src/constants/whitelist.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,wBAAwB,GAAoB;IACvD;QACE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,GAAG;KACV;IACD;QACE,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,KAAK;KACZ;IACD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,mBAAmB;QACzB,IAAI,EAAE,GAAG;KACV;IACD;QACE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,wBAAwB;QAC9B,IAAI,EAAE,GAAG;QACT,QAAQ,EAAE,KAAK;KAChB;CACF,CAAC;AAEF,MAAM,UAAU,uBAAuB,CAAC,MAAqB;IAC3D,OAAO,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,cAAsB;IACxD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC;IACvC,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC;IACpC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC;IAC7C,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC;IAE3D,OAAO;QACL;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,OAAO;SACd;QACD;YACE,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,KAAK;SACZ;QACD,GAAG,wBAAwB;KAC5B,CAAC;AACJ,CAAC"}
|
|
@@ -12,8 +12,11 @@ export function buildLinuxStartupScript(workDir, javaArgs) {
|
|
|
12
12
|
set -euo pipefail
|
|
13
13
|
|
|
14
14
|
if [ -f /home/tywork/.bashrc ]; then
|
|
15
|
+
# Some system bashrc files read unset guard variables and are not nounset-safe.
|
|
16
|
+
set +u
|
|
15
17
|
# shellcheck disable=SC1091
|
|
16
18
|
source /home/tywork/.bashrc
|
|
19
|
+
set -u
|
|
17
20
|
fi
|
|
18
21
|
|
|
19
22
|
cd ${shellQuote(workDir)}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linuxSystemd.js","sourceRoot":"","sources":["../../../src/core/generator/linuxSystemd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAUvD,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;AAC7C,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAkB;IAC1C,OAAO,QAAQ,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAe,EAAE,QAAkB;IACzE,OAAO
|
|
1
|
+
{"version":3,"file":"linuxSystemd.js","sourceRoot":"","sources":["../../../src/core/generator/linuxSystemd.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import dns from "node:dns/promises";
|
|
2
2
|
import net from "node:net";
|
|
3
|
-
import { getWhitelistTargets } from "../../constants/whitelist.js";
|
|
3
|
+
import { getWhitelistTargets, isBlockingNetworkTarget } from "../../constants/whitelist.js";
|
|
4
4
|
async function resolveTargetAddresses(host) {
|
|
5
5
|
if (net.isIP(host)) {
|
|
6
6
|
return [host];
|
|
@@ -35,15 +35,21 @@ async function checkTcpTarget(target) {
|
|
|
35
35
|
resolvedAddresses,
|
|
36
36
|
});
|
|
37
37
|
};
|
|
38
|
+
const finishFailure = async (detail, hint) => {
|
|
39
|
+
const blocking = isBlockingNetworkTarget(target);
|
|
40
|
+
const status = blocking ? "fail" : "warn";
|
|
41
|
+
const optionalHint = blocking ? hint : `${target.name} 为可选检查项;当前未开通时可先忽略。`;
|
|
42
|
+
await finish(status, detail, optionalHint);
|
|
43
|
+
};
|
|
38
44
|
socket.setTimeout(timeoutMs);
|
|
39
45
|
socket.on("connect", () => {
|
|
40
46
|
void finish("pass", `${target.host}:${target.port} 可访问`);
|
|
41
47
|
});
|
|
42
48
|
socket.on("timeout", () => {
|
|
43
|
-
void
|
|
49
|
+
void finishFailure(`${target.host}:${target.port} 连接超时`, "请确认白名单和网络策略。");
|
|
44
50
|
});
|
|
45
51
|
socket.on("error", (error) => {
|
|
46
|
-
void
|
|
52
|
+
void finishFailure(`${target.host}:${target.port} 连接失败 (${error.message})`, "请确认 DNS、防火墙、代理与白名单。");
|
|
47
53
|
});
|
|
48
54
|
socket.connect(target.port, target.host);
|
|
49
55
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../../src/core/precheck/network.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,mBAAmB,CAAC;AACpC,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../../src/core/precheck/network.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED