Changed to Year-Week

Update build pipeline
This commit is contained in:
Mike Phares 2025-02-04 15:49:43 -07:00
parent a343243576
commit 0f23ba19cc
4 changed files with 374 additions and 476 deletions

View File

@ -109,7 +109,7 @@ public class FileRead : Shared.FileRead, IFileRead
results.Item4.Add(_Logistics.FileInfo); results.Item4.Add(_Logistics.FileInfo);
else else
{ {
IProcessData iProcessData = new ProcessData(this, _Logistics, _FileConnectorConfiguration.TargetFileLocation, _URL, results.Item4); IProcessData iProcessData = new ProcessData(this, _Logistics, _Calendar, _FileConnectorConfiguration.TargetFileLocation, _URL, results.Item4);
if (iProcessData.Details.Count == 0) if (iProcessData.Details.Count == 0)
results = new(string.Concat("B) No Data - ", dateTime.Ticks), Array.Empty<Test>(), Array.Empty<JsonElement>(), results.Item4); results = new(string.Concat("B) No Data - ", dateTime.Ticks), Array.Empty<Test>(), Array.Empty<JsonElement>(), results.Item4);
else else

View File

@ -6,8 +6,8 @@ using log4net;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Globalization;
using System.IO; using System.IO;
using System.Linq;
using System.Text.Json; using System.Text.Json;
using System.Text.Json.Serialization; using System.Text.Json.Serialization;
@ -22,7 +22,7 @@ public class ProcessData : IProcessData
private readonly ILog _Log; private readonly ILog _Log;
public ProcessData(IFileRead fileRead, Logistics logistics, string targetFileLocation, string url, List<FileInfo> fileInfoCollection) public ProcessData(IFileRead fileRead, Logistics logistics, Calendar calendar, string targetFileLocation, string url, List<FileInfo> fileInfoCollection)
{ {
if (fileRead.IsEAFHosted) if (fileRead.IsEAFHosted)
{ } { }
@ -31,7 +31,7 @@ public class ProcessData : IProcessData
fileInfoCollection.Clear(); fileInfoCollection.Clear();
_Details = new List<object>(); _Details = new List<object>();
_Log = LogManager.GetLogger(typeof(ProcessData)); _Log = LogManager.GetLogger(typeof(ProcessData));
WriteFiles(fileRead, logistics, targetFileLocation, fileInfoCollection); WriteFiles(fileRead, logistics, calendar, targetFileLocation, fileInfoCollection);
} }
string IProcessData.GetCurrentReactor(IFileRead fileRead, Logistics logistics, Dictionary<string, string> reactors) => string IProcessData.GetCurrentReactor(IFileRead fileRead, Logistics logistics, Dictionary<string, string> reactors) =>
@ -59,97 +59,6 @@ public class ProcessData : IProcessData
return results; return results;
} }
private void WriteFiles(IFileRead fileRead, Logistics logistics, string destinationDirectory, List<FileInfo> fileInfoCollection)
{
bool keepRelations = true;
const string taskWorkItemType = "Task";
string json = File.ReadAllText(logistics.ReportFullPath);
WorkItem[]? workItems = JsonSerializer.Deserialize<WorkItem[]>(json);
if (workItems is null)
throw new Exception(nameof(workItems));
_Details.Add(workItems);
if (!Directory.Exists(destinationDirectory))
_ = Directory.CreateDirectory(destinationDirectory);
ReadOnlyDictionary<int, Record> keyValuePairs = GetWorkItems(workItems, keepRelations);
ReadOnlyCollection<string> bugUserStoryTaskWorkItemTypes = new(new string[] { "Bug", "User Story", "Task" });
ReadOnlyDictionary<int, string> collection = MoveCurrentAndGetExpectedDirectoriesAndFileCopy(taskWorkItemType, destinationDirectory, json, bugUserStoryTaskWorkItemTypes, keyValuePairs);
WriteFiles(fileRead, fileInfoCollection, taskWorkItemType, destinationDirectory, keyValuePairs, collection);
}
private static ReadOnlyDictionary<int, Record> GetWorkItems(WorkItem[] workItems, bool keepRelations)
{
ReadOnlyDictionary<int, Record> results;
Dictionary<int, WorkItem> keyValuePairs = new();
foreach (WorkItem workItem in workItems)
keyValuePairs.Add(workItem.Id, workItem);
results = GetKeyValuePairs(new(keyValuePairs), keepRelations);
return results;
}
private static ReadOnlyDictionary<int, string> MoveCurrentAndGetExpectedDirectoriesAndFileCopy(string taskWorkItemType, string destinationDirectory, string json, ReadOnlyCollection<string> bugUserStoryTaskWorkItemTypes, ReadOnlyDictionary<int, Record> keyValuePairs)
{
ReadOnlyDictionary<int, string> results;
string? directory;
ReadOnlyDictionary<int, string> collection = GetCurrentDirectories(destinationDirectory, bugUserStoryTaskWorkItemTypes);
results = GetExpectedDirectoriesAndFileCopy(taskWorkItemType, destinationDirectory, json, bugUserStoryTaskWorkItemTypes, keyValuePairs);
foreach (KeyValuePair<int, string> keyValuePair in collection)
{
if (!results.TryGetValue(keyValuePair.Key, out directory))
MoveToUnknown(destinationDirectory, keyValuePair.Key, keyValuePair.Value);
else
{
if (keyValuePair.Value == directory)
continue;
else
MoveToNew(destinationDirectory, keyValuePair.Key, keyValuePair.Value, directory);
}
}
return results;
}
private static FileInfo GetFileInfoAndMaybeWriteFile(string directory, WorkItem workItem)
{
FileInfo result;
if (!Directory.Exists(directory))
_ = Directory.CreateDirectory(directory);
string json = JsonSerializer.Serialize(workItem, WorkItemSourceGenerationContext.Default.WorkItem);
string singletonDirectory = Path.Combine(directory, $"{workItem.Id}");
if (Directory.Exists(singletonDirectory))
{
List<string> files = Directory.GetFiles(singletonDirectory, "*", SearchOption.AllDirectories).ToList();
string checkFile = Path.Combine(singletonDirectory, ".json");
if (files.Remove(checkFile))
File.Delete(checkFile);
if (files.Count == 0)
Directory.Delete(singletonDirectory);
}
result = new(Path.Combine(directory, $"{workItem.Id}.json"));
string old = result.Exists ? File.ReadAllText(result.FullName) : string.Empty;
if (old != json)
File.WriteAllText(result.FullName, json);
return result;
}
private static void WriteFiles(IFileRead fileRead, List<FileInfo> fileInfoCollection, string taskWorkItemType, string destinationDirectory, ReadOnlyDictionary<int, Record> keyValuePairs, ReadOnlyDictionary<int, string> collection)
{
string? directory;
FileInfo fileInfo;
WorkItem workItem;
foreach (KeyValuePair<int, Record> keyValuePair in keyValuePairs)
{
workItem = keyValuePair.Value.WorkItem;
if (!collection.TryGetValue(keyValuePair.Key, out directory))
{
if (workItem.WorkItemType != taskWorkItemType || workItem.Parent is not null)
continue;
directory = GetDirectory(destinationDirectory, workItem);
}
fileInfo = GetFileInfoAndMaybeWriteFile(directory, workItem);
if (!fileRead.IsEAFHosted)
fileInfoCollection.Add(fileInfo);
}
}
private static ReadOnlyDictionary<int, Record> GetKeyValuePairs(ReadOnlyDictionary<int, WorkItem> keyValuePairs, bool keepRelations) private static ReadOnlyDictionary<int, Record> GetKeyValuePairs(ReadOnlyDictionary<int, WorkItem> keyValuePairs, bool keepRelations)
{ {
Dictionary<int, Record> results = new(); Dictionary<int, Record> results = new();
@ -183,120 +92,144 @@ public class ProcessData : IProcessData
return new(results); return new(results);
} }
private static ReadOnlyDictionary<int, string> GetCurrentDirectories(string destinationDirectory, ReadOnlyCollection<string> bugUserStoryTaskWorkItemTypes) private static ReadOnlyDictionary<int, Record> GetWorkItems(WorkItem[] workItems, bool keepRelations)
{ {
Dictionary<int, string> results = new(); ReadOnlyDictionary<int, Record> results;
int id; Dictionary<int, WorkItem> keyValuePairs = new();
string idCheck; foreach (WorkItem workItem in workItems)
string? fileName; keyValuePairs.Add(workItem.Id, workItem);
string[] directories; results = GetKeyValuePairs(new(keyValuePairs), keepRelations);
string[] split = new string[] { "-" }; return results;
foreach (string w in bugUserStoryTaskWorkItemTypes)
{
directories = Directory.GetDirectories(destinationDirectory, $"*-{w.Replace(" ", "-")}", SearchOption.AllDirectories);
foreach (string directory in directories)
{
fileName = Path.GetFileName(directory);
if (string.IsNullOrEmpty(fileName))
continue;
idCheck = fileName.Split(split, StringSplitOptions.None)[0];
if (!int.TryParse(idCheck, out id))
continue;
if (!results.ContainsKey(id))
results.Add(id, directory);
else
MoveToDuplicate(destinationDirectory, directory);
}
}
return new(results);
} }
private static void FileCopy(string destinationDirectory, string json, List<string> distinct) private static void WriteFiles(IFileRead fileRead, DirectoryInfo tasksDirectory, Record[] records)
{ {
string old; string old;
string json;
string checkFile; string checkFile;
string checkDirectory; WorkItem workItem;
foreach (string iterationPath in distinct) foreach (Record record in records)
{ {
checkDirectory = Path.Combine(destinationDirectory, iterationPath); workItem = record.WorkItem;
if (!Directory.Exists(checkDirectory)) json = JsonSerializer.Serialize(workItem, WorkItemSourceGenerationContext.Default.WorkItem);
_ = Directory.CreateDirectory(checkDirectory); checkFile = Path.Combine(tasksDirectory.FullName, $"{workItem.Id}.json");
checkFile = Path.Combine(checkDirectory, "[].json");
old = File.Exists(checkFile) ? File.ReadAllText(checkFile) : string.Empty; old = File.Exists(checkFile) ? File.ReadAllText(checkFile) : string.Empty;
if (old != json) if (!fileRead.IsEAFHosted || old == json)
continue;
File.WriteAllText(checkFile, json); File.WriteAllText(checkFile, json);
} }
} }
private static ReadOnlyDictionary<int, string> GetExpectedDirectoriesAndFileCopy(string taskWorkItemType, string destinationDirectory, string json, ReadOnlyCollection<string> bugUserStoryTaskWorkItemTypes, ReadOnlyDictionary<int, Record> keyValuePairs) private static string GetTaskText(string directory) =>
string.Join(Environment.NewLine, new string[]
{ {
Dictionary<int, string> results = new(); "{",
string directory; "\"version\": \"2.0.0\",",
"\"tasks\": [",
"{",
"\"label\": \"File-Folder-Helper AOT s X Day-Helper-2025-02-04\",",
"\"type\": \"shell\",",
"\"command\": \"L:/DevOps/Mesa_FI/File-Folder-Helper/bin/Release/net8.0/win-x64/publish/File-Folder-Helper.exe\",",
"\"args\": [",
"\"s\",",
"\"X\",",
$"\"{directory.Replace('\\', '/')}\",",
"\"Day-Helper-2025-02-04\",",
"],",
"\"problemMatcher\": []",
"}",
"]",
"}",
});
private static void WriteFiles(IFileRead fileRead, Calendar calendar, string destinationDirectory, bool keepRelations, WorkItem[] workItems)
{
string json;
string text;
string jsonOld;
string jsonFile;
string textFile;
string weekOfYear;
WorkItem workItem; WorkItem workItem;
string iterationPath; DirectoryInfo directory;
List<string> distinct = new(); DirectoryInfo kanbnDirectory;
DirectoryInfo tasksDirectory;
DirectoryInfo visualStudioCodeDirectory;
ReadOnlyDictionary<int, Record> keyValuePairs = GetWorkItems(workItems, keepRelations);
foreach (KeyValuePair<int, Record> keyValuePair in keyValuePairs) foreach (KeyValuePair<int, Record> keyValuePair in keyValuePairs)
{ {
workItem = keyValuePair.Value.WorkItem; workItem = keyValuePair.Value.WorkItem;
iterationPath = workItem.IterationPath.Replace(" ", "-"); json = JsonSerializer.Serialize(workItem, WorkItemSourceGenerationContext.Default.WorkItem);
if (!distinct.Contains(iterationPath)) weekOfYear = calendar.GetWeekOfYear(workItem.CreatedDate, CalendarWeekRule.FirstDay, DayOfWeek.Sunday).ToString("00");
distinct.Add(iterationPath); directory = new(Path.Combine(destinationDirectory, "{}", $"{workItem.CreatedDate:yyyy}", $"{workItem.CreatedDate:yyyy}_Week_{weekOfYear}", $"{workItem.Id}"));
if (!bugUserStoryTaskWorkItemTypes.Contains(workItem.WorkItemType)) text = GetTaskText(directory.FullName);
continue; visualStudioCodeDirectory = new(Path.Combine(directory.FullName, ".vscode"));
if (workItem.WorkItemType == taskWorkItemType && workItem.Parent is not null) if (!visualStudioCodeDirectory.Exists)
continue; _ = Directory.CreateDirectory(visualStudioCodeDirectory.FullName);
directory = GetDirectory(destinationDirectory, workItem); textFile = Path.Combine(visualStudioCodeDirectory.FullName, "tasks.json");
results.Add(workItem.Id, directory); if (fileRead.IsEAFHosted && !File.Exists(textFile))
File.WriteAllText(textFile, text);
kanbnDirectory = new(Path.Combine(directory.FullName, ".kanbn"));
tasksDirectory = new(Path.Combine(kanbnDirectory.FullName, "tasks"));
if (!tasksDirectory.Exists)
_ = Directory.CreateDirectory(tasksDirectory.FullName);
jsonFile = Path.Combine(kanbnDirectory.FullName, $"{workItem.Id}.json");
jsonOld = File.Exists(jsonFile) ? File.ReadAllText(jsonFile) : string.Empty;
if (fileRead.IsEAFHosted && jsonOld != json)
File.WriteAllText(jsonFile, json);
if (keyValuePair.Value.Children is not null && keyValuePair.Value.Children.Length > 0)
WriteFiles(fileRead, tasksDirectory, keyValuePair.Value.Children);
if (visualStudioCodeDirectory.LastWriteTime != workItem.CreatedDate)
Directory.SetLastWriteTime(visualStudioCodeDirectory.FullName, workItem.CreatedDate);
if (kanbnDirectory.LastWriteTime != workItem.CreatedDate)
Directory.SetLastWriteTime(kanbnDirectory.FullName, workItem.CreatedDate);
if (directory.LastWriteTime != workItem.CreatedDate)
Directory.SetLastWriteTime(directory.FullName, workItem.CreatedDate);
if (visualStudioCodeDirectory.CreationTime != workItem.CreatedDate)
Directory.SetCreationTime(visualStudioCodeDirectory.FullName, workItem.CreatedDate);
if (kanbnDirectory.CreationTime != workItem.CreatedDate)
Directory.SetCreationTime(kanbnDirectory.FullName, workItem.CreatedDate);
if (directory.CreationTime != workItem.CreatedDate)
Directory.SetCreationTime(directory.FullName, workItem.CreatedDate);
} }
if (distinct.Count > 0)
FileCopy(destinationDirectory, json, distinct);
return new(results);
} }
private static void MoveToUnknown(string destinationDirectory, int id, string directory) private static void WriteFiles(IFileRead fileRead, Calendar calendar, string destinationDirectory, WorkItem[] workItems)
{ {
if (string.IsNullOrEmpty(destinationDirectory)) string old;
throw new ArgumentException($"'{nameof(destinationDirectory)}' {id} cannot be null or empty.", nameof(destinationDirectory)); string json;
if (string.IsNullOrEmpty(directory)) string directory;
throw new ArgumentException($"'{nameof(directory)}' cannot be null or empty.", nameof(directory)); string checkFile;
} string weekOfYear;
foreach (WorkItem workItem in workItems)
private static void MoveToNew(string destinationDirectory, int id, string oldDirectory, string newDirectory)
{ {
if (Directory.Exists(newDirectory)) weekOfYear = calendar.GetWeekOfYear(workItem.CreatedDate, CalendarWeekRule.FirstDay, DayOfWeek.Sunday).ToString("00");
MoveToDuplicate(destinationDirectory, id, oldDirectory); directory = Path.Combine(destinationDirectory, "[]", $"{workItem.CreatedDate:yyyy}", $"{workItem.CreatedDate:yyyy}_Week_{weekOfYear}", $"{workItem.Id}");
else
{
string directory = Path.GetDirectoryName(newDirectory) ?? throw new NotImplementedException();
if (!Directory.Exists(directory)) if (!Directory.Exists(directory))
_ = Directory.CreateDirectory(directory); _ = Directory.CreateDirectory(directory);
Directory.Move(oldDirectory, newDirectory); json = JsonSerializer.Serialize(workItem, WorkItemSourceGenerationContext.Default.WorkItem);
checkFile = Path.Combine(directory, $"{workItem.Id}.json");
old = File.Exists(checkFile) ? File.ReadAllText(checkFile) : string.Empty;
if (!fileRead.IsEAFHosted || old == json)
continue;
File.WriteAllText(checkFile, json);
} }
} }
private static string GetDirectory(string destinationDirectory, WorkItem workItem) private void WriteFiles(IFileRead fileRead, Logistics logistics, Calendar calendar, string destinationDirectory, List<FileInfo> fileInfoCollection)
{ {
string result; if (fileInfoCollection is null)
string workItemType = workItem.WorkItemType.Replace(" ", "-"); throw new ArgumentNullException(nameof(fileInfoCollection));
string iterationPath = workItem.IterationPath.Replace(" ", "-"); bool keepRelations = true;
result = Path.Combine(destinationDirectory, iterationPath, $"{workItem.Id}-{workItemType}"); string json = File.ReadAllText(logistics.ReportFullPath);
return result; WorkItem[]? workItems = JsonSerializer.Deserialize<WorkItem[]>(json);
} if (workItems is null)
throw new Exception(nameof(workItems));
private static void MoveToDuplicate(string destinationDirectory, string directory) _Details.Add(workItems);
{ if (!Directory.Exists(destinationDirectory))
if (string.IsNullOrEmpty(destinationDirectory)) _ = Directory.CreateDirectory(destinationDirectory);
throw new ArgumentException($"'{nameof(destinationDirectory)}' cannot be null or empty.", nameof(destinationDirectory)); WriteFiles(fileRead, calendar, destinationDirectory, workItems);
if (string.IsNullOrEmpty(directory)) WriteFiles(fileRead, calendar, destinationDirectory, keepRelations, workItems);
throw new ArgumentException($"'{nameof(directory)}' cannot be null or empty.", nameof(directory));
}
private static void MoveToDuplicate(string destinationDirectory, int id, string oldDirectory)
{
if (string.IsNullOrEmpty(destinationDirectory))
throw new ArgumentException($"'{nameof(destinationDirectory)}' {id} cannot be null or empty.", nameof(destinationDirectory));
if (string.IsNullOrEmpty(oldDirectory))
throw new ArgumentException($"'{nameof(oldDirectory)}' cannot be null or empty.", nameof(oldDirectory));
} }
} }

