Skip to content

Commit

Permalink
chore: Use env vars for images in docker compose files
Browse files Browse the repository at this point in the history
* Allows us to trigger integration tests with images built in mender-qa
* Add dotenv library to load `.env` and expand it when getting the
  docker-compose data in release_tool.py

Ticket: QA-828

Signed-off-by: Daniel Skinstad Drabitzius <[email protected]>
  • Loading branch information
danielskinstad committed Jan 29, 2025
1 parent 26ca263 commit 3548c3c
Show file tree
Hide file tree
Showing 13 changed files with 46 additions and 17 deletions.
33 changes: 26 additions & 7 deletions .env
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,33 @@ MENDER_SERVER_REPOSITORY=mendersoftware
MENDER_SERVER_ENTERPRISE_REPOSITORY=mender-server-enterprise
MENDER_SERVER_TAG=main

# Artifacts from mender-gateway
MENDER_GATEWAY_REGISTRY=registry.mender.io
MENDER_GATEWAY_REPOSITORY=mendersoftware
MENDER_GATEWAY_TAG=master
MENDER_REGISTRY=registry.mender.io
MENDER_DOCKER_REGISTRY=docker.io
MENDER_CLIENT_REPOSITORY=mendersoftware

MENDER_CLIENT_DOCKER_IMAGE=mender-client-docker
MENDER_CLIENT_DOCKER_TAG=mender-master

MENDER_CLIENT_DOCKER_ADDONS_IMAGE=mender-client-docker-addons
MENDER_CLIENT_DOCKER_ADDONS_TAG=mender-master

MENDER_CLIENT_QEMU_IMAGE=mender-client-qemu
MENDER_CLIENT_QEMU_TAG=mender-master

MENDER_CLIENT_QEMU_ROFS_IMAGE=mender-client-qemu-rofs
MENDER_CLIENT_QEMU_ROFS_TAG=mender-master

# Virtual devices, built from mender-qa
MENDER_CLIENT_TAG=mender-master
MENDER_GATEWAY_QEMU_TAG=mender-master
MENDER_GATEWAY_QEMU_COMMERCIAL_IMAGE=mender-qemu-rofs-commercial
MENDER_GATEWAY_QEMU_COMMERCIAL_TAG=mender-master

MENDER_MONITOR_QEMU_COMMERCIAL_IMAGE=mender-monitor-qemu-commercial
MENDER_MONITOR_QEMU_COMMERCIAL_TAG=mender-master

MENDER_QEMU_ROFS_COMMERCIAL_IMAGE=mender-qemu-rofs-commercial
MENDER_QEMU_ROFS_COMMERCIAL_TAG=mender-master

MENDER_GATEWAY_IMAGE=mender-gateway
MENDER_GATEWAY_TAG=master

MENDER_ARTIFACT_VERSION=3.11.2

Expand Down
2 changes: 1 addition & 1 deletion docker-compose.client.rofs.commercial.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ services:
# mender-client
#
mender-client:
image: registry.mender.io/mendersoftware/mender-qemu-rofs-commercial:${MENDER_CLIENT_TAG}
image: ${MENDER_REGISTRY}/${MENDER_CLIENT_REPOSITORY}/${MENDER_QEMU_ROFS_COMMERCIAL_IMAGE}:${MENDER_QEMU_ROFS_COMMERCIAL_TAG}
2 changes: 1 addition & 1 deletion docker-compose.client.rofs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ services:
# mender-client
#
mender-client:
image: mendersoftware/mender-client-qemu-rofs:${MENDER_CLIENT_TAG}
image: ${MENDER_DOCKER_REGISTRY}/${MENDER_CLIENT_REPOSITORY}/${MENDER_CLIENT_QEMU_ROFS_IMAGE}:${MENDER_CLIENT_QEMU_ROFS_TAG}
2 changes: 1 addition & 1 deletion docker-compose.client.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ services:
# mender-client
#
mender-client:
image: mendersoftware/mender-client-qemu:${MENDER_CLIENT_TAG}
image: ${MENDER_DOCKER_REGISTRY}/${MENDER_CLIENT_REPOSITORY}/${MENDER_CLIENT_QEMU_IMAGE}:${MENDER_CLIENT_QEMU_TAG}
networks:
- mender
stdin_open: true
Expand Down
2 changes: 1 addition & 1 deletion docker-compose.docker-client.addons.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ services:

