*   release_id string: release identifier
 *   name string: project name
 *   default_results table: list of results to build by default
+*   deploy_results table: list of results to deploy to archive in release mode
 
 The table may specify the following additional keys:
 
         name = "foo",
         release_id = "foo-1.0beta",
         default_results = { "foo" },
+        deploy_results = {
+                "bar",
+        },
         chroot_arch = "x86_32",
     }
 
 
     e2lib.logf(1, "deployment disabled for this build mode")
     return true
   end
+  if not res._deploy then
+    e2lib.logf(1, "deployment disabled for this result")
+    return true
+  end
   local files = {}
   for f in e2lib.directory("result/files") do
     table.insert(files, string.format("files/%s", f))
 
                "default_results ist not set. Defaulting to empty list.")
     info.project.default_results = {}
   end
+  rc, re = listofstrings(info.project.deploy_results, true, true)
+  if not rc then
+    e:append("deploy_results ist not a valid list of strings")
+    e:cat(re)
+  end
   rc, re = listofstrings(info.project.default_results, true, false)
   if not rc then
     e:append("default_results ist not a valid list of strings")
       e:append("default_results: No such result: %s", r)
     end
   end
+  for _, r in ipairs(info.project.deploy_results) do
+    if not info.results[r] then
+      e:append("deploy_results: No such result: %s", r)
+    end
+  end
   if e:getcount() > 1 then
     return false, e
   end
                res.bn = {}
                res.buildno = "0"
        end
+       for _,r in ipairs(info.project.deploy_results) do
+               if r == resultname then
+                       res._deploy = true
+                       break
+               end
+       end
        local build_script = string.format("%s/%s", info.root,
                resultbuildscript(info.results[resultname].directory))
        if not e2lib.isfile(build_script) then