Skip to content

Commit 86a9a3d

Browse files
committed
1.修复日志乱码问题;
2.timeout参数校验; 3.跳转链接优化。
1 parent 6dadfe5 commit 86a9a3d

File tree

4 files changed

+31
-19
lines changed

4 files changed

+31
-19
lines changed

src/main/kotlin/com/tencent/bk/devops/atom/task/JobScriptAtom.kt

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,9 @@ import com.tencent.bk.devops.atom.task.utils.JobUtils
1212
import com.tencent.bk.devops.atom.task.utils.Keys
1313
import com.tencent.bk.devops.atom.utils.json.JsonUtil
1414
import org.apache.commons.lang3.StringUtils
15-
import java.nio.charset.Charset
16-
import java.util.Base64
1715
import org.slf4j.LoggerFactory
18-
import java.lang.IndexOutOfBoundsException
16+
import java.nio.charset.Charset
17+
import java.util.*
1918

2019
@AtomService(paramClass = InnerJobParam::class)
2120
class JobScriptAtom : TaskAtom<InnerJobParam> {
@@ -54,6 +53,13 @@ class JobScriptAtom : TaskAtom<InnerJobParam> {
5453
fastExecuteScript(param, result)
5554
}
5655

56+
private fun printLink(bizId: String, taskInstanceId: Long, jobHost: String) {
57+
logger.info("对接蓝鲸企业版3.x/社区版6.x中的作业平台请点击以下链接查看详情:")
58+
logger.info(JobUtils.getV3DetailUrl(bizId, taskInstanceId, jobHost))
59+
logger.info("对接蓝鲸企业版2.x/社区版5.x中的作业平台请点击以下链接查看详情:")
60+
logger.info(JobUtils.getV2DetailUrl(bizId, taskInstanceId, jobHost))
61+
}
62+
5763
private fun fastExecuteScript(
5864
param: InnerJobParam,
5965
result: AtomResult
@@ -63,6 +69,11 @@ class JobScriptAtom : TaskAtom<InnerJobParam> {
6369
val taskId = param.pipelineTaskId
6470
val targetAccount = param.account
6571
val timeout = 0L + (param.timeout ?: 1000)
72+
if (timeout < 60L || timeout > 72000) {
73+
result.status = Status.failure
74+
result.message = "timeout参数不合法,必须为60-72000之间的整数"
75+
return
76+
}
6677
var operator = param.pipelineStartUserName
6778
var scriptContent = when (param.scriptType) {
6879
"1" -> {
@@ -139,7 +150,7 @@ class JobScriptAtom : TaskAtom<InnerJobParam> {
139150

140151
try {
141152
val taskInstanceId = JobUtils.fastExecuteScript(fastExecuteScriptReq, this.esbApiHost)
142-
logger.info(JobUtils.getDetailUrl(bizId, taskInstanceId, jobHost))
153+
printLink(bizId, taskInstanceId, jobHost)
143154
val startTime = System.currentTimeMillis()
144155
checkStatus(
145156
bizId = bizId,
@@ -148,11 +159,9 @@ class JobScriptAtom : TaskAtom<InnerJobParam> {
148159
taskInstanceId = taskInstanceId,
149160
operator = operator,
150161
buildId = buildId,
151-
jobHost = esbApiHost,
152162
result = result
153163
)
154-
155-
logger.info(JobUtils.getDetailUrl(bizId, taskInstanceId, jobHost))
164+
printLink(bizId, taskInstanceId, jobHost)
156165
} catch (e: Exception) {
157166
logger.error("Job API invoke failed", e)
158167
result.status = Status.failure
@@ -175,16 +184,15 @@ class JobScriptAtom : TaskAtom<InnerJobParam> {
175184
operator: String,
176185
buildId: String,
177186
taskId: String,
178-
jobHost: String,
179187
result: AtomResult
180188
) {
181189

182190
var needContinue = true
183191

184192
while (needContinue) {
185193
Thread.sleep(2000)
186-
val taskResult = JobUtils.getTaskResult(appId, appSecret, bizId, taskInstanceId, operator, jobHost)
187-
logger.info(JobUtils.getDetailUrl(bizId, taskInstanceId, jobHost))
194+
val taskResult = JobUtils.getTaskResult(appId, appSecret, bizId, taskInstanceId, operator, esbApiHost)
195+
printLink(bizId, taskInstanceId, jobHost)
188196
if (taskResult.isFinish) {
189197
needContinue = false
190198
if (taskResult.success) {

src/main/kotlin/com/tencent/bk/devops/atom/task/service/JobResourceApi.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,13 @@ class JobResourceApi {
3939
bizId: String,
4040
taskInstanceId: Long,
4141
operator: String,
42-
jobHost: String
42+
esbHost: String
4343
): TaskResult {
4444
try {
4545
val url =
46-
"$jobHost/api/c/compapi/v2/job/get_job_instance_status/?bk_app_code=$appId&bk_app_secret=$appSecret&bk_username=$operator&bk_biz_id=$bizId&job_instance_id=$taskInstanceId"
46+
"$esbHost/api/c/compapi/v2/job/get_job_instance_status/?bk_app_code=$appId&bk_app_secret=$appSecret&bk_username=$operator&bk_biz_id=$bizId&job_instance_id=$taskInstanceId"
4747
val urlWithoutSecret =
48-
"$jobHost/api/c/compapi/v2/job/get_job_instance_status/?bk_app_code=$appId&bk_app_secret=***&bk_username=$operator&bk_biz_id=$bizId&job_instance_id=$taskInstanceId"
48+
"$esbHost/api/c/compapi/v2/job/get_job_instance_status/?bk_app_code=$appId&bk_app_secret=***&bk_username=$operator&bk_biz_id=$bizId&job_instance_id=$taskInstanceId"
4949
logger.info("Get request url: $urlWithoutSecret")
5050
OkhttpUtils.doGet(url).use { resp ->
5151
val responseStr = resp.body()!!.string()

src/main/kotlin/com/tencent/bk/devops/atom/task/utils/JobUtils.kt

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,16 @@ object JobUtils {
1717
bizId: String,
1818
taskInstanceId: Long,
1919
operator: String,
20-
jobHost: String
20+
esbHost: String
2121
): JobResourceApi.TaskResult {
22-
return jobResourceApi.getTaskResult(appId, appSecret, bizId, taskInstanceId, operator, jobHost)
22+
return jobResourceApi.getTaskResult(appId, appSecret, bizId, taskInstanceId, operator, esbHost)
2323
}
2424

25-
fun getDetailUrl(appId: String, taskInstanceId: Long, jobHost: String): String {
26-
return "<a target='_blank' href='$jobHost/?taskInstanceList&appId=$appId#taskInstanceId=$taskInstanceId'>到作业平台V2查看详情(Go to JobV2 for Detail, click this if using BlueKing5.x)</a> <a target='_blank' href='$jobHost/api_execute/$taskInstanceId'>到作业平台V3查看详情(Go to JobV3 for Detail, click this if using BlueKing6.x)</a>"
25+
fun getV2DetailUrl(appId: String, taskInstanceId: Long, jobHost: String): String {
26+
return "JobV2: <a target='_blank' href='$jobHost/?taskInstanceList&appId=$appId#taskInstanceId=$taskInstanceId'>到作业平台V2查看详情(Go to JobV2 for Detail, click this if using BlueKing5.x)</a>";
27+
}
28+
29+
fun getV3DetailUrl(appId: String, taskInstanceId: Long, jobHost: String): String {
30+
return "JobV3: <a target='_blank' href='$jobHost/api_execute/$taskInstanceId'>到作业平台V3查看详情(Go to JobV3 for Detail, click this if using BlueKing6.x)</a>"
2731
}
2832
}

task.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"language": "java",
66
"minimumVersion": "1.8",
77
"demands": [],
8-
"target": "$bk_java_path -jar executeJobScript-jar-with-dependencies.jar -Dfile.encoding=utf8"
8+
"target": "$bk_java_path -Dfile.encoding=utf8 -jar executeJobScript-jar-with-dependencies.jar"
99
},
1010
"input": {
1111
"bizId": {
@@ -175,7 +175,7 @@
175175
"required": false
176176
},
177177
"timeout": {
178-
"label": "超时时间(Script Timeout)",
178+
"label": "超时时间(Timeout,单位为秒,范围60-72000)",
179179
"default": "1000",
180180
"type": "vuex-input",
181181
"desc": "请输入脚本执行超时时间,单位为秒,范围60-72000,默认1000(Please input script timeout, time unit:second, range:60-72000, default:1000)",

0 commit comments

Comments
 (0)