diff --git a/lib/constants.js b/lib/constants.js index 27413ea9..a3cb8c04 100644 --- a/lib/constants.js +++ b/lib/constants.js @@ -1,53 +1,54 @@ -'use strict'; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.getWorkflowAnnotationKeyLabel = exports.getWorkflowAnnotationsJson = exports.workloadTypesWithRolloutStatus = exports.workloadTypes = exports.deploymentTypes = exports.ServiceTypes = exports.DiscoveryAndLoadBalancerResource = exports.KubernetesWorkload = void 0; -class KubernetesWorkload { -} -exports.KubernetesWorkload = KubernetesWorkload; -KubernetesWorkload.pod = 'Pod'; -KubernetesWorkload.replicaset = 'Replicaset'; -KubernetesWorkload.deployment = 'Deployment'; -KubernetesWorkload.statefulSet = 'StatefulSet'; -KubernetesWorkload.daemonSet = 'DaemonSet'; -KubernetesWorkload.job = 'job'; -KubernetesWorkload.cronjob = 'cronjob'; -class DiscoveryAndLoadBalancerResource { -} -exports.DiscoveryAndLoadBalancerResource = DiscoveryAndLoadBalancerResource; -DiscoveryAndLoadBalancerResource.service = 'service'; -DiscoveryAndLoadBalancerResource.ingress = 'ingress'; -class ServiceTypes { -} -exports.ServiceTypes = ServiceTypes; -ServiceTypes.loadBalancer = 'LoadBalancer'; -ServiceTypes.nodePort = 'NodePort'; -ServiceTypes.clusterIP = 'ClusterIP'; -exports.deploymentTypes = ['deployment', 'replicaset', 'daemonset', 'pod', 'statefulset']; -exports.workloadTypes = ['deployment', 'replicaset', 'daemonset', 'pod', 'statefulset', 'job', 'cronjob']; -exports.workloadTypesWithRolloutStatus = ['deployment', 'daemonset', 'statefulset']; -function getWorkflowAnnotationsJson(lastSuccessRunSha, workflowFilePath, filePathConfigs) { - return JSON.stringify(`{` - + `'run': '${process.env.GITHUB_RUN_ID}',` - + `'repository': '${process.env.GITHUB_REPOSITORY}',` - + `'workflow': '${process.env.GITHUB_WORKFLOW}',` - + `'workflowFileName': '${workflowFilePath.replace(".github/workflows/", "")}',` - + `'jobName': '${process.env.GITHUB_JOB}',` - + `'createdBy': '${process.env.GITHUB_ACTOR}',` - + `'runUri': 'https://github.com/${process.env.GITHUB_REPOSITORY}/actions/runs/${process.env.GITHUB_RUN_ID}',` - + `'commit': '${process.env.GITHUB_SHA}',` - + `'lastSuccessRunCommit': '${lastSuccessRunSha}',` - + `'branch': '${process.env.GITHUB_REF}',` - + `'deployTimestamp': '${Date.now()}',` - + `'manifestsPaths': '${filePathConfigs.manifestFilePaths}',` - + `'dockerfilePaths': '${filePathConfigs.buildConfigs}',` - + `'provider': 'GitHub'` - + `}`); -} -exports.getWorkflowAnnotationsJson = getWorkflowAnnotationsJson; -function getWorkflowAnnotationKeyLabel(workflowFilePath) { - const hashKey = require("crypto").createHash("MD5") - .update(`${process.env.GITHUB_REPOSITORY}/${workflowFilePath}`) - .digest("hex"); - return `githubWorkflow_${hashKey}`; -} -exports.getWorkflowAnnotationKeyLabel = getWorkflowAnnotationKeyLabel; +'use strict'; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getWorkflowAnnotationKeyLabel = exports.getWorkflowAnnotationsJson = exports.workloadTypesWithRolloutStatus = exports.workloadTypes = exports.deploymentTypes = exports.ServiceTypes = exports.DiscoveryAndLoadBalancerResource = exports.KubernetesWorkload = void 0; +class KubernetesWorkload { +} +exports.KubernetesWorkload = KubernetesWorkload; +KubernetesWorkload.pod = 'Pod'; +KubernetesWorkload.replicaset = 'Replicaset'; +KubernetesWorkload.deployment = 'Deployment'; +KubernetesWorkload.statefulSet = 'StatefulSet'; +KubernetesWorkload.daemonSet = 'DaemonSet'; +KubernetesWorkload.job = 'job'; +KubernetesWorkload.cronjob = 'cronjob'; +class DiscoveryAndLoadBalancerResource { +} +exports.DiscoveryAndLoadBalancerResource = DiscoveryAndLoadBalancerResource; +DiscoveryAndLoadBalancerResource.service = 'service'; +DiscoveryAndLoadBalancerResource.ingress = 'ingress'; +class ServiceTypes { +} +exports.ServiceTypes = ServiceTypes; +ServiceTypes.loadBalancer = 'LoadBalancer'; +ServiceTypes.nodePort = 'NodePort'; +ServiceTypes.clusterIP = 'ClusterIP'; +exports.deploymentTypes = ['deployment', 'replicaset', 'daemonset', 'pod', 'statefulset']; +exports.workloadTypes = ['deployment', 'replicaset', 'daemonset', 'pod', 'statefulset', 'job', 'cronjob']; +exports.workloadTypesWithRolloutStatus = ['deployment', 'daemonset', 'statefulset']; +function getWorkflowAnnotationsJson(lastSuccessRunSha, workflowFilePath, filePathConfigs) { + return `{` + + `'run': '${process.env.GITHUB_RUN_ID}',` + + `'repository': '${process.env.GITHUB_REPOSITORY}',` + + `'workflow': '${process.env.GITHUB_WORKFLOW}',` + + `'workflowFileName': '${workflowFilePath.replace(".github/workflows/", "")}',` + + `'jobName': '${process.env.GITHUB_JOB}',` + + `'createdBy': '${process.env.GITHUB_ACTOR}',` + + `'runUri': 'https://github.com/${process.env.GITHUB_REPOSITORY}/actions/runs/${process.env.GITHUB_RUN_ID}',` + + `'commit': '${process.env.GITHUB_SHA}',` + + `'lastSuccessRunCommit': '${lastSuccessRunSha}',` + + `'branch': '${process.env.GITHUB_REF}',` + + `'deployTimestamp': '${Date.now()}',` + + `'dockerfilePaths': ${JSON.stringify(filePathConfigs.dockerfilePaths)},` + + `'manifestsPaths': ${JSON.stringify(filePathConfigs.manifestFilePaths)},` + + `'helmChartPaths': ${JSON.stringify(filePathConfigs.helmChartPaths)},` + + `'provider': 'GitHub'` + + `}`; +} +exports.getWorkflowAnnotationsJson = getWorkflowAnnotationsJson; +function getWorkflowAnnotationKeyLabel(workflowFilePath) { + const hashKey = require("crypto").createHash("MD5") + .update(`${process.env.GITHUB_REPOSITORY}/${workflowFilePath}`) + .digest("hex"); + return `githubWorkflow_${hashKey}`; +} +exports.getWorkflowAnnotationKeyLabel = getWorkflowAnnotationKeyLabel; diff --git a/lib/utilities/utility.js b/lib/utilities/utility.js index 85dc21f7..d5f2a961 100644 --- a/lib/utilities/utility.js +++ b/lib/utilities/utility.js @@ -1,219 +1,211 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.getCurrentTime = exports.getRandomInt = exports.sleep = exports.getFilePathsConfigs = exports.annotateChildPods = exports.getWorkflowFilePath = exports.getLastSuccessfulRunSha = exports.checkForErrors = exports.isEqual = exports.getExecutableExtension = void 0; -const os = require("os"); -const core = require("@actions/core"); -const githubClient_1 = require("../githubClient"); -const httpClient_1 = require("./httpClient"); -const exec = require("./exec"); -const inputParams = require("../input-parameters"); -function getExecutableExtension() { - if (os.type().match(/^Win/)) { - return '.exe'; - } - return ''; -} -exports.getExecutableExtension = getExecutableExtension; -function isEqual(str1, str2, ignoreCase) { - if (str1 == null && str2 == null) { - return true; - } - if (str1 == null || str2 == null) { - return false; - } - if (ignoreCase) { - return str1.toUpperCase() === str2.toUpperCase(); - } - else { - return str1 === str2; - } -} -exports.isEqual = isEqual; -function checkForErrors(execResults, warnIfError) { - if (execResults.length !== 0) { - let stderr = ''; - execResults.forEach(result => { - if (result && result.stderr) { - if (result.code !== 0) { - stderr += result.stderr + '\n'; - } - else { - core.warning(result.stderr); - } - } - }); - if (stderr.length > 0) { - if (warnIfError) { - core.warning(stderr.trim()); - } - else { - throw new Error(stderr.trim()); - } - } - } -} -exports.checkForErrors = checkForErrors; -function getLastSuccessfulRunSha(kubectl, namespaceName, annotationKey) { - try { - const result = kubectl.getResource('namespace', namespaceName); - if (result) { - if (result.stderr) { - core.warning(`${result.stderr}`); - return process.env.GITHUB_SHA; - } - else if (result.stdout) { - const annotationsSet = JSON.parse(result.stdout).metadata.annotations; - if (annotationsSet && annotationsSet[annotationKey]) { - return JSON.parse(annotationsSet[annotationKey].replace(/'/g, '"')).commit; - } - else { - return 'NA'; - } - } - } - } - catch (ex) { - core.warning(`Failed to get commits from cluster. ${JSON.stringify(ex)}`); - return ''; - } -} -exports.getLastSuccessfulRunSha = getLastSuccessfulRunSha; -function getWorkflowFilePath(githubToken) { - return __awaiter(this, void 0, void 0, function* () { - let workflowFilePath = process.env.GITHUB_WORKFLOW; - if (!workflowFilePath.startsWith('.github/workflows/')) { - const githubClient = new githubClient_1.GitHubClient(process.env.GITHUB_REPOSITORY, githubToken); - const response = yield githubClient.getWorkflows(); - if (response) { - if (response.statusCode == httpClient_1.StatusCodes.OK - && response.body - && response.body.total_count) { - if (response.body.total_count > 0) { - for (let workflow of response.body.workflows) { - if (process.env.GITHUB_WORKFLOW === workflow.name) { - workflowFilePath = workflow.path; - break; - } - } - } - } - else if (response.statusCode != httpClient_1.StatusCodes.OK) { - core.debug(`An error occured while getting list of workflows on the repo. Statuscode: ${response.statusCode}, StatusMessage: ${response.statusMessage}`); - } - } - else { - core.warning(`Failed to get response from workflow list API`); - } - } - return Promise.resolve(workflowFilePath); - }); -} -exports.getWorkflowFilePath = getWorkflowFilePath; -function annotateChildPods(kubectl, resourceType, resourceName, annotationKeyValStr, allPods) { - const commandExecutionResults = []; - let owner = resourceName; - if (resourceType.toLowerCase().indexOf('deployment') > -1) { - owner = kubectl.getNewReplicaSet(resourceName); - } - if (allPods && allPods.items && allPods.items.length > 0) { - allPods.items.forEach((pod) => { - const owners = pod.metadata.ownerReferences; - if (owners) { - owners.forEach(ownerRef => { - if (ownerRef.name === owner) { - commandExecutionResults.push(kubectl.annotate('pod', pod.metadata.name, annotationKeyValStr)); - } - }); - } - }); - } - return commandExecutionResults; -} -exports.annotateChildPods = annotateChildPods; -function getFilePathsConfigs() { - return __awaiter(this, void 0, void 0, function* () { - let filePathsConfig = {}; - const BUILD_CONFIG_KEY = 'buildConfigs'; - const MANIFEST_PATHS_KEY = 'manifestFilePaths'; - const HELM_CHART_KEY = 'helmChartFilePaths'; - const DOCKERFILE_PATH_LABEL_KEY = 'dockerfile-path'; - const DOCKERFILE_PATH_KEY = 'dockerfilePath'; - const CONTAINER_REG_KEY = 'containerRegistryServer'; - let inputManifestFiles = inputParams.manifests || []; - filePathsConfig[MANIFEST_PATHS_KEY] = JSON.stringify(inputManifestFiles); - let helmChartPaths = process.env.HELM_CHART_PATHS || ''; - filePathsConfig[HELM_CHART_KEY] = helmChartPaths; - //Fetch labels from each image - let imageToBuildConfigMap = {}; - let imageNames = core.getInput('images').split('\n'); - for (const image of imageNames) { - let args = [image]; - let resultObj; - let buildConfigMap = {}; - let containerRegistryName = image.toString().split('/')[0]; - try { - let usrname = process.env.CR_USERNAME || null; - let pwd = process.env.CR_PASSWORD || null; - if (pwd && usrname) { - let loginArgs = [containerRegistryName, '--username', usrname, '--password', pwd]; - yield exec.exec('docker login ', loginArgs, true).then(res => { - if (res.stderr != '' && !res.success) { - throw new Error(`docker login failed with: ${res.stderr.match(/(.*)\s*$/)[0]}`); - } - }); - } - yield exec.exec('docker pull ', args, true).then(res => { - if (res.stderr != '' && !res.success) { - throw new Error(`docker images pull failed with: ${res.stderr.match(/(.*)\s*$/)[0]}`); - } - }); - yield exec.exec('docker inspect --type=image', args, true).then(res => { - if (res.stderr != '' && !res.success) { - throw new Error(`docker inspect call failed with: ${res.stderr.match(/(.*)\s*$/)[0]}`); - } - if (!res.stdout) { - resultObj = JSON.parse(res.stdout); - } - }); - } - catch (ex) { - core.warning(`Failed to get dockerfile paths for image ${image.toString()} | ` + ex); - } - if (!resultObj) { - resultObj = resultObj[0]; - if (!(resultObj.Config) && !(resultObj.Config.Labels) && !(resultObj.Config.Labels[DOCKERFILE_PATH_LABEL_KEY])) { - buildConfigMap[DOCKERFILE_PATH_KEY] = resultObj.Config.Labels[DOCKERFILE_PATH_LABEL_KEY]; - } - //Add CR server name to build config - buildConfigMap[CONTAINER_REG_KEY] = containerRegistryName; - if (!resultObj.Id) { - imageToBuildConfigMap[resultObj.Id] = buildConfigMap; - } - } - } - filePathsConfig[BUILD_CONFIG_KEY] = JSON.stringify(imageToBuildConfigMap); - return Promise.resolve(filePathsConfig); - }); -} -exports.getFilePathsConfigs = getFilePathsConfigs; -function sleep(timeout) { - return new Promise(resolve => setTimeout(resolve, timeout)); -} -exports.sleep = sleep; -function getRandomInt(max) { - return Math.floor(Math.random() * Math.floor(max)); -} -exports.getRandomInt = getRandomInt; -function getCurrentTime() { - return new Date().getTime(); -} -exports.getCurrentTime = getCurrentTime; +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getCurrentTime = exports.getRandomInt = exports.sleep = exports.getFilePathsConfigs = exports.annotateChildPods = exports.getWorkflowFilePath = exports.getLastSuccessfulRunSha = exports.checkForErrors = exports.isEqual = exports.getExecutableExtension = void 0; +const os = require("os"); +const core = require("@actions/core"); +const githubClient_1 = require("../githubClient"); +const httpClient_1 = require("./httpClient"); +const exec = require("./exec"); +const inputParams = require("../input-parameters"); +function getExecutableExtension() { + if (os.type().match(/^Win/)) { + return '.exe'; + } + return ''; +} +exports.getExecutableExtension = getExecutableExtension; +function isEqual(str1, str2, ignoreCase) { + if (str1 == null && str2 == null) { + return true; + } + if (str1 == null || str2 == null) { + return false; + } + if (ignoreCase) { + return str1.toUpperCase() === str2.toUpperCase(); + } + else { + return str1 === str2; + } +} +exports.isEqual = isEqual; +function checkForErrors(execResults, warnIfError) { + if (execResults.length !== 0) { + let stderr = ''; + execResults.forEach(result => { + if (result && result.stderr) { + if (result.code !== 0) { + stderr += result.stderr + '\n'; + } + else { + core.warning(result.stderr); + } + } + }); + if (stderr.length > 0) { + if (warnIfError) { + core.warning(stderr.trim()); + } + else { + throw new Error(stderr.trim()); + } + } + } +} +exports.checkForErrors = checkForErrors; +function getLastSuccessfulRunSha(kubectl, namespaceName, annotationKey) { + try { + const result = kubectl.getResource('namespace', namespaceName); + if (result) { + if (result.stderr) { + core.warning(`${result.stderr}`); + return process.env.GITHUB_SHA; + } + else if (result.stdout) { + const annotationsSet = JSON.parse(result.stdout).metadata.annotations; + if (annotationsSet && annotationsSet[annotationKey]) { + return JSON.parse(annotationsSet[annotationKey].replace(/'/g, '"')).commit; + } + else { + return 'NA'; + } + } + } + } + catch (ex) { + core.warning(`Failed to get commits from cluster. ${JSON.stringify(ex)}`); + return ''; + } +} +exports.getLastSuccessfulRunSha = getLastSuccessfulRunSha; +function getWorkflowFilePath(githubToken) { + return __awaiter(this, void 0, void 0, function* () { + let workflowFilePath = process.env.GITHUB_WORKFLOW; + if (!workflowFilePath.startsWith('.github/workflows/')) { + const githubClient = new githubClient_1.GitHubClient(process.env.GITHUB_REPOSITORY, githubToken); + const response = yield githubClient.getWorkflows(); + if (response) { + if (response.statusCode == httpClient_1.StatusCodes.OK + && response.body + && response.body.total_count) { + if (response.body.total_count > 0) { + for (let workflow of response.body.workflows) { + if (process.env.GITHUB_WORKFLOW === workflow.name) { + workflowFilePath = workflow.path; + break; + } + } + } + } + else if (response.statusCode != httpClient_1.StatusCodes.OK) { + core.debug(`An error occured while getting list of workflows on the repo. Statuscode: ${response.statusCode}, StatusMessage: ${response.statusMessage}`); + } + } + else { + core.warning(`Failed to get response from workflow list API`); + } + } + return Promise.resolve(workflowFilePath); + }); +} +exports.getWorkflowFilePath = getWorkflowFilePath; +function annotateChildPods(kubectl, resourceType, resourceName, annotationKeyValStr, allPods) { + const commandExecutionResults = []; + let owner = resourceName; + if (resourceType.toLowerCase().indexOf('deployment') > -1) { + owner = kubectl.getNewReplicaSet(resourceName); + } + if (allPods && allPods.items && allPods.items.length > 0) { + allPods.items.forEach((pod) => { + const owners = pod.metadata.ownerReferences; + if (owners) { + owners.forEach(ownerRef => { + if (ownerRef.name === owner) { + commandExecutionResults.push(kubectl.annotate('pod', pod.metadata.name, annotationKeyValStr)); + } + }); + } + }); + } + return commandExecutionResults; +} +exports.annotateChildPods = annotateChildPods; +function getFilePathsConfigs() { + return __awaiter(this, void 0, void 0, function* () { + let filePathsConfig = {}; + const MANIFEST_PATHS_KEY = 'manifestFilePaths'; + const HELM_CHART_KEY = 'helmChartFilePaths'; + const DOCKERFILE_PATH_KEY = 'dockerfilePaths'; + const DOCKERFILE_PATH_LABEL_KEY = 'dockerfile-path'; + let inputManifestFiles = inputParams.manifests || []; + filePathsConfig[MANIFEST_PATHS_KEY] = inputManifestFiles; + let helmChartPaths = process.env.HELM_CHART_PATHS || ''; + filePathsConfig[HELM_CHART_KEY] = helmChartPaths; + //Fetch labels from each image + let imageToBuildConfigMap = []; + let imageNames = core.getInput('images').split('\n'); + for (const image of imageNames) { + let args = [image]; + let resultObj; + let containerRegistryName = image; + try { + let usrname = process.env.CR_USERNAME || null; + let pwd = process.env.CR_PASSWORD || null; + if (pwd && usrname) { + let loginArgs = [containerRegistryName, '--username', usrname, '--password', pwd]; + yield exec.exec('docker login ', loginArgs, true).then(res => { + if (res.stderr != '' && !res.success) { + throw new Error(`docker login failed with: ${res.stderr.match(/(.*)\s*$/)[0]}`); + } + }); + } + yield exec.exec('docker pull ', args, true).then(res => { + if (res.stderr != '' && !res.success) { + throw new Error(`docker images pull failed with: ${res.stderr.match(/(.*)\s*$/)[0]}`); + } + }); + yield exec.exec('docker inspect --type=image', args, true).then(res => { + if (res.stderr != '' && !res.success) { + throw new Error(`docker inspect call failed with: ${res.stderr.match(/(.*)\s*$/)[0]}`); + } + if (!res.stdout) { + resultObj = JSON.parse(res.stdout); + } + }); + } + catch (ex) { + core.warning(`Failed to get dockerfile paths for image ${image.toString()} | ` + ex); + } + if (!resultObj) { + resultObj = resultObj[0]; + if (!(resultObj.Config) && !(resultObj.Config.Labels) && !(resultObj.Config.Labels[DOCKERFILE_PATH_LABEL_KEY])) { + imageToBuildConfigMap[image] = resultObj.Config.Labels[DOCKERFILE_PATH_LABEL_KEY]; + } + } + } + filePathsConfig[DOCKERFILE_PATH_KEY] = imageToBuildConfigMap; + return Promise.resolve(filePathsConfig); + }); +} +exports.getFilePathsConfigs = getFilePathsConfigs; +function sleep(timeout) { + return new Promise(resolve => setTimeout(resolve, timeout)); +} +exports.sleep = sleep; +function getRandomInt(max) { + return Math.floor(Math.random() * Math.floor(max)); +} +exports.getRandomInt = getRandomInt; +function getCurrentTime() { + return new Date().getTime(); +} +exports.getCurrentTime = getCurrentTime; diff --git a/src/constants.ts b/src/constants.ts index 836e6fdb..67fd42f0 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -26,7 +26,7 @@ export const workloadTypes: string[] = ['deployment', 'replicaset', 'daemonset', export const workloadTypesWithRolloutStatus: string[] = ['deployment', 'daemonset', 'statefulset']; export function getWorkflowAnnotationsJson(lastSuccessRunSha: string, workflowFilePath: string, filePathConfigs: any): string { - return JSON.stringify(`{` + return `{` + `'run': '${process.env.GITHUB_RUN_ID}',` + `'repository': '${process.env.GITHUB_REPOSITORY}',` + `'workflow': '${process.env.GITHUB_WORKFLOW}',` @@ -38,10 +38,11 @@ export function getWorkflowAnnotationsJson(lastSuccessRunSha: string, workflowFi + `'lastSuccessRunCommit': '${lastSuccessRunSha}',` + `'branch': '${process.env.GITHUB_REF}',` + `'deployTimestamp': '${Date.now()}',` - + `'manifestsPaths': '${filePathConfigs.manifestFilePaths}',` - + `'dockerfilePaths': '${filePathConfigs.buildConfigs}',` + + `'dockerfilePaths': ${JSON.stringify(filePathConfigs.dockerfilePaths)},` + + `'manifestsPaths': ${JSON.stringify(filePathConfigs.manifestFilePaths)},` + + `'helmChartPaths': ${JSON.stringify(filePathConfigs.helmChartPaths)},` + `'provider': 'GitHub'` - + `}`); + + `}`; } export function getWorkflowAnnotationKeyLabel(workflowFilePath: string): string { diff --git a/src/utilities/utility.ts b/src/utilities/utility.ts index 1711b0bd..ca493f8c 100644 --- a/src/utilities/utility.ts +++ b/src/utilities/utility.ts @@ -132,28 +132,25 @@ export function annotateChildPods(kubectl: Kubectl, resourceType: string, resour export async function getFilePathsConfigs(): Promise { let filePathsConfig: any = {}; - const BUILD_CONFIG_KEY = 'buildConfigs'; const MANIFEST_PATHS_KEY = 'manifestFilePaths'; const HELM_CHART_KEY = 'helmChartFilePaths'; + const DOCKERFILE_PATH_KEY = 'dockerfilePaths'; const DOCKERFILE_PATH_LABEL_KEY = 'dockerfile-path'; - const DOCKERFILE_PATH_KEY = 'dockerfilePath'; - const CONTAINER_REG_KEY = 'containerRegistryServer'; let inputManifestFiles = inputParams.manifests || []; - filePathsConfig[MANIFEST_PATHS_KEY] = JSON.stringify(inputManifestFiles); + filePathsConfig[MANIFEST_PATHS_KEY] = inputManifestFiles; let helmChartPaths = process.env.HELM_CHART_PATHS || ''; filePathsConfig[HELM_CHART_KEY] = helmChartPaths; //Fetch labels from each image - let imageToBuildConfigMap: any = {}; + let imageToBuildConfigMap: any = []; let imageNames = core.getInput('images').split('\n'); for(const image of imageNames){ let args: string[] = [image]; let resultObj: any; - let buildConfigMap : any = {}; - let containerRegistryName = image.toString().split('/')[0]; + let containerRegistryName = image; try{ let usrname = process.env.CR_USERNAME || null; @@ -190,20 +187,13 @@ export async function getFilePathsConfigs(): Promise { if(!resultObj){ resultObj = resultObj[0]; - if(!(resultObj.Config) && !(resultObj.Config.Labels) && !(resultObj.Config.Labels[DOCKERFILE_PATH_LABEL_KEY])){ - buildConfigMap[DOCKERFILE_PATH_KEY] = resultObj.Config.Labels[DOCKERFILE_PATH_LABEL_KEY]; - } - - //Add CR server name to build config - buildConfigMap[CONTAINER_REG_KEY] = containerRegistryName; - if(!resultObj.Id){ - imageToBuildConfigMap[resultObj.Id] = buildConfigMap; + imageToBuildConfigMap[image] = resultObj.Config.Labels[DOCKERFILE_PATH_LABEL_KEY]; } } } - filePathsConfig[BUILD_CONFIG_KEY] = JSON.stringify(imageToBuildConfigMap); + filePathsConfig[DOCKERFILE_PATH_KEY] = imageToBuildConfigMap; return Promise.resolve(filePathsConfig); }