I am trying to do a nightly package integration with one of our projects that consumes 6 other internal teams’ -PreRelease packages.
Background Info
- We have our own internal ProGet Server that hosts only our company packages.
- Package IDs are in the format of: MyCompany.Project.Component
- We have VS2015 Enterprise ($$), so our build system only has the VS 2015 Build tools installed.
- We use CruiseControl.NET ( will be going to TFS later this year )
My integration script ( Powershell ) is something like:
#Restores all the packages 1st
nuget restore ( Get-ChildItem $Dir -filter *.sln –Recurse ).FullName
#Gets all the packages.configs
foreach ( $PackageFile in (Get-ChildItem $RepoDir -filter packages.config -Recurse).FullName ))
{
#Gets all the packages
nuget list $PackageFile
#Filters my companies packages
| Select-String -Pattern 'MyCompany.*' –AllMatches
#Removes package version and only gets the package ID
| % { [regex]::Split($_, " ")[0] }
#Updates the packages
| Start-Process nuget -ArgumentList "update $PackageFile -ID $_ -Source MyCompnySrc’s –Prerelease –verbosity detailed" -Wait –NoNewWindow
}
Then build the solution, execute unit/integration tests then either check in the new package.configs or report there are some breaking changes.
I thought about splitting MyCompany’s packages into a separate package config but thought it would be wiser to get advice before restructuring all the teams repo’s, and implementing this on other projects.
I am new to Release Engineering and have that feeling I am making this too complicated