void run()

in stages/BuildDockerfileImageHelm.groovy [34:87]


    void run(context) {
        if (!script.fileExists("${context.workDir}/Dockerfile")) {
            script.error "[JENKINS][ERROR] There is no Dockerfile in the root directory of the project ${context.codebase.name}. "
        }

        def resultTag
        script.openshift.withCluster() {
            script.openshift.withProject() {
                script.env.dockerRegistryHost = context.platform.getJsonPathValue("edpcomponent", "docker-registry", ".spec.url")
                if (!script.env.dockerRegistryHost) {
                    script.error("[JENKINS][ERROR] Couldn't get docker registry server")
                }

                script.env.dockerProxyRegistry = context.job.dnsWildcard.startsWith("apps.cicd") ? 'nexus-docker-registry.' + context.job.dnsWildcard + '/' : ''
                script.env.ciProject = (context.job.dnsWildcard ==~ /apps.cicd?.mdtu-ddm.projects.epam.com/ ) ? 'mdtu-ddm-edp-cicd' : context.job.edpName
                def dockerfileString = script.readFile file: "${context.workDir}/Dockerfile"
                dockerfileString = dockerfileString.replaceAll(/FROM (.*)/,"FROM ${script.env.dockerProxyRegistry}" + '\$1')
                script.writeFile(file: "${context.workDir}/Dockerfile", text: dockerfileString)


                def buildconfigName = "${context.codebase.name}-dockerfile-${context.git.branch.replaceAll("[^\\p{L}\\p{Nd}]+", "-")}"
                def outputImagestreamName = "${context.codebase.name}-${context.git.branch.replaceAll("[^\\p{L}\\p{Nd}]+", "-")}"
                def imageRepository = "${script.env.dockerRegistryHost}/${context.job.ciProject}/${outputImagestreamName}"

                context.codebase.imageBuildArgs.push("--name=${buildconfigName}")
                def imageUrl = "${imageRepository}:${context.codebase.isTag}"
                context.codebase.imageBuildArgs.push("--to=${imageUrl}")
                context.codebase.imageBuildArgs.push("--binary=true")
                context.codebase.imageBuildArgs.push("--to-docker=true")
                context.codebase.imageBuildArgs.push("--push-secret=nexus-docker-registry")

                createOrUpdateBuildConfig(context.codebase, buildconfigName, imageUrl)

                script.dir(context.codebase.deployableModuleDir) {
                    if ("${context.workDir}" != "${context.codebase.deployableModuleDir}") {
                        script.sh "cp ${context.workDir}/Dockerfile ${context.codebase.deployableModuleDir}/"
                    }

                    script.sh "tar -cf ${context.codebase.name}.tar *"

                    def buildResult = script.openshift.selector(buildConfigApi, "${buildconfigName}").startBuild(
                            "--from-archive=${context.codebase.name}.tar",
                            "--wait=true")
                    resultTag = buildResult.object().status.output.to.imageDigest
                }
                script.println("[JENKINS][DEBUG] Build config ${context.codebase.name} with result " +
                        "${buildconfigName}:${resultTag} has been completed")

                new CodebaseImageStreams(context, script)
                        .UpdateOrCreateCodebaseImageStream(outputImagestreamName, imageRepository, context.codebase.isTag)

            }
        }
    }