taskotron: prevent duplicate jobs in buildmaster config
There was one remaining case when duplicate jobs could crash the job - when the tasks were not run simmultanously at all. I added another guard at the final location of the artifacts, which should hopefully solve it.
This commit is contained in:
parent
09ae58534c
commit
111fc1805c
1 changed files with 22 additions and 9 deletions
|
@ -241,6 +241,15 @@ factory.addStep(steps.DirectoryUpload(
|
||||||
descriptionDone='Copy artifacts',
|
descriptionDone='Copy artifacts',
|
||||||
))
|
))
|
||||||
|
|
||||||
|
{% if deployment_type in ['local'] %}
|
||||||
|
# copy taskotron log to master
|
||||||
|
factory.addStep(steps.FileUpload(
|
||||||
|
workersrc='/var/log/taskotron/taskotron.log',
|
||||||
|
masterdest=util.Interpolate('{{ public_artifacts_dir }}/%(prop:uuid)s/taskotron.log'),
|
||||||
|
mode=0644,
|
||||||
|
))
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
# save stdio from runtask step
|
# save stdio from runtask step
|
||||||
# FIXME: worked with buildbot 0.8, later buildbots changed URLs
|
# FIXME: worked with buildbot 0.8, later buildbots changed URLs
|
||||||
# factory.addStep(steps.MasterShellCommand(
|
# factory.addStep(steps.MasterShellCommand(
|
||||||
|
@ -263,15 +272,6 @@ factory.addStep(steps.MasterShellCommand(
|
||||||
descriptionDone='Compress artifacs',
|
descriptionDone='Compress artifacs',
|
||||||
))
|
))
|
||||||
|
|
||||||
{% if deployment_type in ['local'] %}
|
|
||||||
# copy taskotron log to master
|
|
||||||
factory.addStep(steps.FileUpload(
|
|
||||||
workersrc='/var/log/taskotron/taskotron.log',
|
|
||||||
masterdest=util.Interpolate('{{ public_artifacts_dir }}/%(prop:uuid)s/taskotron.log'),
|
|
||||||
mode=0644,
|
|
||||||
))
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
# render current time when needed
|
# render current time when needed
|
||||||
import datetime
|
import datetime
|
||||||
from buildbot.process.properties import renderer
|
from buildbot.process.properties import renderer
|
||||||
|
@ -280,6 +280,19 @@ from buildbot.process.properties import renderer
|
||||||
def today(props):
|
def today(props):
|
||||||
return datetime.datetime.now().strftime("%Y%m%d")
|
return datetime.datetime.now().strftime("%Y%m%d")
|
||||||
|
|
||||||
|
# prevent duplicated buildbot jobs
|
||||||
|
# (see https://pagure.io/taskotron/issue/273 )
|
||||||
|
factory.addStep(steps.MasterShellCommand(
|
||||||
|
command=util.Interpolate(
|
||||||
|
'test -d {{ public_artifacts_dir }}/%(kw:today)s/%(prop:uuid)s/ || '
|
||||||
|
'( echo Multiple jobs with same UUID detected, aborting execution!; '
|
||||||
|
' echo See https://pagure.io/taskotron/issue/273 ; '
|
||||||
|
' exit 1 )'
|
||||||
|
),
|
||||||
|
descriptionDone='Check duplicate jobs',
|
||||||
|
haltOnFailure=True,
|
||||||
|
))
|
||||||
|
|
||||||
# move the artifacts to the correct dir on the master
|
# move the artifacts to the correct dir on the master
|
||||||
factory.addStep(steps.MasterShellCommand(
|
factory.addStep(steps.MasterShellCommand(
|
||||||
command=util.Interpolate(
|
command=util.Interpolate(
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue