diff --git a/Adaptation/FileHandlers/Kanban/FileRead.cs b/Adaptation/FileHandlers/Kanban/FileRead.cs index b93376f..2bc6a55 100644 --- a/Adaptation/FileHandlers/Kanban/FileRead.cs +++ b/Adaptation/FileHandlers/Kanban/FileRead.cs @@ -109,7 +109,7 @@ public class FileRead : Shared.FileRead, IFileRead results.Item4.Add(_Logistics.FileInfo); 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) results = new(string.Concat("B) No Data - ", dateTime.Ticks), Array.Empty(), Array.Empty(), results.Item4); else diff --git a/Adaptation/FileHandlers/Kanban/ProcessData.cs b/Adaptation/FileHandlers/Kanban/ProcessData.cs index 08903a2..2f91567 100644 --- a/Adaptation/FileHandlers/Kanban/ProcessData.cs +++ b/Adaptation/FileHandlers/Kanban/ProcessData.cs @@ -6,8 +6,8 @@ using log4net; using System; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Globalization; using System.IO; -using System.Linq; using System.Text.Json; using System.Text.Json.Serialization; @@ -22,7 +22,7 @@ public class ProcessData : IProcessData private readonly ILog _Log; - public ProcessData(IFileRead fileRead, Logistics logistics, string targetFileLocation, string url, List fileInfoCollection) + public ProcessData(IFileRead fileRead, Logistics logistics, Calendar calendar, string targetFileLocation, string url, List fileInfoCollection) { if (fileRead.IsEAFHosted) { } @@ -31,7 +31,7 @@ public class ProcessData : IProcessData fileInfoCollection.Clear(); _Details = new List(); _Log = LogManager.GetLogger(typeof(ProcessData)); - WriteFiles(fileRead, logistics, targetFileLocation, fileInfoCollection); + WriteFiles(fileRead, logistics, calendar, targetFileLocation, fileInfoCollection); } string IProcessData.GetCurrentReactor(IFileRead fileRead, Logistics logistics, Dictionary reactors) => @@ -59,97 +59,6 @@ public class ProcessData : IProcessData return results; } - private void WriteFiles(IFileRead fileRead, Logistics logistics, string destinationDirectory, List fileInfoCollection) - { - bool keepRelations = true; - const string taskWorkItemType = "Task"; - string json = File.ReadAllText(logistics.ReportFullPath); - WorkItem[]? workItems = JsonSerializer.Deserialize(json); - if (workItems is null) - throw new Exception(nameof(workItems)); - _Details.Add(workItems); - if (!Directory.Exists(destinationDirectory)) - _ = Directory.CreateDirectory(destinationDirectory); - ReadOnlyDictionary keyValuePairs = GetWorkItems(workItems, keepRelations); - ReadOnlyCollection bugUserStoryTaskWorkItemTypes = new(new string[] { "Bug", "User Story", "Task" }); - ReadOnlyDictionary collection = MoveCurrentAndGetExpectedDirectoriesAndFileCopy(taskWorkItemType, destinationDirectory, json, bugUserStoryTaskWorkItemTypes, keyValuePairs); - WriteFiles(fileRead, fileInfoCollection, taskWorkItemType, destinationDirectory, keyValuePairs, collection); - } - - private static ReadOnlyDictionary GetWorkItems(WorkItem[] workItems, bool keepRelations) - { - ReadOnlyDictionary results; - Dictionary keyValuePairs = new(); - foreach (WorkItem workItem in workItems) - keyValuePairs.Add(workItem.Id, workItem); - results = GetKeyValuePairs(new(keyValuePairs), keepRelations); - return results; - } - - private static ReadOnlyDictionary MoveCurrentAndGetExpectedDirectoriesAndFileCopy(string taskWorkItemType, string destinationDirectory, string json, ReadOnlyCollection bugUserStoryTaskWorkItemTypes, ReadOnlyDictionary keyValuePairs) - { - ReadOnlyDictionary results; - string? directory; - ReadOnlyDictionary collection = GetCurrentDirectories(destinationDirectory, bugUserStoryTaskWorkItemTypes); - results = GetExpectedDirectoriesAndFileCopy(taskWorkItemType, destinationDirectory, json, bugUserStoryTaskWorkItemTypes, keyValuePairs); - foreach (KeyValuePair 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 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 fileInfoCollection, string taskWorkItemType, string destinationDirectory, ReadOnlyDictionary keyValuePairs, ReadOnlyDictionary collection) - { - string? directory; - FileInfo fileInfo; - WorkItem workItem; - foreach (KeyValuePair 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 GetKeyValuePairs(ReadOnlyDictionary keyValuePairs, bool keepRelations) { Dictionary results = new(); @@ -183,120 +92,144 @@ public class ProcessData : IProcessData return new(results); } - private static ReadOnlyDictionary GetCurrentDirectories(string destinationDirectory, ReadOnlyCollection bugUserStoryTaskWorkItemTypes) + private static ReadOnlyDictionary GetWorkItems(WorkItem[] workItems, bool keepRelations) { - Dictionary results = new(); - int id; - string idCheck; - string? fileName; - string[] directories; - string[] split = new string[] { "-" }; - 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); + ReadOnlyDictionary results; + Dictionary keyValuePairs = new(); + foreach (WorkItem workItem in workItems) + keyValuePairs.Add(workItem.Id, workItem); + results = GetKeyValuePairs(new(keyValuePairs), keepRelations); + return results; } - private static void FileCopy(string destinationDirectory, string json, List distinct) + private static void WriteFiles(IFileRead fileRead, DirectoryInfo tasksDirectory, Record[] records) { string old; + string json; string checkFile; - string checkDirectory; - foreach (string iterationPath in distinct) + WorkItem workItem; + foreach (Record record in records) { - checkDirectory = Path.Combine(destinationDirectory, iterationPath); - if (!Directory.Exists(checkDirectory)) - _ = Directory.CreateDirectory(checkDirectory); - checkFile = Path.Combine(checkDirectory, "[].json"); + workItem = record.WorkItem; + json = JsonSerializer.Serialize(workItem, WorkItemSourceGenerationContext.Default.WorkItem); + checkFile = Path.Combine(tasksDirectory.FullName, $"{workItem.Id}.json"); old = File.Exists(checkFile) ? File.ReadAllText(checkFile) : string.Empty; - if (old != json) - File.WriteAllText(checkFile, json); + if (!fileRead.IsEAFHosted || old == json) + continue; + File.WriteAllText(checkFile, json); } } - private static ReadOnlyDictionary GetExpectedDirectoriesAndFileCopy(string taskWorkItemType, string destinationDirectory, string json, ReadOnlyCollection bugUserStoryTaskWorkItemTypes, ReadOnlyDictionary keyValuePairs) + private static string GetTaskText(string directory) => + string.Join(Environment.NewLine, new string[] + { + "{", + "\"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) { - Dictionary results = new(); - string directory; + string json; + string text; + string jsonOld; + string jsonFile; + string textFile; + string weekOfYear; WorkItem workItem; - string iterationPath; - List distinct = new(); + DirectoryInfo directory; + DirectoryInfo kanbnDirectory; + DirectoryInfo tasksDirectory; + DirectoryInfo visualStudioCodeDirectory; + ReadOnlyDictionary keyValuePairs = GetWorkItems(workItems, keepRelations); foreach (KeyValuePair keyValuePair in keyValuePairs) { workItem = keyValuePair.Value.WorkItem; - iterationPath = workItem.IterationPath.Replace(" ", "-"); - if (!distinct.Contains(iterationPath)) - distinct.Add(iterationPath); - if (!bugUserStoryTaskWorkItemTypes.Contains(workItem.WorkItemType)) - continue; - if (workItem.WorkItemType == taskWorkItemType && workItem.Parent is not null) - continue; - directory = GetDirectory(destinationDirectory, workItem); - results.Add(workItem.Id, directory); + json = JsonSerializer.Serialize(workItem, WorkItemSourceGenerationContext.Default.WorkItem); + weekOfYear = calendar.GetWeekOfYear(workItem.CreatedDate, CalendarWeekRule.FirstDay, DayOfWeek.Sunday).ToString("00"); + directory = new(Path.Combine(destinationDirectory, "{}", $"{workItem.CreatedDate:yyyy}", $"{workItem.CreatedDate:yyyy}_Week_{weekOfYear}", $"{workItem.Id}")); + text = GetTaskText(directory.FullName); + visualStudioCodeDirectory = new(Path.Combine(directory.FullName, ".vscode")); + if (!visualStudioCodeDirectory.Exists) + _ = Directory.CreateDirectory(visualStudioCodeDirectory.FullName); + textFile = Path.Combine(visualStudioCodeDirectory.FullName, "tasks.json"); + 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)) - throw new ArgumentException($"'{nameof(destinationDirectory)}' {id} cannot be null or empty.", nameof(destinationDirectory)); - if (string.IsNullOrEmpty(directory)) - throw new ArgumentException($"'{nameof(directory)}' cannot be null or empty.", nameof(directory)); - } - - private static void MoveToNew(string destinationDirectory, int id, string oldDirectory, string newDirectory) - { - if (Directory.Exists(newDirectory)) - MoveToDuplicate(destinationDirectory, id, oldDirectory); - else + string old; + string json; + string directory; + string checkFile; + string weekOfYear; + foreach (WorkItem workItem in workItems) { - string directory = Path.GetDirectoryName(newDirectory) ?? throw new NotImplementedException(); + weekOfYear = calendar.GetWeekOfYear(workItem.CreatedDate, CalendarWeekRule.FirstDay, DayOfWeek.Sunday).ToString("00"); + directory = Path.Combine(destinationDirectory, "[]", $"{workItem.CreatedDate:yyyy}", $"{workItem.CreatedDate:yyyy}_Week_{weekOfYear}", $"{workItem.Id}"); if (!Directory.Exists(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 fileInfoCollection) { - string result; - string workItemType = workItem.WorkItemType.Replace(" ", "-"); - string iterationPath = workItem.IterationPath.Replace(" ", "-"); - result = Path.Combine(destinationDirectory, iterationPath, $"{workItem.Id}-{workItemType}"); - return result; - } - - private static void MoveToDuplicate(string destinationDirectory, string directory) - { - if (string.IsNullOrEmpty(destinationDirectory)) - throw new ArgumentException($"'{nameof(destinationDirectory)}' cannot be null or empty.", nameof(destinationDirectory)); - if (string.IsNullOrEmpty(directory)) - 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)); + if (fileInfoCollection is null) + throw new ArgumentNullException(nameof(fileInfoCollection)); + bool keepRelations = true; + string json = File.ReadAllText(logistics.ReportFullPath); + WorkItem[]? workItems = JsonSerializer.Deserialize(json); + if (workItems is null) + throw new Exception(nameof(workItems)); + _Details.Add(workItems); + if (!Directory.Exists(destinationDirectory)) + _ = Directory.CreateDirectory(destinationDirectory); + WriteFiles(fileRead, calendar, destinationDirectory, workItems); + WriteFiles(fileRead, calendar, destinationDirectory, keepRelations, workItems); } } \ No newline at end of file diff --git a/Adaptation/MESAFIBACKLOG-Development.yml b/Adaptation/MESAFIBACKLOG-Development.yml index 671e666..bd0cb64 100644 --- a/Adaptation/MESAFIBACKLOG-Development.yml +++ b/Adaptation/MESAFIBACKLOG-Development.yml @@ -1,163 +1 @@ -trigger: - 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 +# 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 \ No newline at end of file diff --git a/Adaptation/MESAFIBACKLOG.yml b/Adaptation/MESAFIBACKLOG.yml index 98b1e8a..dc6dc2c 100644 --- a/Adaptation/MESAFIBACKLOG.yml +++ b/Adaptation/MESAFIBACKLOG.yml @@ -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: branches: include: @@ -6,159 +12,280 @@ trigger: include: - "Adaptation/*" -pool: - name: eaf - demands: MESAFIBACKLOG +stages: + - stage: DevServer + displayName: DevServer -steps: - - script: | - set coreVersion=net7.0 - echo %coreVersion% - echo ##vso[task.setvariable variable=CoreVersion;]%coreVersion% - echo $(CoreVersion) - displayName: CoreVersion + pool: + name: EAF Mesa Integration + demands: MESAFIBACKLOG-Development - - script: | - set configuration=Release - echo %configuration% - echo ##vso[task.setvariable variable=Configuration;]%configuration% - echo $(Configuration) - displayName: Configuration + variables: + coreVersion: "net8.0" + nugetSource: "https://artifactory.intra.infineon.com/artifactory/api/nuget/ngt-fi-package-main-vir/" - - 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 + 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: | - set gitCommit=$(Build.SourceVersion) - set gitCommitSeven=%gitCommit:~0,7% - echo %gitCommitSeven% - echo ##vso[task.setvariable variable=GitCommitSeven;]%gitCommitSeven% - echo $(GitCommitSeven) - displayName: GitCommitSeven + - script: '"C:\program files\dotnet\dotnet.exe" nuget locals all --clear' + displayName: "Nuget Clear" + enabled: false - - 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" 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" - - script: '"C:\program files\dotnet\dotnet.exe" nuget locals all --clear' - displayName: "Nuget Clear" - enabled: false + - 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\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 (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\dotnet\dotnet.exe" build --configuration $(Configuration) --source $(NugetSource)' - workingDirectory: Adaptation - displayName: "Core Build - Adaptation" + - 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 - - powershell: Get-ChildItem .\ -include TestResults -Recurse | foreach ($_) { remove-item $_.fullname -Force -Recurse } - workingDirectory: "$(System.DefaultWorkingDirectory)/../../../$(Build.Repository.Name)" - displayName: "PowerShell Script" - continueOnError: true + - script: 'echo $(Build.Repository.Name)-$(Build.BuildId)-$(Build.SourceVersion)>bin\$(Configuration)\$(Build.Repository.Name).txt' + displayName: "Commit Id" - - script: "dotnet test --configuration $(Configuration) --runtime win-x86" - workingDirectory: Adaptation - displayName: "Core Test" + - 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: 'move /y "$(System.DefaultWorkingDirectory)/../../../$(Build.Repository.Name)/05_TestResults/TestResults" $(System.DefaultWorkingDirectory)' - displayName: "Move Results" + - script: '"C:\program files\dotnet\dotnet.exe" build --configuration $(Configuration) --source $(NugetSource)' + workingDirectory: Adaptation + displayName: "Core Build - Adaptation" - - script: '"C:\program files\dotnet\dotnet.exe" tool restore' - workingDirectory: Adaptation - displayName: "Tool Restore" - enabled: false + - 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\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 + - 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" - - 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" + - 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 - - 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" + - script: '"C:\program files\dotnet\dotnet.exe" build --configuration $(Configuration) --source $(NugetSource)' + workingDirectory: Adaptation + displayName: "Core Build - Adaptation" - - 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 + - job: TestDebug + dependsOn: + - SetupEnviroment + - BuildDebug + - BuildRelease + steps: + - script: | + set configuration=Debug + echo %configuration% + echo ##vso[task.setvariable variable=Configuration;]%configuration% + echo $(Configuration) + displayName: Configuration - - 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 + - powershell: Get-ChildItem .\ -include TestResults -Recurse | foreach ($_) { remove-item $_.fullname -Force -Recurse } + workingDirectory: "$(System.DefaultWorkingDirectory)/../../../$(Build.Repository.Name)" + displayName: "PowerShell Script" + continueOnError: true - - 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: "dotnet test --configuration $(Configuration)" + workingDirectory: Adaptation + displayName: "Core Test" - - 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: 'move /y "$(System.DefaultWorkingDirectory)/../../../$(Build.Repository.Name)/05_TestResults/TestResults" $(System.DefaultWorkingDirectory)' + displayName: "Move Results" - - script: 'echo $(Build.SourceVersion)-$(Build.BuildId)-$(Build.Repository.Name)>bin\$(Configuration)\$(Build.Repository.Name).txt' - displayName: "Commit Id" + - script: '"C:\program files\dotnet\dotnet.exe" tool restore' + workingDirectory: Adaptation + displayName: "Tool Restore" + enabled: false - - 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 + - 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: CopyFiles@2 - 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 + - 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" - - script: | - "C:\program files\dotnet\dotnet.exe" clean --configuration $(Configuration) - workingDirectory: Adaptation - displayName: "Core Clean - Tests" - continueOnError: true + - 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: | - "C:\program files\dotnet\dotnet.exe" clean --configuration $(Configuration) - workingDirectory: Adaptation - displayName: "Core Clean - Adaptation" - continueOnError: true + - 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 + - script: 'echo $(Build.BuildId)-$(Build.SourceVersion)-bin_x_x_\$(Configuration)\$(CoreVersion)\win-x64\$(Build.Repository.Name).txt' + displayName: "Force Fail" + enabled: false + + - stage: ProductionServer + displayName: ProductionServer + + 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 + + - 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)' + 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 + + - script: '"C:\program files\dotnet\dotnet.exe" build --configuration $(Configuration) --source $(NugetSource)' + workingDirectory: Adaptation + 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 + + - 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: | + "C:\program files\dotnet\dotnet.exe" clean --configuration $(Configuration) + workingDirectory: Adaptation + displayName: "Core Clean - Adaptation" + + - script: 'echo $(Build.BuildId)-$(Build.SourceVersion)-bin_x_x_\$(Configuration)\$(CoreVersion)\win-x64\$(Build.Repository.Name).txt' + displayName: "Force Fail" + enabled: true