diff --git a/builders.py b/builders.py
index 721adc5..40873a7 100644
--- a/builders.py
+++ b/builders.py
@@ -7,7 +7,7 @@ from buildbot.plugins import *
 from yoctoabb import config
 from yoctoabb.steps.writelayerinfo import WriteLayerInfo
 from yoctoabb.steps.writebbsetupjson import WriteBBSetupJson
-from yoctoabb.steps.runconfig import get_publish_dest, get_publish_resultdir, get_publish_name, RunConfigCheckSteps, TargetPresent
+from yoctoabb.steps.runconfig import get_publish_dest, get_publish_resultdir, get_publish_name, RunConfigCheckSteps, TargetPresent, CheckReleaseDir
 from buildbot.process.results import Results, SUCCESS, FAILURE, CANCELLED, WARNINGS, SKIPPED, EXCEPTION, RETRY
 from buildbot.process.remotecommand import RemoteCommand
 from buildbot.data import resultspec
@@ -317,6 +317,7 @@ def create_parent_builder_factory(buildername, waitname):
         mode='incremental',
         haltOnFailure=True,
         name='Fetch yocto-autobuilder-helper'))
+    factory.addStep(CheckReleaseDir(haltOnFailure=True))
     factory.addStep(WriteLayerInfo(name='Write main layerinfo.json', haltOnFailure=True))
     factory.addStep(WriteBBSetupJson(name='Write bbsetup-overrides.json', haltOnFailure=True))
     factory.addStep(steps.ShellCommand(
diff --git a/steps/runconfig.py b/steps/runconfig.py
index 18cdd7a..d52c7cd 100644
--- a/steps/runconfig.py
+++ b/steps/runconfig.py
@@ -237,3 +237,24 @@ class TargetPresent(shell.ShellCommand):
         cmd = yield self.makeRemoteShellCommand()
         yield self.runCommand(cmd)
         return self.evaluateCommand(cmd)
+
+class CheckReleaseDir(buildstep.BuildStep):
+    name = "Check if release directory already exists"
+    description = ["checking release directory"]
+    descriptionDone = ["checked release directory"]
+
+    def __init__(self, **kwargs):
+        buildstep.BuildStep.__init__(self, **kwargs)
+
+    @defer.inlineCallbacks
+    def run(self):
+        is_release = self.getProperty("is_release", False)
+        deploy_artefacts = self.getProperty("deploy_artefacts", False)
+        if is_release and deploy_artefacts:
+            dest = get_publish_internal(self.build.properties)
+            if dest and os.path.exists(dest):
+                self.descriptionDone = [f"Release directory {dest} already exists!"]
+                yield add_to_log(self, "error", f"Release directory already exists: {dest}\n")
+                return FAILURE
+        return SUCCESS
+