View File

@ -1,163 +1 @@
trigger: # dotnet nuget push --source https://tfs.intra.infineon.com/tfs/FactoryIntegration/fccf8303-9cf7-4788-a9e0-4042541503fa/_packaging/EAF-Mesa-Integration/nuget/v3/index.json --api-key az D:\vsts-agent-win-x64-2.210.1-eaf\nuget\infineon.mesa.pdf.text.stripper.4.8.0.1.nupkg
branches:
include:
- Development
paths:
include:
- "Adaptation/*"
pool:
name: eaf
demands: MESAFIBACKLOG-Development
steps:
- script: |
set coreVersion=net7.0
echo %coreVersion%
echo ##vso[task.setvariable variable=CoreVersion;]%coreVersion%
echo $(CoreVersion)
displayName: CoreVersion
- script: |
set configuration=Debug
echo %configuration%
echo ##vso[task.setvariable variable=Configuration;]%configuration%
echo $(Configuration)
displayName: Configuration
- script: |
set nugetSource=https://eaf-dev-reporting.mes.infineon.com/v3/index.json
echo %nugetSource%
echo ##vso[task.setvariable variable=NugetSource;]%nugetSource%
echo $(NugetSource)
displayName: NugetSource
- script: |
set gitCommit=$(Build.SourceVersion)
set gitCommitSeven=%gitCommit:~0,7%
echo %gitCommitSeven%
echo ##vso[task.setvariable variable=GitCommitSeven;]%gitCommitSeven%
echo $(GitCommitSeven)
displayName: GitCommitSeven
- script: |
echo $(Build.BuildId)
echo $(Build.Reason)
echo $(Build.Repository.Id)
echo $(Build.Repository.Name)
echo $(Build.SourceVersion)
echo $(CoreVersion)
echo $(Configuration)
echo $(NugetSource)
echo $(GitCommitSeven)
REM echo $(pipelinePassword)
displayName: "Echo Check"
- script: '"C:\program files\dotnet\dotnet.exe" nuget locals all --clear'
displayName: "Nuget Clear"
enabled: false
- script: |
"C:\program files\dotnet\dotnet.exe" user-secrets init
"C:\program files\dotnet\dotnet.exe" user-secrets set "BuildNumber" "$(Build.BuildId)"
"C:\program files\dotnet\dotnet.exe" user-secrets set "GitCommitSeven" "$(GitCommitSeven)"
"C:\program files\dotnet\dotnet.exe" user-secrets list
workingDirectory: Adaptation
displayName: "Safe storage of app secrets - Adaptation"
- script: '"C:\program files\dotnet\dotnet.exe" build --configuration $(Configuration) --source $(NugetSource)'
workingDirectory: Adaptation
displayName: "Core Build - Adaptation"
- powershell: Get-ChildItem .\ -include TestResults -Recurse | foreach ($_) { remove-item $_.fullname -Force -Recurse }
workingDirectory: "$(System.DefaultWorkingDirectory)/../../../$(Build.Repository.Name)"
displayName: "PowerShell Script"
continueOnError: true
- script: "dotnet test --configuration $(Configuration)"
workingDirectory: Adaptation
displayName: "Core Test"
- script: 'move /y "$(System.DefaultWorkingDirectory)/../../../$(Build.Repository.Name)/05_TestResults/TestResults" $(System.DefaultWorkingDirectory)'
displayName: "Move Results"
- script: '"C:\program files\dotnet\dotnet.exe" tool restore'
workingDirectory: Adaptation
displayName: "Tool Restore"
enabled: false
- script: '"C:\program files\dotnet\dotnet.exe" ReportGenerator -reports:$(System.DefaultWorkingDirectory)/TestResults/**/coverage.cobertura.xml -targetDir:$(Build.ArtifactStagingDirectory)\Coverage -reportTypes:Html_Dark'
workingDirectory: Adaptation
displayName: "Report Generator"
enabled: false
- task: PublishTestResults@2
displayName: "Publish Test Results **/*.trx"
inputs:
testResultsFormat: VSTest
testResultsFiles: "**/*.trx"
testRunTitle: "$(GitCommitSeven)-$(Build.BuildId)-$(CoreVersion)-$(Configuration)-$(Build.Repository.Name)"
searchFolder: "$(System.DefaultWorkingDirectory)/TestResults"
- task: PublishTestResults@2
displayName: "Publish Test Results */coverage.cobertura.xml"
inputs:
testResultsFormat: VSTest
testResultsFiles: "*/coverage.cobertura.xml"
testRunTitle: "$(GitCommitSeven)-$(Build.BuildId)-$(CoreVersion)-$(Configuration)-$(Build.Repository.Name)"
searchFolder: "$(System.DefaultWorkingDirectory)/TestResults"
- task: mspremier.CreateWorkItem.CreateWorkItem-task.CreateWorkItem@1
displayName: "Create work item"
inputs:
teamProject: "Mesa_FI"
workItemType: Bug
title: $(GitCommitSeven)-$(Build.BuildId)-$(Build.Repository.Name)-$(Configuration)
assignedTo: "$(Build.RequestedForId)"
enabled: false
- script: '"C:\program files\dotnet\dotnet.exe" publish --configuration $(Configuration) --runtime win-x64 --self-contained -o $(Build.ArtifactStagingDirectory)\Adaptation --source $(NugetSource)'
workingDirectory: Adaptation
displayName: "Core Publish"
enabled: false
- script: '"C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/MSBuild.exe" /target:Restore /detailedsummary /consoleloggerparameters:PerformanceSummary;ErrorsOnly; /property:Configuration=$(Configuration);TargetFrameworkVersion=v4.8 /p:RestoreSources=$(NugetSource)'
displayName: "MSBuild Restore"
- script: '"C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/MSBuild.exe" /target:Build /detailedsummary /consoleloggerparameters:PerformanceSummary;ErrorsOnly; /property:Configuration=$(Configuration);TargetFrameworkVersion=v4.8'
displayName: MSBuild
- script: 'echo $(Build.SourceVersion)-$(Build.BuildId)-$(Build.Repository.Name)>bin\$(Configuration)\$(Build.Repository.Name).txt'
displayName: "Commit Id"
- task: CopyFiles@2
displayName: 'Copy Files to: D:\Framework4.8'
inputs:
Contents: "*$(Build.Repository.Name)*"
SourceFolder: 'bin\$(Configuration)'
TargetFolder: 'D:\Framework4.8\$(GitCommitSeven)-$(Build.BuildId)-$(Build.Repository.Name)-$(Configuration)'
OverWrite: true
enabled: false
- task: CopyFiles@2
displayName: 'Copy Files to: \\mesfs.infineon.com\EC_EAFRepository'
inputs:
Contents: "*$(Build.Repository.Name)*"
SourceFolder: 'bin\$(Configuration)'
TargetFolder: '\\mesfs.infineon.com\EC_EAFRepository\Staging\DeploymentStorage\Adaptation_$(Build.Repository.Name)'
OverWrite: true
enabled: false
- script: |
"C:\program files\dotnet\dotnet.exe" clean --configuration $(Configuration)
workingDirectory: Adaptation
displayName: "Core Clean - Tests"
- script: |
"C:\program files\dotnet\dotnet.exe" clean --configuration $(Configuration)
workingDirectory: Adaptation
displayName: "Core Clean - Adaptation"
- script: 'echo $(Build.SourceVersion)-$(Build.BuildId)>bin_x_x_\$(Configuration)\$(CoreVersion)\win-x64\$(Build.Repository.Name).txt'
displayName: "Force Fail"
enabled: false

