Ich schreibe einen Pytest, der durch gemeinsame Speicher mit Docker -Containern mitgeteilt werden soll. Lokal ist das ziemlich einfach zu erreichen, um so etwas zu verwenden: < /p>
# Create a shared memory block
shm: SharedMemory = SharedMemory(create=True, name=shm_name, size=1e6)
# Create a docker mount for the shared memory
shm_mount = docker.types.Mount(source="/dev/shm", target="/dev/shm", type="bind")
# Run a container with access to the shared memory
client.containers.run(
image="alpine",
name="my_container",
detach=True,
remove=True,
command="tail -f /dev/null",
mounts=[shm_mount],
environment={
"SHM_NAME": shm_name
}
)
< /code>
Jetzt, wo der Test in einem GitLab -Läufer ausgeführt wird. Um den Docker SDK zu verwenden, verwende ich eine Docker-in-Docker-Konfiguration wie folgt:unittest:
image:
name: docker:27.0.2
pull_policy: if-not-present
tags:
- general-runner-dind
services:
- name: docker:27.0.2-dind
alias: docker-service
command: [dockerd-entrypoint.sh, --tls=0]
variables:
DOCKER_HOST: tcp://docker-service:2375
DOCKER_TLS_CERTDIR: ""
FF_NETWORK_PER_BUILD: "true"
before_script:
- apk update && apk upgrade && apk add --no-cache python3 python3-dev py3-pip curl
- curl -LsSf https://astral.sh/uv/0.6.17/install.sh | sh
- source $HOME/.local/bin/env
script:
- cd /path/to/project
- uv sync --frozen
- uv run --no-sync pytest
< /code>
Also läuft PyTest jetzt in einem Docker -Bild. Darüber hinaus ist die Steuerung der Parameter, mit der der Container in PyTest ausgeführt wird, eher begrenzt. Dinge, die ich versucht habe, ein gemeinsames Speicher in PyTest zu schreiben und mit anderen Docker -Containern mit dem Docker SDK zu teilen:
Erkennen Sie die Container -ID des PyTest -Containers und [url=viewtopic.php?t=23808]übergeben[/url] Sie diese an ipc_mode
option von docer. class = "Lang-Py PrettyPrint-Override">
cid = get_container_id() # Some logic to get the container ID.
shm: SharedMemory = SharedMemory(create=True, name=shm_name, size=1e6)
if cid is None:
# Running on host
shm_mount = docker.types.Mount(source="/dev/shm", target="/dev/shm", type="bind")
mounts = [shm_mount]
ipc_mode = None
else:
# Running inside docker
mounts = []
ipc_mode = f"container:{cid}"
client.containers.run(
image="alpine",
name="my_container",
detach=True,
remove=True,
command="tail -f /dev/null",
mounts=mounts,
ipc_mode=ipc_mode
environment={
"SHM_NAME": shm_name
}
)
< /code>
Dies funktioniert nicht, da das Docker-in-Docker-Setup auf GitLab ziemlich spezialisiert zu sein scheint und alle Mittel, um die Container-ID zu erhalten/.dockerenv
existiert nicht oder/proc/self/cgroup (cgroups v1)/
/proc/self/mountinfo< /code> (cgroups v2) scheint die Docker-Container-ID nicht zu enthalten).ipc_anchor = client.containers.run(
image="alpine",
name=ipc_anchor_name,
detach=True,
remove=True,
command="tail -f /dev/null",
ipc_mode="shareable",
)
ipc_mode = f"container:{ipc_anchor.id}"
Obwohl diese Option vielversprechend aussieht, ist es mir unklar, wie man den gemeinsam genutzten Speicher von PyTest zum Schreiben erreicht (mit SharedMemory (create = false, shm_name = ...) ). Oder ein anderer Ansatz, den ich noch fehlen könnte?
Ich schreibe einen Pytest, der durch gemeinsame Speicher mit Docker -Containern mitgeteilt werden soll. Lokal ist das ziemlich einfach zu erreichen, um so etwas zu verwenden: < /p> [code]# Create a shared memory block shm: SharedMemory = SharedMemory(create=True, name=shm_name, size=1e6) # Create a docker mount for the shared memory shm_mount = docker.types.Mount(source="/dev/shm", target="/dev/shm", type="bind") # Run a container with access to the shared memory client.containers.run( image="alpine", name="my_container", detach=True, remove=True, command="tail -f /dev/null", mounts=[shm_mount], environment={ "SHM_NAME": shm_name } ) < /code> Jetzt, wo der Test in einem GitLab -Läufer ausgeführt wird. Um den Docker SDK zu verwenden, verwende ich eine Docker-in-Docker-Konfiguration wie folgt:unittest: image: name: docker:27.0.2 pull_policy: if-not-present tags: - general-runner-dind services: - name: docker:27.0.2-dind alias: docker-service command: [dockerd-entrypoint.sh, --tls=0] variables: DOCKER_HOST: tcp://docker-service:2375 DOCKER_TLS_CERTDIR: "" FF_NETWORK_PER_BUILD: "true" before_script: - apk update && apk upgrade && apk add --no-cache python3 python3-dev py3-pip curl - curl -LsSf https://astral.sh/uv/0.6.17/install.sh | sh - source $HOME/.local/bin/env script: - cd /path/to/project - uv sync --frozen - uv run --no-sync pytest < /code> Also läuft PyTest jetzt in einem Docker -Bild. Darüber hinaus ist die Steuerung der Parameter, mit der der Container in PyTest ausgeführt wird, eher begrenzt. Dinge, die ich versucht habe, ein gemeinsames Speicher in PyTest zu schreiben und mit anderen Docker -Containern mit dem Docker SDK zu teilen:
Erkennen Sie die Container -ID des PyTest -Containers und [url=viewtopic.php?t=23808]übergeben[/url] Sie diese an ipc_mode [/code] option von docer. class = "Lang-Py PrettyPrint-Override">[code]cid = get_container_id() # Some logic to get the container ID. shm: SharedMemory = SharedMemory(create=True, name=shm_name, size=1e6) if cid is None: # Running on host shm_mount = docker.types.Mount(source="/dev/shm", target="/dev/shm", type="bind") mounts = [shm_mount] ipc_mode = None else: # Running inside docker mounts = [] ipc_mode = f"container:{cid}" client.containers.run( image="alpine", name="my_container", detach=True, remove=True, command="tail -f /dev/null", mounts=mounts, ipc_mode=ipc_mode environment={ "SHM_NAME": shm_name } ) < /code> Dies funktioniert nicht, da das Docker-in-Docker-Setup auf GitLab ziemlich spezialisiert zu sein scheint und alle Mittel, um die Container-ID zu erhalten/.dockerenv[/code] existiert nicht oder/proc/self/cgroup (cgroups v1)/[code]/proc/self/mountinfo< /code> (cgroups v2) scheint die Docker-Container-ID nicht zu enthalten).ipc_anchor = client.containers.run( image="alpine", name=ipc_anchor_name, detach=True, remove=True, command="tail -f /dev/null", ipc_mode="shareable", ) ipc_mode = f"container:{ipc_anchor.id}" [/code] Obwohl diese Option vielversprechend aussieht, ist es mir unklar, wie man den gemeinsam genutzten Speicher von PyTest zum Schreiben erreicht (mit SharedMemory (create = false, shm_name = ...) ). Oder ein anderer Ansatz, den ich noch fehlen könnte?
Ich bin also ziemlich neu bei MRJOB, also sei bitte nicht unhöflich.
Ich habe versucht in 3 Textdateien; Ich erhalte jedoch immer den gleichen Fehler: Keine Konfigurationen für Inline -Läufer , kann...
Ich erhalte diesen Fehler beim Ausführen meiner Flutter -App in Xcode, nachdem ich die WatchOS -App hinzugefügt habe. Das Gebäude könnte unzuverlässige Ergebnisse erzielen....
Ein Neuling hier habe ich die Erweiterung Python und Code Runner in VS -Code installiert und jedes Mal, wenn ich ein Python -Programm ausführe, indem ich auf den richtigen Pfeil (Run -Code) klicke,...
Ich versuche, mein Dramatiker-Python-Projekt auf Gitlab mit einem Python-Docker-Image auszuführen. Ich habe es geschafft, dies zum Laufen zu bringen. Ich verwende Allure, um den Bericht zu...
Ich muss JMeter in das GitLab -Repository mit einem Java Springboot -Anwendungscode in derselben Filiale integrieren. So wie ich JMeter -Bericht für jedes Mal erstellt werden muss, wenn die Anfrage...