mender-client:
# Needs to be built in extra/mender-client-docker-addons
image: mendersoftware/mender-client-docker-addons:${MENDER_CLIENT_TAG}
image: ${MENDER_DOCKER_REGISTRY}/${MENDER_CLIENT_REPOSITORY}/${MENDER_CLIENT_DOCKER_ADDONS_IMAGE}:${MENDER_CLIENT_DOCKER_ADDONS_TAG}
networks:
- mender

Expand Down
2 changes: 1 addition & 1 deletion docker-compose.docker-client.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
services:
mender-client:
# Needs to be built in mender client's test directory.
image: mendersoftware/mender-client-docker:${MENDER_CLIENT_TAG}
image: ${MENDER_DOCKER_REGISTRY}/${MENDER_CLIENT_REPOSITORY}/${MENDER_CLIENT_DOCKER_IMAGE}:${MENDER_CLIENT_DOCKER_TAG}
networks:
- mender

Expand Down
2 changes: 1 addition & 1 deletion docker-compose.mender-gateway.commercial.demo.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ services:
# mender-client
#
mender-client:
image: mendersoftware/mender-client-qemu:${MENDER_CLIENT_TAG}
image: ${MENDER_DOCKER_REGISTRY}/${MENDER_CLIENT_REPOSITORY}/${MENDER_CLIENT_QEMU_IMAGE}:${MENDER_CLIENT_QEMU_TAG}
networks:
mender_local:
stdin_open: true
Expand Down
2 changes: 1 addition & 1 deletion docker-compose.mender-gateway.commercial.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ services:
# mender-gateway
#
mender-gateway:
image: registry.mender.io/mendersoftware/mender-gateway-qemu-commercial:${MENDER_GATEWAY_QEMU_TAG}
image: ${MENDER_REGISTRY}/${MENDER_CLIENT_REPOSITORY}/${MENDER_GATEWAY_QEMU_COMMERCIAL_IMAGE}:${MENDER_GATEWAY_QEMU_COMMERCIAL_TAG}
networks:
- mender
stdin_open: true
Expand Down
2 changes: 1 addition & 1 deletion docker-compose.monitor-client.commercial.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ services:
# monitor-client
#
mender-client:
image: registry.mender.io/mendersoftware/mender-monitor-qemu-commercial:${MENDER_CLIENT_TAG}
image: ${MENDER_REGISTRY}/${MENDER_CLIENT_REPOSITORY}/${MENDER_MONITOR_QEMU_COMMERCIAL_IMAGE}:${MENDER_MONITOR_QEMU_COMMERCIAL_TAG}
networks:
- mender
stdin_open: true
Expand Down
2 changes: 1 addition & 1 deletion extra/mtls/docker-compose.mtls-test.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
services:
mtls-gateway:
image: ${MENDER_GATEWAY_REGISTRY}/${MENDER_GATEWAY_REPOSITORY}/mender-gateway:${MENDER_GATEWAY_TAG}
image: ${MENDER_REGISTRY}/${MENDER_GATEWAY_REPOSITORY}/${MENDER_GATEWAY_IMAGE}:${MENDER_GATEWAY_TAG}
networks:
- mender
volumes:
Expand Down
9 changes: 8 additions & 1 deletion extra/release_tool.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@
import traceback
import datetime

from dotenv import load_dotenv

try:
import yaml
except ImportError:
Expand Down Expand Up @@ -454,8 +456,13 @@ def get_docker_compose_data_from_json_list(json_list):
data = {}
for json_str in json_list:
json_elem = yaml.safe_load(json_str)

# Load the environment set in .env
load_dotenv(os.path.join(integration_dir(), ".env"))
for container, cont_info in json_elem["services"].items():
full_image = cont_info.get("image")
# Expand the variables in cont_info with the loaded variables
expanded_cont_info = json.loads(os.path.expandvars(json.dumps(cont_info)))
full_image = expanded_cont_info.get("image")
if full_image is None or (
"mendersoftware" not in full_image and "mender.io" not in full_image
):
Expand Down
1 change: 1 addition & 0 deletions tests/requirements-python/python-requirements.in
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,4 @@ websockets==14.1
flaky==3.8.1
stripe==11.4.1
aiosmtpd==1.4.6
python-dotenv==1.0.1
2 changes: 2 additions & 0 deletions tests/requirements-python/python-requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,8 @@ pytest-xdist==3.6.1
# via -r python-requirements.in
python-dateutil==2.8.2
# via kubernetes
python-dotenv==1.0.1
# via -r python-requirements.in
pyyaml==6.0.1
# via kubernetes
redo==3.0.0
Expand Down

0 comments on commit 3548c3c

Please sign in to comment.