View File

@ -1,3 +1,9 @@
# D:
# cd D:\EAF-Mesa-Integration
# config --url https://tfs.intra.infineon.com/tfs/FactoryIntegration --pool "EAF Mesa Integration" --agent mestsa003-meseafsvc --work _work --runAsService --auth negotiate --userName infineon\phares
# D:
# cd D:\EAF-Mesa-Integration
# config --url https://tfs.intra.infineon.com/tfs/FactoryIntegration --pool "EAF Mesa Integration" --agent mestsa07ec-ecmeseaf --work _work --runAsService --auth negotiate --userName infineon\phares
trigger: trigger:
branches: branches:
include: include:
@ -6,41 +12,21 @@ trigger:
include: include:
- "Adaptation/*" - "Adaptation/*"
stages:
- stage: DevServer
displayName: DevServer
pool: pool:
name: eaf name: EAF Mesa Integration
demands: MESAFIBACKLOG demands: MESAFIBACKLOG-Development
variables:
coreVersion: "net8.0"
nugetSource: "https://artifactory.intra.infineon.com/artifactory/api/nuget/ngt-fi-package-main-vir/"
jobs:
- job: SetupEnviroment
steps: steps:
- script: |
set coreVersion=net7.0
echo %coreVersion%
echo ##vso[task.setvariable variable=CoreVersion;]%coreVersion%
echo $(CoreVersion)
displayName: CoreVersion
- script: |
set configuration=Release
echo %configuration%
echo ##vso[task.setvariable variable=Configuration;]%configuration%
echo $(Configuration)
displayName: Configuration
- script: |
REM set nugetSource=https://eaf-prod.mes.infineon.com/v3/index.json
set nugetSource=https://eaf-dev-reporting.mes.infineon.com/v3/index.json
echo %nugetSource%
echo ##vso[task.setvariable variable=NugetSource;]%nugetSource%
echo $(NugetSource)
displayName: NugetSource
- script: |
set gitCommit=$(Build.SourceVersion)
set gitCommitSeven=%gitCommit:~0,7%
echo %gitCommitSeven%
echo ##vso[task.setvariable variable=GitCommitSeven;]%gitCommitSeven%
echo $(GitCommitSeven)
displayName: GitCommitSeven
- script: | - script: |
echo $(Build.BuildId) echo $(Build.BuildId)
echo $(Build.Reason) echo $(Build.Reason)
@ -48,10 +34,7 @@ steps:
echo $(Build.Repository.Name) echo $(Build.Repository.Name)
echo $(Build.SourceVersion) echo $(Build.SourceVersion)
echo $(CoreVersion) echo $(CoreVersion)
echo $(Configuration)
echo $(NugetSource) echo $(NugetSource)
echo $(GitCommitSeven)
REM echo $(pipelinePassword)
displayName: "Echo Check" displayName: "Echo Check"
- script: '"C:\program files\dotnet\dotnet.exe" nuget locals all --clear' - script: '"C:\program files\dotnet\dotnet.exe" nuget locals all --clear'
@ -61,21 +44,84 @@ steps:
- script: | - script: |
"C:\program files\dotnet\dotnet.exe" user-secrets init "C:\program files\dotnet\dotnet.exe" user-secrets init
"C:\program files\dotnet\dotnet.exe" user-secrets set "BuildNumber" "$(Build.BuildId)" "C:\program files\dotnet\dotnet.exe" user-secrets set "BuildNumber" "$(Build.BuildId)"
"C:\program files\dotnet\dotnet.exe" user-secrets set "GitCommitSeven" "$(GitCommitSeven)" "C:\program files\dotnet\dotnet.exe" user-secrets set "GitCommit" "$(Build.SourceVersion)"
"C:\program files\dotnet\dotnet.exe" user-secrets list "C:\program files\dotnet\dotnet.exe" user-secrets list
workingDirectory: Adaptation workingDirectory: Adaptation
displayName: "Safe storage of app secrets - Adaptation" displayName: "Safe storage of app secrets - Adaptation"
- job: BuildDebug
dependsOn:
- SetupEnviroment
steps:
- script: |
set configuration=Debug
echo %configuration%
echo ##vso[task.setvariable variable=Configuration;]%configuration%
echo $(Configuration)
displayName: Configuration
- script: '"C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/MSBuild.exe" /target:Restore /detailedsummary /consoleloggerparameters:PerformanceSummary;ErrorsOnly; /property:Configuration=$(Configuration);TargetFrameworkVersion=v4.8 /p:RestoreSources=$(NugetSource)'
displayName: "MSBuild Restore"
- script: '"C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/MSBuild.exe" /target:Build /detailedsummary /consoleloggerparameters:PerformanceSummary;ErrorsOnly; /property:Configuration=$(Configuration);TargetFrameworkVersion=v4.8'
displayName: MSBuild
- script: 'echo $(Build.Repository.Name)-$(Build.BuildId)-$(Build.SourceVersion)>bin\$(Configuration)\$(Build.Repository.Name).txt'
displayName: "Commit Id"
- task: CopyFiles@2
displayName: 'Copy Files to: D:\Framework4.8'
inputs:
Contents: "*$(Build.Repository.Name)*"
SourceFolder: 'bin\$(Configuration)'
TargetFolder: 'D:\Framework4.8\$(Build.Repository.Name)-$(Build.BuildId)-$(Build.SourceVersion)-$(Configuration)'
OverWrite: true
enabled: true
- script: '"C:\program files\dotnet\dotnet.exe" build --configuration $(Configuration) --source $(NugetSource)' - script: '"C:\program files\dotnet\dotnet.exe" build --configuration $(Configuration) --source $(NugetSource)'
workingDirectory: Adaptation workingDirectory: Adaptation
displayName: "Core Build - Adaptation" displayName: "Core Build - Adaptation"
- job: BuildRelease
dependsOn:
- SetupEnviroment
steps:
- script: |
set configuration=Release
echo %configuration%
echo ##vso[task.setvariable variable=Configuration;]%configuration%
echo $(Configuration)
displayName: Configuration
- script: '"C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/MSBuild.exe" /target:Restore /detailedsummary /consoleloggerparameters:PerformanceSummary;ErrorsOnly; /property:Configuration=$(Configuration);TargetFrameworkVersion=v4.8 /p:RestoreSources=$(NugetSource)'
displayName: "MSBuild Restore"
- script: '"C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/MSBuild.exe" /target:Build /detailedsummary /consoleloggerparameters:PerformanceSummary;ErrorsOnly; /property:Configuration=$(Configuration);TargetFrameworkVersion=v4.8'
displayName: MSBuild
- script: '"C:\program files\dotnet\dotnet.exe" build --configuration $(Configuration) --source $(NugetSource)'
workingDirectory: Adaptation
displayName: "Core Build - Adaptation"
- job: TestDebug
dependsOn:
- SetupEnviroment
- BuildDebug
- BuildRelease
steps:
- script: |
set configuration=Debug
echo %configuration%
echo ##vso[task.setvariable variable=Configuration;]%configuration%
echo $(Configuration)
displayName: Configuration
- powershell: Get-ChildItem .\ -include TestResults -Recurse | foreach ($_) { remove-item $_.fullname -Force -Recurse } - powershell: Get-ChildItem .\ -include TestResults -Recurse | foreach ($_) { remove-item $_.fullname -Force -Recurse }
workingDirectory: "$(System.DefaultWorkingDirectory)/../../../$(Build.Repository.Name)" workingDirectory: "$(System.DefaultWorkingDirectory)/../../../$(Build.Repository.Name)"
displayName: "PowerShell Script" displayName: "PowerShell Script"
continueOnError: true continueOnError: true
- script: "dotnet test --configuration $(Configuration) --runtime win-x86" - script: "dotnet test --configuration $(Configuration)"
workingDirectory: Adaptation workingDirectory: Adaptation
displayName: "Core Test" displayName: "Core Test"
@ -97,7 +143,7 @@ steps:
inputs: inputs:
testResultsFormat: VSTest testResultsFormat: VSTest
testResultsFiles: "**/*.trx" testResultsFiles: "**/*.trx"
testRunTitle: "$(GitCommitSeven)-$(Build.BuildId)-$(CoreVersion)-$(Configuration)-$(Build.Repository.Name)" testRunTitle: "$(Build.BuildId)-$(Build.SourceVersion)-$(CoreVersion)-$(Configuration)-$(Build.Repository.Name)"
searchFolder: "$(System.DefaultWorkingDirectory)/TestResults" searchFolder: "$(System.DefaultWorkingDirectory)/TestResults"
- task: PublishTestResults@2 - task: PublishTestResults@2
@ -105,30 +151,72 @@ steps:
inputs: inputs:
testResultsFormat: VSTest testResultsFormat: VSTest
testResultsFiles: "*/coverage.cobertura.xml" testResultsFiles: "*/coverage.cobertura.xml"
testRunTitle: "$(GitCommitSeven)-$(Build.BuildId)-$(CoreVersion)-$(Configuration)-$(Build.Repository.Name)" testRunTitle: "$(Build.BuildId)-$(Build.SourceVersion)-$(CoreVersion)-$(Configuration)-$(Build.Repository.Name)"
searchFolder: "$(System.DefaultWorkingDirectory)/TestResults" searchFolder: "$(System.DefaultWorkingDirectory)/TestResults"
- task: mspremier.CreateWorkItem.CreateWorkItem-task.CreateWorkItem@1 - script: |
displayName: "Create work item" "C:\program files\dotnet\dotnet.exe" clean --configuration $(Configuration)
inputs: workingDirectory: Adaptation
teamProject: "Mesa_FI" displayName: "Core Clean - Adaptation"
workItemType: Bug
title: $(GitCommitSeven)-$(Build.BuildId)-$(Build.Repository.Name)-$(Configuration) - script: 'echo $(Build.BuildId)-$(Build.SourceVersion)-bin_x_x_\$(Configuration)\$(CoreVersion)\win-x64\$(Build.Repository.Name).txt'
assignedTo: "$(Build.RequestedForId)" displayName: "Force Fail"
enabled: false enabled: false
- script: '"C:\program files\dotnet\dotnet.exe" publish --configuration $(Configuration) --runtime win-x64 --self-contained -o $(Build.ArtifactStagingDirectory)\Adaptation --source $(NugetSource)' - stage: ProductionServer
workingDirectory: Adaptation displayName: ProductionServer
displayName: "Core Publish"
pool:
name: EAF Mesa Integration
demands: MESAFIBACKLOG
variables:
coreVersion: "net8.0"
nugetSource: "https://artifactory.intra.infineon.com/artifactory/api/nuget/ngt-fi-package-main-vir/"
jobs:
- job: SetupEnviroment
steps:
- script: |
echo $(Build.BuildId)
echo $(Build.Reason)
echo $(Build.Repository.Id)
echo $(Build.Repository.Name)
echo $(Build.SourceVersion)
echo $(CoreVersion)
echo $(NugetSource)
displayName: "Echo Check"
- script: '"C:\program files\dotnet\dotnet.exe" nuget locals all --clear'
displayName: "Nuget Clear"
enabled: false enabled: false
- script: |
"C:\program files\dotnet\dotnet.exe" user-secrets init
"C:\program files\dotnet\dotnet.exe" user-secrets set "BuildNumber" "$(Build.BuildId)"
"C:\program files\dotnet\dotnet.exe" user-secrets set "GitCommit" "$(Build.SourceVersion)"
"C:\program files\dotnet\dotnet.exe" user-secrets list
workingDirectory: Adaptation
displayName: "Safe storage of app secrets - Adaptation"
- job: BuildRelease
dependsOn:
- SetupEnviroment
steps:
- script: |
set configuration=Release
echo %configuration%
echo ##vso[task.setvariable variable=Configuration;]%configuration%
echo $(Configuration)
displayName: Configuration
- script: '"C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/MSBuild.exe" /target:Restore /detailedsummary /consoleloggerparameters:PerformanceSummary;ErrorsOnly; /property:Configuration=$(Configuration);TargetFrameworkVersion=v4.8 /p:RestoreSources=$(NugetSource)' - script: '"C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/MSBuild.exe" /target:Restore /detailedsummary /consoleloggerparameters:PerformanceSummary;ErrorsOnly; /property:Configuration=$(Configuration);TargetFrameworkVersion=v4.8 /p:RestoreSources=$(NugetSource)'
displayName: "MSBuild Restore" displayName: "MSBuild Restore"
- script: '"C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/MSBuild.exe" /target:Build /detailedsummary /consoleloggerparameters:PerformanceSummary;ErrorsOnly; /property:Configuration=$(Configuration);TargetFrameworkVersion=v4.8' - script: '"C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/MSBuild.exe" /target:Build /detailedsummary /consoleloggerparameters:PerformanceSummary;ErrorsOnly; /property:Configuration=$(Configuration);TargetFrameworkVersion=v4.8'
displayName: MSBuild displayName: MSBuild
- script: 'echo $(Build.SourceVersion)-$(Build.BuildId)-$(Build.Repository.Name)>bin\$(Configuration)\$(Build.Repository.Name).txt' - script: 'echo $(Build.Repository.Name)-$(Build.BuildId)-$(Build.SourceVersion)>bin\$(Configuration)\$(Build.Repository.Name).txt'
displayName: "Commit Id" displayName: "Commit Id"
- task: CopyFiles@2 - task: CopyFiles@2
@ -136,29 +224,68 @@ steps:
inputs: inputs:
Contents: "*$(Build.Repository.Name)*" Contents: "*$(Build.Repository.Name)*"
SourceFolder: 'bin\$(Configuration)' SourceFolder: 'bin\$(Configuration)'
TargetFolder: 'D:\Framework4.8\$(GitCommitSeven)-$(Build.BuildId)-$(Build.Repository.Name)-$(Configuration)' TargetFolder: 'D:\Framework4.8\$(Build.Repository.Name)-$(Build.BuildId)-$(Build.SourceVersion)-$(Configuration)'
OverWrite: true OverWrite: true
- task: CopyFiles@2 - script: '"C:\program files\dotnet\dotnet.exe" build --configuration $(Configuration) --source $(NugetSource)'
displayName: 'Copy Files to: \\mesfs.infineon.com\EC_EAFRepository'
inputs:
Contents: "*$(Build.Repository.Name)*"
SourceFolder: 'bin\$(Configuration)'
TargetFolder: 'D:\EAF\EAF Deployment Storage\Adaptation_$(Build.Repository.Name)'
OverWrite: true
- script: |
"C:\program files\dotnet\dotnet.exe" clean --configuration $(Configuration)
workingDirectory: Adaptation workingDirectory: Adaptation
displayName: "Core Clean - Tests" displayName: "Core Build - Adaptation"
- job: TestRelease
dependsOn:
- SetupEnviroment
- BuildRelease
steps:
- script: |
set configuration=Release
echo %configuration%
echo ##vso[task.setvariable variable=Configuration;]%configuration%
echo $(Configuration)
displayName: Configuration
- powershell: Get-ChildItem .\ -include TestResults -Recurse | foreach ($_) { remove-item $_.fullname -Force -Recurse }
workingDirectory: "$(System.DefaultWorkingDirectory)/../../../$(Build.Repository.Name)"
displayName: "PowerShell Script"
continueOnError: true continueOnError: true
- script: "dotnet test --configuration $(Configuration)"
workingDirectory: Adaptation
displayName: "Core Test"
- script: 'move /y "$(System.DefaultWorkingDirectory)/../../../$(Build.Repository.Name)/05_TestResults/TestResults" $(System.DefaultWorkingDirectory)'
displayName: "Move Results"
- script: '"C:\program files\dotnet\dotnet.exe" tool restore'
workingDirectory: Adaptation
displayName: "Tool Restore"
enabled: false
- script: '"C:\program files\dotnet\dotnet.exe" ReportGenerator -reports:$(System.DefaultWorkingDirectory)/TestResults/**/coverage.cobertura.xml -targetDir:$(Build.ArtifactStagingDirectory)\Coverage -reportTypes:Html_Dark'
workingDirectory: Adaptation
displayName: "Report Generator"
enabled: false
- task: PublishTestResults@2
displayName: "Publish Test Results **/*.trx"
inputs:
testResultsFormat: VSTest
testResultsFiles: "**/*.trx"
testRunTitle: "$(Build.BuildId)-$(Build.SourceVersion)-$(CoreVersion)-$(Configuration)-$(Build.Repository.Name)"
searchFolder: "$(System.DefaultWorkingDirectory)/TestResults"
- task: PublishTestResults@2
displayName: "Publish Test Results */coverage.cobertura.xml"
inputs:
testResultsFormat: VSTest
testResultsFiles: "*/coverage.cobertura.xml"
testRunTitle: "$(Build.BuildId)-$(Build.SourceVersion)-$(CoreVersion)-$(Configuration)-$(Build.Repository.Name)"
searchFolder: "$(System.DefaultWorkingDirectory)/TestResults"
- script: | - script: |
"C:\program files\dotnet\dotnet.exe" clean --configuration $(Configuration) "C:\program files\dotnet\dotnet.exe" clean --configuration $(Configuration)
workingDirectory: Adaptation workingDirectory: Adaptation
displayName: "Core Clean - Adaptation" displayName: "Core Clean - Adaptation"
continueOnError: true
- script: 'echo $(Build.SourceVersion)-$(Build.BuildId)>bin_x_x_\$(Configuration)\$(CoreVersion)\win-x64\$(Build.Repository.Name).txt' - script: 'echo $(Build.BuildId)-$(Build.SourceVersion)-bin_x_x_\$(Configuration)\$(CoreVersion)\win-x64\$(Build.Repository.Name).txt'
displayName: "Force Fail" displayName: "Force Fail"
enabled: false enabled: true