是否可以禁用TeamCity构建队列?如果作业已经运行,我不希望另一个队列(例如,如果由触发器启动)。我已经做了一些搜索,并没有看到阻止排队的方法。禁用TeamCity构建排队
回答
如果每个只有一个构建配置,则可以在同一个代理上运行它们,这样只有一个可以同时运行。但是,build 2会在build 1完成后运行,这是你不想要的。
下面是我如何解决这个问题。这有点丑,但很简单,并推广到许多构建配置:
选择一个特定的服务器。由于此服务器将确定构建是否运行,因此我们将其称为您的大门服务器。我们需要一个现在不存在的文件位置,它也不会被任何其他程序创建。说,例如,`/teamcity/.lock”
请与以下内容的生成配置:
lockFileLocation="/teamcity/.lock"
if [ -f $lockFileLocation ];
then
echo "oops, we're already running a build."
exit 1
else
echo "No build is running. Let's lock it up!"
touch $lockFileLocation
fi
对于Powershell的,那就是:
$lockFileLocation = "C:\teamcity\lock"
if(Test-Path $lockFileLocation)
{
echo "oops, we're already running a build."
exit 1
}
else
{
echo "No build is running. Let's lock it up!"
echo "lock'd!" > $lockFileLocation
}
,并确保建设设置为仅在代理门上运行代理。所以这个构建只有在它没有运行时才会成功。没有用。我们称之为锁。创建一个新的构建配置具有以下内容:
lockFileLocation="/teamcity/.lock"
if [ -f $lockFileLocation ];
then
echo "Build's over. You don't have to do home, but you can't stay here"
rm $lockFileLocation
else
echo "No build is running. How did we get here?"
exit 1
fi
对于Powershell的:
$lockFileLocation = "C:\teamcity\lock"
if(Test-Path $lockFileLocation)
{
echo "Build's over. You don't have to do home, but you can't stay here"
rm "$lockFileLocation"
}
else
{
echo "No build is running. How did we get here?"
exit 1
}
确保构建设置为仅在门运行,并构建将删除,如果它的文件存在。我们打电话给build 解锁。
很酷,现在我们可以运行锁来写这个文件,并且解锁来删除它。如果您运行锁两次没有运行解锁,第一次运行锁会通过,第二次将失败。尼斯。
但这对我们有什么帮助?假设您的构建是一个名为工作的单一构建配置。在工作上设置完成生成触发器,以便在锁定成功后运行。同样,在解锁上设置完成生成触发器,以便它在工作完成后运行,通过还是失败。即使您犯了错误的代码,我们也想解锁构建。
如果您的构建是一组构建配置,则您的构建内部需要通过快照依赖关系进行连接,而不是完成构建触发器。假设您的构建是两种构建配置:工作-A和工作-B。您首先要运行work-A,然后完成时,work-B。像往常一样设置快照相关性从work-B到work-A。然后,在解锁上设置完成生成触发器,当锁定通过时触发。设置快照依赖从解锁到工作-B,设置为“运行构建即使依赖失败这里的构建,其中向下的箭头是完成构建触发器的图,向上的箭头是快照的依赖。
+----+
|lock|
+----+ +------+
| |work-A|
| +------+
| ^
| |
| |
\ +------+
\ |work-B|
\ +------+
\ ^
\ |
v |
+------+
|unlock|
+------+
现在,当你打锁“运行”,将锁定身材,触发生成配置,然后解锁版本。点击“运行”一堆倍,既没有看到如何工作 - A也work-B排队等候
但这只是一组构建配置。你有两个。因此,将它们都设置为这种方式,确保它们查看同一个文件,并且都设置为仅在代理的大门上运行。
耶!我们完成了!但是请等待,为什么工作-A和工作-B需要通过快照依赖关系连接?好吧,让我们说构建如下:
+----+
|lock|
+----+
|
|
v
+------+
|work-A|
+------+
|
|
v
+------+
|work-B|
+------+
|
|
v
+------+
|unlock|
+------+
现在,如果有什么工作-A失败? work-B不会运行,所以也不会解锁。
注:从理论上说,可以按如下方式运行构建:
+----+
|lock|
+----+ +------+
\ |work-A|
\ +------+
\ ^
\ |
v |
+------+
|work-B|
+------+
|
|
v
+------+
|unlock|
+------+
这应该工作,但是我没有测试过,所以我不能给你所有的设置。
谢谢你在这里所有的方向,我会试试这个,并会在这里回应我的结果。 – user1904898
我无法找到动态禁用触发器或基于另一个状态有条件地运行一个构建的方法。
如果这两个工作是彼此不相关的,也许你可以配置它们在不同的代理上运行?这样他们可以在不干扰彼此的情况下运行。
这两个工作会互相干扰,所以我不能让他们一起跑。感谢您的关注。 – user1904898
- 1. TeamCity构建队列合并
- 2. 使用Powershell排队构建
- 3. TeamCity:为所有TeamCity项目禁用构建触发器
- 4. TeamCity的构建
- 5. msdeploy使用TeamCity构建 - ERROR_USER_NOT_ADMIN
- 6. 并行TeamCity构建
- 7. TeamCity构建日志
- 8. TeamCity - 禁止将构件发送回构建服务器
- 9. 如何禁用Teamcity为个人构建部署工件?
- 10. 在TeamCity中禁用构建之前可以清理吗?
- 11. TFS构建与代理的排队
- 12. 快捷方式排队新构建?
- 13. CircleCI:如何强制排队构建
- 14. 团队城市TeamCity中失败的构建触发器
- 15. 禁用排队C.执行用C
- 16. 使用TeamCity的用的MSBuild和构建
- 17. 从TeamCity下载构建
- 18. 监控TeamCity构建过程
- 19. TeamCity的构建链触发
- 20. TeamCity构建后行动
- 21. TeamCity快照构建配置
- 22. Teamcity自动构建配置
- 23. Teamcity Stop成功构建
- 24. 从TeamCity部署构建
- 25. TeamCity构建MSP文件
- 26. TeamCity的构建链配置
- 27. TeamCity的构建链问题
- 28. 。用TeamCity构建.Net核心版
- 29. 通过REST调用停止TeamCity构建
- 30. TeamCity不会使用NUnit类库构建
禁用触发器? –
通常不会有另一份工作在运行,触发器可以启动工作,但如果有工作,我不希望工作排队,这一切都发生在晚上。 – user1904898
它是什么样的触发器? –