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:
| M | buildbot/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")