in src/VstsDemoBuilder/Services/ExtractorService.cs [1178:1348]
public int GeneralizingGetReleaseDefinitions(ProjectConfigurations appConfig)
{
try
{
BuildandReleaseDefs releaseDefs = new BuildandReleaseDefs(appConfig.ReleaseDefinitionConfig);
List<JObject> releases = releaseDefs.GetReleaseDefs();
string rells = JsonConvert.SerializeObject(releases);
BuildandReleaseDefs agent = new BuildandReleaseDefs(appConfig.AgentQueueConfig);
Dictionary<string, string> variableGroupNameId = GetVariableGroups(appConfig);
Dictionary<string, int> queue = agent.GetQueues();
string templatePath = extractedTemplatePath + appConfig.ReleaseDefinitionConfig.Project;
int releasecount = 1;
if (releases.Count > 0)
{
foreach (JObject rel in releases)
{
var name = rel["name"];
rel["id"] = "";
rel["url"] = "";
rel["_links"] = "{}";
rel["createdBy"] = "{}";
rel["createdOn"] = "";
rel["modifiedBy"] = "{}";
rel["modifiedOn"] = "";
var variableGroup = rel["variableGroups"].HasValues ? rel["variableGroups"].ToArray() : new JToken[0];
if (variableGroup.Length > 0)
{
foreach (var groupId in variableGroup)
{
rel["variableGroups"] = new JArray("$" + variableGroupNameId.Where(x => x.Key == groupId.ToString()).FirstOrDefault().Value + "$");
}
}
else
{
rel["variableGroups"] = new JArray();
}
var env = rel["environments"];
foreach (var e in env)
{
e["badgeUrl"] = "";
var envVariableGroup = e["variableGroups"].HasValues ? e["variableGroups"].ToArray() : new JToken[0];
if (envVariableGroup.Length > 0)
{
foreach (var envgroupId in envVariableGroup)
{
e["variableGroups"] = new JArray("$" + variableGroupNameId.Where(x => x.Key == envgroupId.ToString()).FirstOrDefault().Value + "$");
}
}
else
{
e["variableGroups"] = new JArray();
}
var owner = e["owner"];
owner["id"] = "$OwnerId$";
owner["displayName"] = "$OwnerDisplayName$";
owner["uniqueName"] = "$OwnerUniqueName$";
owner["url"] = "";
owner["_links"] = "{}";
owner["imageUrl"] = "";
owner["descriptor"] = "";
var deployPhases = e["deployPhases"];
if (deployPhases.HasValues)
{
foreach (var dep in deployPhases)
{
var deploymentInput = dep["deploymentInput"];
var queueID = deploymentInput["queueId"];
string queueName = "";
if (queue != null)
{
if (queue.Count > 0)
{
var q = queue.ContainsValue(Convert.ToInt32(queueID));
if (q)
{
var agenetName = queue.Where(x => x.Value.ToString() == queueID.ToString()).FirstOrDefault();
if (agenetName.Key != null)
{
queueName = agenetName.Key.ToString();
}
else
{
queueName = "";
}
}
}
}
if (queueName != "")
{
deploymentInput["queueId"] = "$" + queueName + "$";
}
else
{
deploymentInput["queueId"] = "";
}
var workflow = dep["workflowTasks"];
if (workflow.HasValues)
{
foreach (var flow in workflow)
{
var input = flow["inputs"];
string keyConfig = File.ReadAllText(HostingEnvironment.MapPath("~") + @"\\Templates\EndpointKeyConfig.json");
KeyConfig.Keys keyC = new KeyConfig.Keys();
keyC = JsonConvert.DeserializeObject<KeyConfig.Keys>(keyConfig);
foreach (var key in keyC.keys)
{
string keyVal = input[key] != null ? input[key].ToString() : "";
if (!string.IsNullOrEmpty(keyVal))
{
input[key] = "";
}
}
}
}
}
}
}
var artifact = rel["artifacts"];
if (artifact.HasValues)
{
foreach (var art in artifact)
{
string buildName = art["definitionReference"]["definition"]["name"].ToString();
string type = art["type"].ToString();
if (type.ToLower() == "build")
{
art["sourceId"] = "$ProjectId$:" + "$" + buildName + "-id$";
art["definitionReference"]["definition"]["id"] = "$" + buildName + "-id$";
art["definitionReference"]["project"]["id"] = "$ProjectId$";
art["definitionReference"]["project"]["name"] = "$ProjectName$";
art["definitionReference"]["artifactSourceDefinitionUrl"] = "{}";
}
if (type.ToLower() == "azurecontainerrepository")
{
art["sourceId"] = "$ProjectId$:" + "$" + buildName + "-id$";
art["definitionReference"]["connection"]["id"] = "";
art["definitionReference"]["definition"]["id"] = "";
art["definitionReference"]["definition"]["name"] = "";
art["definitionReference"]["registryurl"]["id"] = "";
art["definitionReference"]["registryurl"]["name"] = "";
art["definitionReference"]["resourcegroup"]["id"] = "";
art["definitionReference"]["resourcegroup"]["name"] = "";
}
}
}
if (!(Directory.Exists(templatePath + "\\ReleaseDefinitions")))
{
Directory.CreateDirectory(templatePath + "\\ReleaseDefinitions");
File.WriteAllText(templatePath + "\\ReleaseDefinitions\\" + name + ".json", JsonConvert.SerializeObject(rel, Formatting.Indented));
}
else
{
File.WriteAllText(templatePath + "\\ReleaseDefinitions\\" + name + ".json", JsonConvert.SerializeObject(rel, Formatting.Indented));
}
releasecount++;
}
}
return releasecount;
}
catch (Exception ex)
{
logger.Info(DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss") + "\t" + ex.Message + "\n" + ex.StackTrace + "\n");
AddMessage(appConfig.ReleaseDefinitionConfig.Id.ErrorId(), ex.Message + Environment.NewLine + ex.StackTrace);
}
return 0;
}