diff --git a/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-common/src/main/kotlin/com/tencent/devops/schedule/pojo/job/JobCreateRequest.kt b/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-common/src/main/kotlin/com/tencent/devops/schedule/pojo/job/JobCreateRequest.kt index c89115c..0112064 100644 --- a/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-common/src/main/kotlin/com/tencent/devops/schedule/pojo/job/JobCreateRequest.kt +++ b/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-common/src/main/kotlin/com/tencent/devops/schedule/pojo/job/JobCreateRequest.kt @@ -73,4 +73,12 @@ data class JobCreateRequest( * 镜像地址,容器任务需要 * */ val image: String? = null, + /** + * k8s任务容器command + */ + var command: List? = null, + /** + * k8s任务容器cmd + */ + var cmdFileName: String? = null, ) diff --git a/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-common/src/main/kotlin/com/tencent/devops/schedule/pojo/job/JobInfo.kt b/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-common/src/main/kotlin/com/tencent/devops/schedule/pojo/job/JobInfo.kt index 048db81..5c25a6f 100644 --- a/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-common/src/main/kotlin/com/tencent/devops/schedule/pojo/job/JobInfo.kt +++ b/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-common/src/main/kotlin/com/tencent/devops/schedule/pojo/job/JobInfo.kt @@ -106,4 +106,12 @@ data class JobInfo( * 镜像地址 * */ var image: String? = null, + /** + * k8s任务容器command + */ + var command: List? = null, + /** + * k8s任务容器cmd + */ + var cmdFileName: String? = null, ) diff --git a/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-common/src/main/kotlin/com/tencent/devops/schedule/pojo/job/JobUpdateRequest.kt b/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-common/src/main/kotlin/com/tencent/devops/schedule/pojo/job/JobUpdateRequest.kt index 9d53156..7a1e17a 100644 --- a/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-common/src/main/kotlin/com/tencent/devops/schedule/pojo/job/JobUpdateRequest.kt +++ b/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-common/src/main/kotlin/com/tencent/devops/schedule/pojo/job/JobUpdateRequest.kt @@ -73,4 +73,12 @@ data class JobUpdateRequest( * 调度类型 */ val scheduleType: Int? = null, + /** + * k8s任务容器command + */ + var command: List? = null, + /** + * k8s任务容器cmd + */ + var cmdFileName: String? = null, ) diff --git a/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-common/src/main/kotlin/com/tencent/devops/schedule/pojo/trigger/TriggerParam.kt b/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-common/src/main/kotlin/com/tencent/devops/schedule/pojo/trigger/TriggerParam.kt index 654e85e..4bcdbb7 100644 --- a/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-common/src/main/kotlin/com/tencent/devops/schedule/pojo/trigger/TriggerParam.kt +++ b/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-common/src/main/kotlin/com/tencent/devops/schedule/pojo/trigger/TriggerParam.kt @@ -22,4 +22,6 @@ data class TriggerParam( var broadcastTotal: Int = 0, var workerAddress: String? = null, var updateTime: LocalDateTime, + var command: List? = null, + var cmdFileName: String? = null, ) diff --git a/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-model-mongodb/src/main/kotlin/com/tencent/devops/schedule/mongo/model/Conventions.kt b/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-model-mongodb/src/main/kotlin/com/tencent/devops/schedule/mongo/model/Conventions.kt index 249fdb2..06b0107 100644 --- a/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-model-mongodb/src/main/kotlin/com/tencent/devops/schedule/mongo/model/Conventions.kt +++ b/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-model-mongodb/src/main/kotlin/com/tencent/devops/schedule/mongo/model/Conventions.kt @@ -28,6 +28,8 @@ fun TJobInfo.convert(): JobInfo { nextTriggerTime = nextTriggerTime, source = source, image = image, + command = command, + cmdFileName = cmdFileName, ) } diff --git a/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-model-mongodb/src/main/kotlin/com/tencent/devops/schedule/mongo/model/TJobInfo.kt b/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-model-mongodb/src/main/kotlin/com/tencent/devops/schedule/mongo/model/TJobInfo.kt index 675e533..274c525 100644 --- a/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-model-mongodb/src/main/kotlin/com/tencent/devops/schedule/mongo/model/TJobInfo.kt +++ b/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-model-mongodb/src/main/kotlin/com/tencent/devops/schedule/mongo/model/TJobInfo.kt @@ -112,6 +112,14 @@ data class TJobInfo( * 镜像地址 * */ var image: String? = null, + /** + * k8s任务容器command + */ + var command: List? = null, + /** + * k8s任务容器cmd + */ + var cmdFileName: String? = null, ) { companion object { const val NEXT_TRIGGER_TIME_IDX = "nextTriggerTime_idx" diff --git a/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-server/src/main/kotlin/com/tencent/devops/schedule/manager/DefaultJobManager.kt b/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-server/src/main/kotlin/com/tencent/devops/schedule/manager/DefaultJobManager.kt index df58ba4..d6ff77c 100644 --- a/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-server/src/main/kotlin/com/tencent/devops/schedule/manager/DefaultJobManager.kt +++ b/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-server/src/main/kotlin/com/tencent/devops/schedule/manager/DefaultJobManager.kt @@ -120,6 +120,8 @@ open class DefaultJobManager( updateTime = LocalDateTime.now(), source = source, image = finalImage, + command = command, + cmdFileName = cmdFileName, ) // 一次性任务,不主动触发 @@ -192,6 +194,12 @@ open class DefaultJobManager( maxRetryCount?.let { jobInfo.maxRetryCount = it } + command?.let { + jobInfo.command = it + } + cmdFileName?.let { + jobInfo.cmdFileName = it + } jobInfo.updateTime = LocalDateTime.now() jobProvider.updateJob(jobInfo).also { logger.info("update job[${jobInfo.id}] success") diff --git a/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-server/src/main/kotlin/com/tencent/devops/schedule/scheduler/DefaultJobScheduler.kt b/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-server/src/main/kotlin/com/tencent/devops/schedule/scheduler/DefaultJobScheduler.kt index 765efea..d84ed56 100644 --- a/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-server/src/main/kotlin/com/tencent/devops/schedule/scheduler/DefaultJobScheduler.kt +++ b/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-server/src/main/kotlin/com/tencent/devops/schedule/scheduler/DefaultJobScheduler.kt @@ -207,6 +207,8 @@ class DefaultJobScheduler( source = job.source, image = job.image, jobMode = job.jobMode, + command = job.command, + cmdFileName = job.cmdFileName, ) // 3. 选择worker地址 require(group.registryList.isNotEmpty()) { "没有可用的worker地址" } diff --git a/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-worker/src/main/kotlin/com/tencent/devops/schedule/executor/JobContext.kt b/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-worker/src/main/kotlin/com/tencent/devops/schedule/executor/JobContext.kt index 79bef54..6e5af56 100644 --- a/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-worker/src/main/kotlin/com/tencent/devops/schedule/executor/JobContext.kt +++ b/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-worker/src/main/kotlin/com/tencent/devops/schedule/executor/JobContext.kt @@ -44,4 +44,12 @@ data class JobContext( * k8s任务使用的镜像 * */ var image: String?, + /** + * k8s任务容器command + */ + var command: List? = null, + /** + * k8s任务容器cmd + */ + var cmdFileName: String? = null, ) diff --git a/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-worker/src/main/kotlin/com/tencent/devops/schedule/handler/K8sShellHandler.kt b/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-worker/src/main/kotlin/com/tencent/devops/schedule/handler/K8sShellHandler.kt index b185d38..8782b3d 100644 --- a/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-worker/src/main/kotlin/com/tencent/devops/schedule/handler/K8sShellHandler.kt +++ b/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-worker/src/main/kotlin/com/tencent/devops/schedule/handler/K8sShellHandler.kt @@ -45,6 +45,7 @@ class K8sShellHandler( ) : JobHandler { override fun execute(context: JobContext): JobExecutionResult { with(context) { + val cmd = cmdFileName ?: CMD val podName = "schedule-shell-$logId" var createdPod = false val api = CoreV1Api(client) @@ -55,7 +56,7 @@ class K8sShellHandler( metadata { name = configMapName } - data = mapOf(CMD to source) + data = mapOf(cmd to source) } api.createNamespacedConfigMap(namespace, configMapBody, null, null, null, null) logger.info("Created configmap $configMapName") @@ -68,13 +69,13 @@ class K8sShellHandler( containers { name = logId image = context.image - command = listOf(BASH_CMD, CMD) + command = context.command ?: listOf(BASH_CMD, cmd) workingDir = WORK_SPACE setEnv(context) volumeMounts { name = "shell-$logId" mountPath = "$WORK_SPACE/$CMD" - subPath = CMD + subPath = cmd readOnly = true } resources { @@ -96,8 +97,8 @@ class K8sShellHandler( name = configMapName items = listOf( newKeyToPath { - key = CMD - path = CMD + key = cmd + path = cmd }, ) } diff --git a/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-worker/src/main/kotlin/com/tencent/devops/schedule/thread/JobThread.kt b/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-worker/src/main/kotlin/com/tencent/devops/schedule/thread/JobThread.kt index 8024fa9..60e808a 100644 --- a/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-worker/src/main/kotlin/com/tencent/devops/schedule/thread/JobThread.kt +++ b/devops-boot-project/devops-boot-core/devops-schedule/devops-schedule-worker/src/main/kotlin/com/tencent/devops/schedule/thread/JobThread.kt @@ -123,6 +123,8 @@ class JobThread(private val serverRpcClient: ServerRpcClient) : Thread() { source = if (source != null) String(base64Decoder.decode(param.source)) else null, image = if (param.image != null) param.image else null, updateTime = param.updateTime, + command = command, + cmdFileName = cmdFileName, ) } }