Cross-AppVeyor/GitHub dependencies
I have 2 GitHub projects that I am using with AV's VisualStudio build support (thanks!), call them A and B.
A is "stand-alone", it is a simple C++ lib with its own test routine(s)... this works with AV, cool.
B is another more complex library that has a dependency on A at the sln/vcxproj level - and *expects* build-wise to see A as a "sibling" project in the file tree.
I currently have no use of NuGet, BTW... what is the right model to adopt so that AV is able to build B's sln that refers to the A vcxproj?
I can see that this may involve the "Clone directory" setting in both projects, and maybe the "Cached directories" setting in both too, but this doesn't look like it would be enough to logically reflect the *build* dependency/ordering?
Comments are currently closed for this discussion. You can start a new one.
Keyboard shortcuts
Generic
? | Show this help |
---|---|
ESC | Blurs the current field |
Comment Form
r | Focus the comment reply box |
---|---|
^ + ↩ | Submit the comment |
You can use Command ⌘
instead of Control ^
on Mac
1 Posted by Ilya Finkelshte... on 20 Jul, 2016 03:18 AM
Hi Robert,
What do you think about the following scenario?
1. Project A uploads artifacts during a build (http://www.appveyor.com/docs/packaging-artifacts).
2. Project A starts build of project B after successful build using on build success script. Script can be PowerShell or AppVeyor command line (http://www.appveyor.com/docs/build-worker-api#start-new-build).
3. Project B uploads artifacts created by project A using before build script (example of this script - http://www.appveyor.com/docs/api/samples/download-artifacts-ps).
If you want I can prepare working example for you tomorrow.
Also you can try to go other way around (project B’s build job starts build of project A before its own build), but this will require 2 parallel build jobs and B’s job and VM will wait idle for A’s build without a good reason.
Hope this helps.
--Ilya.
2 Posted by robertr on 20 Jul, 2016 04:12 AM
Hi Ilya,
Thanks so much for the offer of assistance... but in the absence of pretty much anything (besides possibly the "Account Feed" NuGet support) that explicitly allows for expressing dependencies between multiple AV projects, solutions like this - though likely workable - seem like cruel and unusual abuse of the AV architecture. ;)
I had sort of hoped that as a new user, I was missing something that would enable what I am looking for - which doesn't seem like a bizarre or "out there" need.
If I could even sequentially add multiple projects to the same VM, I could then just use the "Clone Directory" environmental feature to clone both projects to sibling folder trees, and the rest would almost work - without having to support explicit "relationships" between multiple projects - but I would still need to be able to use the this SLN capability, to have the larger project control the building of the dep.
3 Posted by Ilya Finkelshte... on 21 Jul, 2016 09:48 AM
OK, another option is to write simple script which will clone A’s repo and build it right from the B’s build job.
The only question is how B’s job will be authorized to clone A’s repo. For that you can move B’s project SSH key to account level at GitHub. After that B’s job will have access to all repos in this account.
To do this:
1. On Appveyor, open project B, open Settings and copy SSH public key
2. On GitHub, open project B, open Settings, go to Deploy keys and delete AppVeyor project tools key
3. On GitHub, open account settings, go to SSH and GPG keys and add new SSL Key by pasting key copied in step 1.
After this proposed side-by-side clone and build should work.
Ilya Finkelshteyn closed this discussion on 25 Aug, 2018 02:07 AM.