+def cours_factory():
+ path_env = {
+ "PATH": os.environ["BUILDBOT_PATH_Cours"] + ":${PATH}"
+ }
+ factory = util.BuildFactory()
+ factory.addStep(steps.Git(logEnviron=False, repourl=E.COURS_GIT_URL,
+ submodules=True, sshPrivateKey=open(E.SSH_KEY_PATH).read().rstrip(),
+ sshHostKey=E.SSH_HOST_KEY, mode="full", method="copy"))
+ factory.addStep(steps.ShellCommand(name="build website",
+ logEnviron=False, haltOnFailure=True, workdir="source",
+ command=["make", "build"], env=path_env))
+ factory.addStep(steps.MasterShellCommand(command="rm -rf {}".format(E.COURS_RELEASE_PATH)))
+ factory.addStep(steps.DirectoryUpload(workersrc="../source/build",
+ masterdest=E.COURS_RELEASE_PATH,
+ url="https://www.immae.eu/cours"))
+ factory.addStep(steps.MasterShellCommand(command="chmod -R a+rX {}".format(E.COURS_RELEASE_PATH)))
+
+ factory.addStep(steps.ShellCommand(name="build pdfs",
+ logEnviron=False, haltOnFailure=True, workdir="source",
+ command=["make", "pdfs"], env=path_env))
+
+ package = util.Interpolate("cours_%(kw:clean_branch)s.tar.gz", clean_branch=clean_branch)
+ release_file = "{0}/cours_%(kw:clean_branch)s.tar.gz"
+ package_dest = util.Interpolate(release_file.format(E.COURS_TARBALL_PATH), clean_branch=clean_branch)
+ package_url = util.Interpolate(release_file.format(E.COURS_TARBALL_URL), clean_branch=clean_branch)
+ factory.addStep(steps.ShellCommand(name="build pdf tarball",
+ logEnviron=False, haltOnFailure=True, workdir="source",
+ command=["tar", "-cvf", package, "-C", "pdfs", "mp", "mpsi"], env=path_env))
+ factory.addStep(steps.FileUpload(name="upload package", workersrc=package,
+ workdir="source", masterdest=package_dest,
+ url=package_url, mode=0o644))
+
+ return util.BuilderConfig(name="Cours_build", workernames=["generic-worker-immae-eu"], factory=factory)
+