我有这个特殊的设置,我想将其包含在VSTS中,并进行持续集成+持续部署。为了简单起见,我将情况简化为以下设置:
我有两个解决方案A和B,它们分别位于单独的Git存储库中。解决方案A的一个项目A1引用了解决方案B的一个项目B1。由于这是出于演示目的的简化案例,因此,我们假定无法合并Git存储库!
现在,我正在为项目A1设置CI。该项目的构建显然失败了,因为无法解析对B1的依赖性。
到目前为止,我已经针对我的案子搜索了两种解决方案,这两种方法都令我不高兴:
我还将在VSTS中为B1建立CI管道。
我想我正在寻找一种使用VSTS的“引用路径”来查找从另一个CI管道构建的依赖项的方法。 VSTS项目是否有一种共享的“ bin”空间?在A1构建之前,我会自动将构建的二进制文件从B1复制到A1。
有什么好的方法可以做到这一点吗?现在,我正在考虑一种后置/预建FTP /云推/拉解决方案,但是鉴于我的情况(对不同Git存储库的依赖)应该很常见,解决方案是什么?
答案 0 :(得分:1)
如果您不想通过NuGet软件包管理@Service(Author)
abstract class AuthorService {
@Query("""
select auth from ${Author auth} where auth.id in (
select a.id
from ${Book b} join ${b.author} a
group by a.numberOfKnownBooks, a.id
having count(*) = a.numberOfKnownBooks
)
""")
abstract List<Author> retrieveCompleteAuthors()
}
,则可以使用其他选项。
假设projectB1
在solutionB
中进行管理,而repoB
中的文件结构如下:
repoB
在构建定义的开头,您可以添加 PowerShell任务以克隆存储库。 PowerShell脚本如下:
repoB
|___solutionB
|___projectB1
|___...
|___...
|___...
要确保首先构建# If you are using private agent to build and clean source is false, you should check if the repoB folder exist or not
git clone https://Personal%20Access%20Token:{PAT}@{account}.visualstudio.com/{project}/_git/repoB
,可以使用两个VS构建任务。第一个用于构建solutionB
(solutionB
),第二个用于构建repoB/*.sln
(solutionA
)。
如果您想将**/solutionA.sln
添加为repoB
的子模块,则可以通过以下方式添加repoA
作为repoB
的子模块:
repoA
然后提交并将更改推送到远程git submodule add https://{account}.visualstudio.com/{project}/_git/repoB
。
注意:您还需要首先添加另一个VS Build任务来构建solutionB。
类似于子模子,您可以通过以下方式将repoA
的分支(例如master
)添加到repoB
中:
repoA