Monday, 18 February 2019

Azure Devops - Pull Request Merge Conflicts

Before a Git pull request can complete, any conflicts with the target branch must be resolved. Out of the box, at the time of writing this article, Azure DevOps requires this to be resolved locally. Following best practices to not allow direct commits to our release/master branches further exasperates the problem as we need to effectively clone the branch or go with a rebase approach, both of which break the natural flow of resolving the conflicts as part of the pull request.

With this extension, from the Microsoft DevLabs team via the Marketplace, you can resolve these conflicts online, as part of the pull request process, instead of being forced to break flow and resolve locally.




Online Experience

After adding the extension the new conflicts tab is visible which enables conflict resolution in the familiar side by side review page as shown below:



Really nice extension, which should make resolving merge conflicts a much more straightforward part of the DevOps workflow. 


Additional - Adding the extension from the Marketplace

For those that have not used the Marketplace for Azure DevOps as yet, below is a brief tour of the process.


Note* For a seamless experience, login to Azure Devops first.


1 - Navigate to the Marketplace and select the extension you would like to add.



2 - Select your DevOps Organisation 



3 - Navigate to your DevOps project




4 - Navigate to the pull request that contains the merge conflict



5 - Select the conflicts tab as shown above.


References






Friday, 11 January 2019

Azure Devops .Net Core and .Net Standard NuGet Pack/Push

NuGet pack Unable to cast object of type 'System.String' to type 'NuGet.Frameworks.NuGetFramework

Came across a rather misleading error message above today while attempting to pack and publish a .Net Standard class library project to a private feed as a DevOps Artifact.




Well, it turns out that the NuGet Pack and NuGet Push are not supported by NuGet 4.x at this time. The workaround is to use the .Net core specific build tasks which include commands for pack and publish as show below:




YAML
-(PACK)
steps:
- task: DotNetCoreCLI@2
  displayName: 'dotnet pack'
  inputs:
    command: pack
    packagesToPack: <your project.csproj>
    versioningScheme: byPrereleaseNumber
-(PUSH)
steps: - task: DotNetCoreCLI@2 displayName: 'dotnet push' inputs: command: push packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg;!
$(Build.ArtifactStagingDirectory)/**/*.symbols.nupkg' publishVstsFeed: '<your feed id>'


The other interesting point to note is that the NuGet Restore works just fine in version 4.x. for .Net Core and .Net Standard pipeline tasks respectively.
One to watch out for until the NuGet team enhances support for the other frameworks.



Reference Articles
https://github.com/NuGet/Home/issues/4808

Monday, 16 October 2017

More Agile and Iterative Hardware Development for Azure


Hardware is essentially a vehicle for Software. 
With many projects requiring very specific hardware requirements, such as printing without start-up time, artificial intelligence and more controversial projects like Bitcoin Mining, the route to market could be significantly improved with a more agile and iterative approach.  

  
open-source hardware Project Olympus 
One of the goals behind Project Olympus is to close the gap of the average 1.5 years of development cycle for hardware and get closer to the typical increments being achieved for software development.  
  
the incompleteness theorem  
Microsoft's rationale for sharing an incomplete design is that "open source hardware development is currently not as agile and iterative as open source software. ... By sharing designs that are actively in development, Project Olympus will allow the community to contribute to the ecosystem by downloading, modifying, and forking the hardware design just like open source software." 
  
Background 
  • Open Hardware 
  • Open Software 
  • Open Future? 

Project Olympus is Microsoft’s blueprint for future hardware development and collaboration and forms a part of  its hyperscale cloud hardware design and a new model for open source hardware development  

Microsoft's latest contribution to Facebook's Open Compute Project introduces a new server design, it also changes the way the designs are conceived and submitted, as well as their collaboration process. Microsoft plans to share designs with the OCP as early as possible in the design process. 


  
  
Physical example 
 


  
Conclusion 
With a large array of names, such as Intel, AMD, NVIDIAactively collaborating and designing the latest hardware around this open source hardware framework it will be interesting to see the branches which form as dedicated projects have a vehicle to thrive and continuously develop at speed. 

  
 Links 
Project Olympus