Skip to content

Commit

Permalink
worker和agent支持java17和java8同步运行 #10586
Browse files Browse the repository at this point in the history
  • Loading branch information
tangruotian committed Aug 22, 2024
1 parent 3e14618 commit 71808af
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 17 deletions.
26 changes: 14 additions & 12 deletions src/agent/agent/src/pkg/job/build.go
Original file line number Diff line number Diff line change
Expand Up @@ -196,18 +196,20 @@ func runBuild(buildInfo *api.ThirdPartyBuildInfo) error {
runUser := config.GAgentConfig.SlaveUser

goEnv := map[string]string{
"DEVOPS_AGENT_VERSION": config.AgentVersion,
"DEVOPS_WORKER_VERSION": third_components.Worker.GetVersion(),
"DEVOPS_PROJECT_ID": buildInfo.ProjectId,
"DEVOPS_BUILD_ID": buildInfo.BuildId,
"DEVOPS_VM_SEQ_ID": buildInfo.VmSeqId,
"DEVOPS_SLAVE_VERSION": third_components.Worker.GetVersion(), //deprecated
"PROJECT_ID": buildInfo.ProjectId, //deprecated
"BUILD_ID": buildInfo.BuildId, //deprecated
"VM_SEQ_ID": buildInfo.VmSeqId, //deprecated
"DEVOPS_FILE_GATEWAY": config.GAgentConfig.FileGateway,
"DEVOPS_GATEWAY": config.GetGateWay(),
"BK_CI_LOCALE_LANGUAGE": config.GAgentConfig.Language,
"DEVOPS_AGENT_VERSION": config.AgentVersion,
"DEVOPS_WORKER_VERSION": third_components.Worker.GetVersion(),
"DEVOPS_PROJECT_ID": buildInfo.ProjectId,
"DEVOPS_BUILD_ID": buildInfo.BuildId,
"DEVOPS_VM_SEQ_ID": buildInfo.VmSeqId,
"DEVOPS_SLAVE_VERSION": third_components.Worker.GetVersion(), //deprecated
"PROJECT_ID": buildInfo.ProjectId, //deprecated
"BUILD_ID": buildInfo.BuildId, //deprecated
"VM_SEQ_ID": buildInfo.VmSeqId, //deprecated
"DEVOPS_FILE_GATEWAY": config.GAgentConfig.FileGateway,
"DEVOPS_GATEWAY": config.GetGateWay(),
"BK_CI_LOCALE_LANGUAGE": config.GAgentConfig.Language,
"DEVOPS_AGENT_JDK_8_PATH": third_components.Jdk.Jdk8.GetJavaOrNull(),
"DEVOPS_AGENT_JDK_17_PATH": third_components.Jdk.Jdk17.GetJavaOrNull(),
}
if config.GApiEnvVars != nil {
config.GApiEnvVars.RangeDo(func(k, v string) bool {
Expand Down
14 changes: 11 additions & 3 deletions src/agent/agent/src/third_components/jdk.go
Original file line number Diff line number Diff line change
Expand Up @@ -257,11 +257,19 @@ func (j *JdkVersionType) GetJava() string {
}
}

func (j *JdkVersionType) GetJavaOrNull() string {
path := j.GetJava()
if _, err := os.Stat(path); err != nil && !os.IsExist(err) {
logs.WithError(err).Warnf("jdk %d stat %s error", j.vNum, path)
return ""
}
return path
}

// GetJavaLatest 获取本地java路径,默认使用最新的,没有时使用旧的
func GetJavaLatest() string {
jdk17path := Jdk.Jdk17.GetJava()
if _, err := os.Stat(jdk17path); err != nil {
logs.WithError(err).Warnf("jdk17 stat %s error", jdk17path)
jdk17path := Jdk.Jdk17.GetJavaOrNull()
if jdk17path == "" {
return Jdk.Jdk8.GetJava()
}
return jdk17path
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,8 @@ object AgentEnv {
const val BK_TAG = "devops_bk_tag"
const val PUBLIC_HOST_MAX_FILE_CACHE_SIZE = "devops.public.host.maxFileCacheSize"
const val THIRD_HOST_MAX_FILE_CACHE_SIZE = "devops.public.third.maxFileCacheSize"
const val AGENT_JDK_8_PATH = "DEVOPS_AGENT_JDK_8_PATH"
const val AGENT_JDK_17_PATH = "DEVOPS_AGENT_JDK_17_PATH"

private var projectId: String? = null
private var agentId: String? = null
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -258,13 +258,31 @@ open class MarketAtomTask : ITask() {
writeSdkEnv(atomTmpSpace, buildTask, buildVariables)
writeParamEnv(atomCode, atomTmpSpace, workspace, buildTask, buildVariables)

// 根据环境变量区分 java 版本
// val jdk17Path = System.getenv(AgentEnv.AGENT_JDK_17_PATH)
val jdk8Path = System.getenv(AgentEnv.AGENT_JDK_8_PATH)
val (runtimeJdkVersion, runtimeJdkPath) = getJavaFile()
// TODO: 获取插件指定的 JDK版本,
// 这里默认使用的是 8,如果用户没有 8 的路径,那么打印日志提示并使用worker的jdk版本执行
val atomJdkVersion = 8
var javaPath = runtimeJdkPath
if (atomJdkVersion != runtimeJdkVersion) {
if (jdk8Path.isNullOrBlank()) {
LoggerService.addErrorLine(
"plugin need jdk version 8 but not found, use worker jdk version $runtimeJdkVersion"
)
} else {
javaPath = jdk8Path
}
}

// 环境变量 = 所有插件变量 + Worker端执行插件依赖的预置变量
val runtimeVariables = variables.plus(
mapOf(
DIR_ENV to atomTmpSpace.absolutePath,
INPUT_ENV to inputFile,
OUTPUT_ENV to outputFile,
JAVA_PATH_ENV to getJavaFile().absolutePath
JAVA_PATH_ENV to javaPath
)
).toMutableMap()

Expand Down Expand Up @@ -1069,7 +1087,15 @@ open class MarketAtomTask : ITask() {
}
}

private fun getJavaFile() = File(System.getProperty("java.home"), "/bin/java")
private fun getJavaFile(): Pair<Int, String> {
val version = System.getProperty("java.version")
val versionNum = if (version.startsWith("17.")) {
17
} else {
8
}
return Pair(versionNum, File(System.getProperty("java.home"), "/bin/java").absolutePath)
}

private fun getContainerVariables(
buildTask: BuildTask,
Expand Down

0 comments on commit 71808af

Please sign in to comment.