How to setup submodules Azure DevOps
Asked Answered
U

2

13

Can somebody clarify how SubModule works in azure devops

MyDevOps Root Folder

I have a Solution called MyCore.sln containing 4-5 projects

I have my Main Solution called MyMain.sln containing another 4-5 projects project referencing MyCore.sln projects

  • It all compiles and works locally but fails when building in azure devops

  • Gone into MyMain.sln folder in powershell and executed as follows

  • executed as follows git submodule add https://[email protected]/MyGroup/MyProjec/_git/MyCore

  • I can now see a folder inside my Main Repo called MyCore with projects inside and I start reference them
  • I can see .gitmodules file

    However when I go and build the pipeline it cannot find the projects that are referenced (belonging to myCore repo)

Am I missing the obvious?

Are there any comprehensive instructions on how to setup submodules in azure devops?

Can I visualize this anywhere?

Unfasten answered 4/12, 2018 at 16:4 Comment(2)
It depends on what kind of submodules they are, as on your own machine, any user credentials can come as easy as breeze, while on Azure DevOps everything needs to be configured explicitly (one example blog.lextudio.com/…).Tremain
@LexLi thanks for that! It was a little helpful to understand that finding.Keshiakesia
M
19

In the advanced section of the Get Sources step you need to enable the Checkout Submodules option.

enter image description here

If you're using YAML builds, you need to add:

steps:
- checkout: self
  submodules: true

As to your follow-up questions:

Where should I put my solution files

Ideally, you'd have a single solution, since you expect these projects to build together. Having multiple solutions will be awkward. If you want to share the components from one solution, you are probably better off publishing the projects from your 2nd repo as NuGet packages.

Mays answered 4/12, 2018 at 16:9 Comment(7)
Hi thanks for quick reply. Forgot to mention but I did that and still my pipeline fails.Unfasten
thanks for your reply. I will try to put some logs (work stuff not sure) . The logs say that cannot find the referenced projects which leads me to a question. Should the repo that has a reference to the submodules contain the actual physical projects in both repos? Or should just contain a link to the submodules repo?Unfasten
Depends on the solution file. That's what tells the project system which project is stored where.Mays
Each .*proj file and *.sln file should be stored in one repository and one repository only.Mays
just to clarify I have 2 repos "MyCore Repo" and "MyMain Repo" (fictious names) simplified for clarity. I want to add "MyCore Repo" as a submodule to My Main repo so each repo will have their own solution. kind of confused about your last comment. Sorry . Appreciate time on your side to explain.Unfasten
This UI seems to have changed, where does this live now?Swarts
@AndrewBullock for UI based builds, the option still lives there. yaml based builds, see update.Mays
G
2

Go Project Settings=>Settings(The project where your pipeline exists), disable these two limitations: enter image description here

Giantess answered 15/7, 2023 at 10:17 Comment(1)
This is also described in the microsoft documentation here.Medovich

© 2022 - 2024 — McMap. All rights reserved.