taler-deployment

Deployment scripts and configuration files
Log | Files | Refs | README

commit 075cef1d6382842b864b78643d4fcc87bc286d0c
parent aebab24e3e3a7832700abb6e1c89d09e3238b8eb
Author: Iván Ávalos <avalos@disroot.org>
Date:   Thu,  6 Jun 2024 09:41:32 -0600

refactor container_add_step and add support for repo-specific inputs

Diffstat:
Mbuildbot/master.cfg | 78++++++++++++++++++++++++++++++++++++++----------------------------------------
1 file changed, 38 insertions(+), 40 deletions(-)

diff --git a/buildbot/master.cfg b/buildbot/master.cfg @@ -190,60 +190,57 @@ def container_add_step(HALT_ON_FAILURE, CONTAINER_NAME, factory, WORK_DIR, + repoName, stepName, CONTAINER_ARCH="amd64", jobCmd="/workdir/contrib/ci/ci.sh", containerFile="contrib/ci/Containerfile"): print(f"HALT_ON_FAILURE: {HALT_ON_FAILURE}, WARN_ON_FAILURE: {WARN_ON_FAILURE}, CONTAINER_BUILD: {CONTAINER_BUILD}, CONTAINER_NAME: {CONTAINER_NAME}") + + runCommand = ["podman", "run", "--rm", + "--arch", CONTAINER_ARCH, + "--log-driver=none", + "--add-host", "taler.host.internal:10.0.2.2", + "--network", "slirp4netns:allow_host_loopback=true", + "--env", util.Interpolate("CI_COMMIT_REF=%(prop:got_revision:-%(src::revision:-unknown)s)s"), + "--env", util.Interpolate("CI_GIT_BRANCH=%(src::branch)s"), + "--volume", f"{WORK_DIR}:/workdir", + "--volume", "/home/container-worker/container_artifacts:/artifacts", + "--volume", "/home/container-worker/mounted_files/ci_container_id_ed25519:/root/.ssh/id_ed25519:ro", + "--volume", "/home/container-worker/mounted_files/container_known_hosts:/root/.ssh/known_hosts:ro", + "--workdir", "/workdir"] + + # Inputs directory + inputs_path = f"/home/container-worker/container_inputs/{repoName}" + if os.path.isdir(inputs_path): + runCommand += ["--volume", f"{inputs_path}:/inputs:ro"] + + if CONTAINER_BUILD: + runCommand += ["--volume", f"/run/user/{pwd.getpwnam('container-worker').pw_uid}/podman/podman.sock:/run/podman/podman.sock", + "--security-opt", "label=disable"] + + runCommand += [CONTAINER_NAME, jobCmd] + + runArg = util.ShellArg(command=runCommand, + logname='run inside container', + haltOnFailure=HALT_ON_FAILURE) + + buildArg = util.ShellArg(command=["podman", "build", "-t", CONTAINER_NAME, + "--arch", CONTAINER_ARCH, + "-f", containerFile, "."], + logname='build container', haltOnFailure=True) + if not CONTAINER_BUILD: return steps.ShellSequence( name=stepName, - commands=[ - util.ShellArg(command=["podman", "run", "--rm", - "--arch", CONTAINER_ARCH, - "--log-driver=none", - "--add-host", "taler.host.internal:10.0.2.2", - "--network", "slirp4netns:allow_host_loopback=true", - "--env", util.Interpolate("CI_COMMIT_REF=%(prop:got_revision:-%(src::revision:-unknown)s)s"), - "--env", util.Interpolate("CI_GIT_BRANCH=%(src::branch)s"), - "--volume", f"{WORK_DIR}:/workdir", - "--volume", "/home/container-worker/container_artifacts:/artifacts", - "--volume", "/home/container-worker/mounted_files/ci_container_id_ed25519:/root/.ssh/id_ed25519:ro", - "--volume", "/home/container-worker/mounted_files/container_known_hosts:/root/.ssh/known_hosts:ro", - "--workdir", "/workdir", - CONTAINER_NAME, jobCmd], - logname='run inside container', - haltOnFailure=HALT_ON_FAILURE), - ], + commands=[runArg], haltOnFailure=HALT_ON_FAILURE, workdir=WORK_DIR ) else: return steps.ShellSequence( name=stepName, - commands=[ - util.ShellArg(command=["podman", "build", "-t", CONTAINER_NAME, - "--arch", CONTAINER_ARCH, - "-f", containerFile, "."], - logname='build container', haltOnFailure=True), - util.ShellArg(command=["podman", "run", "--rm", - "--arch", CONTAINER_ARCH, - "--log-driver=none", - "--add-host", "taler.host.internal:10.0.2.2", - "--network", "slirp4netns:allow_host_loopback=true", - "--env", util.Interpolate("CI_COMMIT_REF=%(prop:got_revision:-%(src::revision:-unknown)s)s"), - "--env", util.Interpolate("CI_GIT_BRANCH=%(src::branch)s"), - "--volume", f"{WORK_DIR}:/workdir", - "--volume", "/home/container-worker/container_artifacts:/artifacts", - "--volume", f"/run/user/{pwd.getpwnam('container-worker').pw_uid}/podman/podman.sock:/run/podman/podman.sock", - "--volume", "/home/container-worker/mounted_files/ci_container_id_ed25519:/root/.ssh/id_ed25519:ro", - "--volume", "/home/container-worker/mounted_files/container_known_hosts:/root/.ssh/known_hosts:ro", - "--security-opt", "label=disable", - "--workdir", "/workdir", - CONTAINER_NAME, jobCmd], - logname='run inside container', - haltOnFailure=HALT_ON_FAILURE), - ], + commands=[buildArg, runArg], haltOnFailure=HALT_ON_FAILURE, workdir=WORK_DIR ) @@ -521,6 +518,7 @@ class GenerateStagesCommand(buildstep.ShellMixin, steps.BuildStep): self.configDict[stage]["CONTAINER_NAME"], container_factory, CONTAINER_WORKDIR, + self.REPO_NAME, stage, self.configDict[stage]["CONTAINER_ARCH"], f"contrib/ci/jobs/{stage}/job.sh")