+
+def cours_factory():
+ path_env = {
+ "PATH": os.environ["BUILDBOT_PATH_Cours"] + ":${PATH}",
+ "CI": "yes"
+ }
+ 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)
+
+def normalesup_factory():
+ path_env = {
+ "PATH": os.environ["BUILDBOT_PATH_Normalesup"] + ":${PATH}"
+ }
+ factory = util.BuildFactory()
+ factory.addStep(steps.Git(logEnviron=False, repourl=E.NORMALESUP_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.ShellCommand(name="give read access to all files",
+ logEnviron=False, haltOnFailure=True, workdir="source",
+ command="chmod -R a+rX build", env=path_env))
+ factory.addStep(steps.ShellCommand(name="synchronize with phare",
+ logEnviron=False, haltOnFailure=True, workdir="source",
+ env=path_env, command=[
+ "rsync", "-av", "--delete",
+ "-e", "ssh -i {} -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o CheckHostIP=no".format(E.SSH_KEY_PATH),
+ "build/",
+ os.environ["BUILDBOT_NORMALESUP_HOST"]
+ ]))
+ factory.addStep(steps.MasterShellCommand(command="rm -rf {}".format(E.NORMALESUP_RELEASE_PATH)))
+ factory.addStep(steps.DirectoryUpload(workersrc="../source/build", masterdest=E.NORMALESUP_RELEASE_PATH,
+ url="https://www.immae.eu/recherche"))
+ factory.addStep(steps.MasterShellCommand(command="chmod -R a+rX {}".format(E.NORMALESUP_RELEASE_PATH)))
+
+ return util.BuilderConfig(name="Normalesup_build", workernames=["generic-worker-immae-eu"], factory=factory)
+
+def gsm_cells_factory():
+ path_env = {
+ "PATH": os.environ["BUILDBOT_PATH_GSMCells"] + ":${PATH}",
+ "IN_BUILDBOT": "yes",
+ }
+ master_env = {
+ "HTACCESS": '''
+ Options +FollowSymLinks
+ IndexIgnore *
+ '''
+ }
+ for k, v in os.environ.items():
+ if k.startswith("BUILDBOT_GSM_CELLS_"):
+ path_env[k[len("BUILDBOT_GSM_CELLS_"):]] = v
+
+ script = os.environ["BUILDBOT_PROJECT_DIR"] + "/scripts/lacells_download"
+ factory = util.BuildFactory()
+ factory.addStep(steps.ShellCommand(name="download files",
+ logEnviron=False, haltOnFailure=True, command=[script], env=path_env))
+ factory.addStep(steps.ShellCommand(name="give read access to all files",
+ logEnviron=False, haltOnFailure=True,
+ command="chmod a+r lacells.db", env=path_env))
+ factory.addStep(steps.FileUpload(workersrc="lacells.db",
+ masterdest=(E.GSMCELLS_RELEASE_PATH+"/lacells.db"), url=(E.GSMCELLS_RELEASE_URL+"/lacells.db")))
+ factory.addStep(steps.MasterShellCommand(command="touch {}/.duplicity-ignore".format(E.GSMCELLS_RELEASE_PATH)))
+ factory.addStep(steps.MasterShellCommand(command='echo "$HTACCESS" > {}/.htaccess'.format(E.GSMCELLS_RELEASE_PATH),
+ env=master_env))
+ factory.addStep(steps.MasterShellCommand(command="ln -sf lacells.db {}/lacells.db.new".format(E.GSMCELLS_RELEASE_PATH)))
+ factory.addStep(steps.MasterShellCommand(command="chmod -R a+rX {}".format(E.GSMCELLS_RELEASE_PATH)))
+
+ return util.BuilderConfig(name="GSMCells_build", workernames=["generic-worker-immae-eu"], factory=factory)