{"id":27979504,"url":"https://github.com/damianczer/azure-devops-msbuild-auto","last_synced_at":"2025-05-08T02:53:50.787Z","repository":{"id":248393254,"uuid":"827342635","full_name":"damianczer/Azure-DevOps-MSBuild-Auto","owner":"damianczer","description":"Optimization for Azure Pipeline bases on MSBuild. Ready-made script  can be added in DevOps Pipeline step. Very useful when you don't have automatic CI/CD.","archived":false,"fork":false,"pushed_at":"2025-04-29T18:30:30.000Z","size":43,"stargazers_count":9,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-08T02:53:47.389Z","etag":null,"topics":["azure-devops","azure-pipeline","msbuild","powershell"],"latest_commit_sha":null,"homepage":"","language":"PowerShell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/damianczer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-07-11T13:15:55.000Z","updated_at":"2025-05-05T08:26:45.000Z","dependencies_parsed_at":"2025-03-21T15:29:30.997Z","dependency_job_id":"0d5fe3b4-1a79-4bbd-b3ff-4301ce6ed419","html_url":"https://github.com/damianczer/Azure-DevOps-MSBuild-Auto","commit_stats":null,"previous_names":["damianczer/azure-devops-msbuild-auto"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/damianczer%2FAzure-DevOps-MSBuild-Auto","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/damianczer%2FAzure-DevOps-MSBuild-Auto/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/damianczer%2FAzure-DevOps-MSBuild-Auto/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/damianczer%2FAzure-DevOps-MSBuild-Auto/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/damianczer","download_url":"https://codeload.github.com/damianczer/Azure-DevOps-MSBuild-Auto/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252989958,"owners_count":21836667,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["azure-devops","azure-pipeline","msbuild","powershell"],"created_at":"2025-05-08T02:53:50.251Z","updated_at":"2025-05-08T02:53:50.776Z","avatar_url":"https://github.com/damianczer.png","language":"PowerShell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Azure DevOps Pipeline Boost - replace for Docker Containers? (replace for not properly configured CI/CD)\n\n![GitHub stars](https://img.shields.io/github/stars/damianczer/azure-devops-msbuild-auto?style=social) \u003cbr\u003e\n![GitHub watchers](https://img.shields.io/github/watchers/damianczer/azure-devops-msbuild-auto?style=social) \u003cbr\u003e\n![GitHub issues](https://img.shields.io/github/issues/damianczer/azure-devops-msbuild-auto?style=flat-square) \u003cbr\u003e\n\n**Author:** [Damian Czerwiński](https://github.com/damianczer/)\n\n**Technology:** \n\u003cbr\u003e\u003cbr\u003e\nPowerShell  - https://learn.microsoft.com/en-us/powershell/ \u003cbr\u003e \n\nMSBuild - https://learn.microsoft.com/en-us/visualstudio/msbuild/?view=vs-2022 \u003cbr\u003e\n\nAzure DevOps \u0026 Pipeline - https://learn.microsoft.com/en-us/azure/devops/pipelines/get-started/what-is-azure-pipelines?view=azure-devops \u003cbr\u003e\n\nCI/CD - https://learn.microsoft.com/en-us/azure/devops/pipelines/architectures/devops-pipelines-baseline-architecture?view=azure-devops\n\nScript optimizes **CI/CD** and improves software delivery performance. **MsBuild** accepts as input a soluition file, which can contain up to hundreds of projects, this means that every attempt to deliver a software package to some host has to end with building the entire solution? \u003cbr\u003e\n\nEven if I have a small change in one project?\n\u003cbr\u003e\n\nWell, no!\u003cbr\u003e\n\nThe script detects what changes have occurred compared to the indicated branch, example: we are working on a **feature branch** - then we create a **pull request to the develop** and **from the develop we push(build)** the package to the server. So, the develop will compare to the **master** and build selected projects from the solution - those that need rebuilding. As it turns out, it speeds up the work a lot. \u003cbr\u003e\n\nThis solution has its conditions - **the main application may be in legacy projects where CI/CD does not work according to the art and there is no budget for its configuration**.\n\nIs just an example of a solution - it can be customized for the specifics of the project.\n\nDo you have a **BIG** solution? \u003cbr /\u003e\nMore than **100** projects? \u003cbr /\u003e\nDon't you use **Docker Containers** or **CI/CD** and have to build the whole solution? \u003cbr /\u003e\nDoes it take a lot of time to build the entire solution through **Pipeline Azure DevOps**? \u003cbr /\u003e\nAre you waiting more than **20 minutes** even the changes were minimal? \u003cbr /\u003e\n\nHere is the Solution! \u003cbr /\u003e\n\nBefore:\n\n![image](https://github.com/user-attachments/assets/8f72e8f9-7fcf-4d71-9df4-f183edb814d9)\n\nAfter:\n\n![image](https://github.com/user-attachments/assets/5e4e6e01-9a2e-46bd-8d34-cfdec00700ec)\n\n(Almost 20 minutes less)\n\nStep Configuration:\n\n![image](https://github.com/user-attachments/assets/446de0d0-5a15-41ef-8f04-c93038bb91e4)\n\nPipeline Variables:\n\n![image](https://github.com/user-attachments/assets/2106bb8b-8bea-4547-80a3-7f95292a5488)\n\nMSBuild Configuration:\n\n![image](https://github.com/user-attachments/assets/b4f653cf-312c-47dd-8bce-5c26afea8ac4)\n\nCall **MSBuild** inside **Build.proj** with our global variable (list of changed projects) instead of Solution File (.sln):\n\n![image](https://github.com/user-attachments/assets/72fd32b6-4f1c-41cb-b460-f48729d5b1bf)\n\nIf your deployment method allows you to _\"copy only changed files/projects/.dlls\"_ -\u003e **let's do it!** Don't build the whole soloution, build what has changed! If the projects are dependent on each other - references will be built! This is just a proposal for a solution/optimization of software delivery to the client server.\n\nEnjoy!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdamianczer%2Fazure-devops-msbuild-auto","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdamianczer%2Fazure-devops-msbuild-auto","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdamianczer%2Fazure-devops-msbuild-auto/lists"}