From c1f3600889647e739bef1ea144436dc789e8d4e7 Mon Sep 17 00:00:00 2001 From: Benjamin Pelletier Date: Wed, 13 May 2026 23:12:29 +0000 Subject: [PATCH 1/5] Separate image-dev from image --- Makefile | 10 ++++--- monitoring/.gitignore | 1 + monitoring/Makefile | 3 +++ monitoring/build.sh | 10 +------ monitoring/build_dev.sh | 26 +++++++++++++++++++ .../scripts/format_test_documentation.sh | 2 +- .../scripts/format_test_suite_docs.sh | 2 +- .../scripts/validate_test_definitions.sh | 2 +- schemas/manage_type_schemas.sh | 4 +-- 9 files changed, 43 insertions(+), 17 deletions(-) create mode 100755 monitoring/build_dev.sh diff --git a/Makefile b/Makefile index 429da9e84a..6abbfde413 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ else endif .PHONY: format -format: image +format: image-dev docker run --rm -u ${USER_GROUP} -v "$(CURDIR):/app" -w /app interuss/monitoring-dev uv run ruff format docker run --rm -u ${USER_GROUP} -v "$(CURDIR):/app" -w /app interuss/monitoring-dev uv run ruff check --fix docker run --rm -u ${USER_GROUP} -v "$(CURDIR):/app" -w /app interuss/monitoring-dev uv run basedpyright @@ -23,11 +23,11 @@ lint: shell-lint python-lint cd schemas && make lint .PHONY: check-hygiene -check-hygiene: image lint validate-uss-qualifier-docs +check-hygiene: image-dev lint validate-uss-qualifier-docs test/repo_hygiene/repo_hygiene.sh .PHONY: python-lint -python-lint: image +python-lint: image-dev docker run --rm -u ${USER_GROUP} -v "$(CURDIR):/app" -w /app interuss/monitoring-dev uv run ruff format --check || (echo "Linter didn't succeed. You can use the following command to fix python linter issues: make format" && exit 1) docker run --rm -u ${USER_GROUP} -v "$(CURDIR):/app" -w /app interuss/monitoring-dev uv run ruff check || (echo "Linter didn't succeed. You can use the following command to fix python linter issues: make format" && exit 1) @@ -52,6 +52,10 @@ unit-test: image: cd monitoring && make image +.PHONY: image-dev +image-dev: + cd monitoring && make image-dev + tag: scripts/tag.sh $(UPSTREAM_OWNER)/monitoring/v$(VERSION) diff --git a/monitoring/.gitignore b/monitoring/.gitignore index 73f2ddb3e4..497e8e6048 100644 --- a/monitoring/.gitignore +++ b/monitoring/.gitignore @@ -5,3 +5,4 @@ run_locally_scd_deploy_others.sh # Make target placeholders image +image-dev diff --git a/monitoring/Makefile b/monitoring/Makefile index 4d66f0659d..ee9595632d 100644 --- a/monitoring/Makefile +++ b/monitoring/Makefile @@ -14,6 +14,9 @@ unit-test: image: ../uv.lock ../pyproject.toml $(shell find . -type f ! -path "*/output/*" ! -name image ! -name *.pyc) $(shell find ../interfaces -type f) ./build.sh +image-dev: ../uv.lock ../pyproject.toml $(shell find . -type f ! -path "*/output/*" ! -name image ! -name *.pyc) $(shell find ../interfaces -type f) + ./build_dev.sh + .PHONY: test test: cd mock_uss && make test diff --git a/monitoring/build.sh b/monitoring/build.sh index 871ffd81e7..136ca42938 100755 --- a/monitoring/build.sh +++ b/monitoring/build.sh @@ -23,12 +23,4 @@ docker image build \ . \ || exit 1 -docker image build \ - -f monitoring/Dockerfile \ - -t "${TAG}-dev" \ - --build-arg version="$(scripts/git/version.sh monitoring --long)" \ - --build-arg commit_hash="$(git rev-parse HEAD)" \ - --target with-dev-dependencies \ - . \ - || exit 1 -echo "File created by monitoring/build.sh to keep track of the latest build run date time." > monitoring/image +echo "File created by monitoring/build.sh to keep track of the latest normal image build run date time." > monitoring/image diff --git a/monitoring/build_dev.sh b/monitoring/build_dev.sh new file mode 100755 index 0000000000..772c9ee9e2 --- /dev/null +++ b/monitoring/build_dev.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +set -eo pipefail + +# Find and change to repo root directory +OS=$(uname) +if [[ "$OS" == "Darwin" ]]; then + # OSX uses BSD readlink + BASEDIR="$(dirname "$0")" +else + BASEDIR=$(readlink -e "$(dirname "$0")") +fi +cd "${BASEDIR}/.." || exit 1 + +TAG="${1:-interuss/monitoring}" + +docker image build \ + -f monitoring/Dockerfile \ + -t "${TAG}-dev" \ + --build-arg version="$(scripts/git/version.sh monitoring --long)" \ + --build-arg commit_hash="$(git rev-parse HEAD)" \ + --target with-dev-dependencies \ + . \ + || exit 1 + +echo "File created by monitoring/build_dev.sh to keep track of the latest dev image build run date time." > monitoring/image-dev diff --git a/monitoring/uss_qualifier/scripts/format_test_documentation.sh b/monitoring/uss_qualifier/scripts/format_test_documentation.sh index e48f861a7b..87fcf63ad9 100755 --- a/monitoring/uss_qualifier/scripts/format_test_documentation.sh +++ b/monitoring/uss_qualifier/scripts/format_test_documentation.sh @@ -15,7 +15,7 @@ cd "${BASEDIR}/../../.." || exit 1 ( cd monitoring || exit 1 -make image +make image-dev ) # shellcheck disable=SC2086 diff --git a/monitoring/uss_qualifier/scripts/format_test_suite_docs.sh b/monitoring/uss_qualifier/scripts/format_test_suite_docs.sh index 9e0adfd073..82374a0de8 100755 --- a/monitoring/uss_qualifier/scripts/format_test_suite_docs.sh +++ b/monitoring/uss_qualifier/scripts/format_test_suite_docs.sh @@ -15,7 +15,7 @@ cd "${BASEDIR}/../../.." || exit 1 ( cd monitoring || exit 1 -make image +make image-dev ) # shellcheck disable=SC2086 diff --git a/monitoring/uss_qualifier/scripts/validate_test_definitions.sh b/monitoring/uss_qualifier/scripts/validate_test_definitions.sh index dfdb99a042..2a7189a877 100755 --- a/monitoring/uss_qualifier/scripts/validate_test_definitions.sh +++ b/monitoring/uss_qualifier/scripts/validate_test_definitions.sh @@ -15,7 +15,7 @@ cd "${BASEDIR}/../../.." || exit 1 ( cd monitoring || exit 1 -make image +make image-dev ) # shellcheck disable=SC2086 diff --git a/schemas/manage_type_schemas.sh b/schemas/manage_type_schemas.sh index 958e2b9427..9a867b803a 100755 --- a/schemas/manage_type_schemas.sh +++ b/schemas/manage_type_schemas.sh @@ -14,7 +14,7 @@ fi cd "${BASEDIR}/.." || exit 1 cd monitoring -make image +make image-dev cd .. action=${1:?The action must be specified as --check or --generate} @@ -24,5 +24,5 @@ docker run --name type_schema_manager \ --rm \ -u "$(id -u):$(id -g)" \ -v "$(pwd):/app" \ - interuss/monitoring \ + interuss/monitoring-dev \ uv run /app/schemas/manage_type_schemas.py "${action}" From a5338e317fd26da96292e515f1c406591b855dd0 Mon Sep 17 00:00:00 2001 From: Benjamin Pelletier Date: Thu, 14 May 2026 01:16:21 +0000 Subject: [PATCH 2/5] Ensure both images are built in CI --- .github/workflows/ci.yml | 46 +++++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f553c3196b..d5f24f89ac 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,8 +5,8 @@ on: branches: - main jobs: - build-monitoring-image: - name: Build monitoring image + build-monitoring-images: + name: Build monitoring images permissions: contents: read runs-on: ubuntu-latest @@ -28,8 +28,10 @@ jobs: fetch-tags: true fetch-depth: 0 filter: tree:0 - - name: Build monitoring image - run: make image + - name: Build monitoring images + run: | + make image + make image-dev - name: Save monitoring image artifact run: | docker save interuss/monitoring interuss/monitoring-dev -o monitoring-image.tar @@ -45,7 +47,7 @@ jobs: hygiene-tests: name: Repository hygiene needs: - - build-monitoring-image + - build-monitoring-images # https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#permissions permissions: contents: read @@ -73,7 +75,7 @@ jobs: unit-tests: name: Unit tests needs: - - build-monitoring-image + - build-monitoring-images permissions: contents: read runs-on: ubuntu-latest @@ -100,7 +102,7 @@ jobs: mock_uss-test: name: mock_uss tests needs: - - build-monitoring-image + - build-monitoring-images permissions: contents: read uses: ./.github/workflows/monitoring-test.yml @@ -113,7 +115,7 @@ jobs: uss_qualifier-noop-test: name: uss_qualifier configurations.dev.noop tests needs: - - build-monitoring-image + - build-monitoring-images permissions: contents: read uses: ./.github/workflows/monitoring-test.yml @@ -128,7 +130,7 @@ jobs: uss_qualifier-geoawareness_cis-test: name: uss_qualifier configurations.dev.geoawareness_cis tests needs: - - build-monitoring-image + - build-monitoring-images permissions: contents: read uses: ./.github/workflows/monitoring-test.yml @@ -143,7 +145,7 @@ jobs: uss_qualifier-generate_rid_test_data-test: name: uss_qualifier configurations.dev.generate_rid_test_data tests needs: - - build-monitoring-image + - build-monitoring-images permissions: contents: read uses: ./.github/workflows/monitoring-test.yml @@ -158,7 +160,7 @@ jobs: uss_qualifier-geospatial_comprehension-test: name: uss_qualifier configurations.dev.geospatial_comprehension tests needs: - - build-monitoring-image + - build-monitoring-images permissions: contents: read uses: ./.github/workflows/monitoring-test.yml @@ -173,7 +175,7 @@ jobs: uss_qualifier-general_flight_auth-test: name: uss_qualifier configurations.dev.general_flight_auth tests needs: - - build-monitoring-image + - build-monitoring-images permissions: contents: read uses: ./.github/workflows/monitoring-test.yml @@ -188,7 +190,7 @@ jobs: uss_qualifier-message_signing-test: name: uss_qualifier configurations.dev.message_signing tests needs: - - build-monitoring-image + - build-monitoring-images permissions: contents: read uses: ./.github/workflows/monitoring-test.yml @@ -203,7 +205,7 @@ jobs: uss_qualifier-dss_probing-test: name: uss_qualifier configurations.dev.dss_probing tests needs: - - build-monitoring-image + - build-monitoring-images permissions: contents: read uses: ./.github/workflows/monitoring-test.yml @@ -218,7 +220,7 @@ jobs: uss_qualifier-f3548_self_contained-test: name: uss_qualifier configurations.dev.f3548_self_contained tests needs: - - build-monitoring-image + - build-monitoring-images permissions: contents: read uses: ./.github/workflows/monitoring-test.yml @@ -233,7 +235,7 @@ jobs: uss_qualifier-utm_implementation_us-test: name: uss_qualifier configurations.dev.utm_implementation_us tests needs: - - build-monitoring-image + - build-monitoring-images permissions: contents: read uses: ./.github/workflows/monitoring-test.yml @@ -248,7 +250,7 @@ jobs: uss_qualifier-netrid_v22a-test: name: uss_qualifier configurations.dev.netrid_v22a tests needs: - - build-monitoring-image + - build-monitoring-images permissions: contents: read uses: ./.github/workflows/monitoring-test.yml @@ -263,7 +265,7 @@ jobs: uss_qualifier-netrid_v19-test: name: uss_qualifier configurations.dev.netrid_v19 tests needs: - - build-monitoring-image + - build-monitoring-images permissions: contents: read uses: ./.github/workflows/monitoring-test.yml @@ -278,7 +280,7 @@ jobs: uss_qualifier-uspace-test: name: uss_qualifier configurations.dev.uspace tests needs: - - build-monitoring-image + - build-monitoring-images permissions: contents: read uses: ./.github/workflows/monitoring-test.yml @@ -293,7 +295,7 @@ jobs: uss_qualifier-minimal_probing_simulations-crdb-test: name: uss_qualifier configurations.dev.minimal_probing_simulations tests with crdb needs: - - build-monitoring-image + - build-monitoring-images permissions: contents: read uses: ./.github/workflows/monitoring-test.yml @@ -313,7 +315,7 @@ jobs: uss_qualifier-minimal_probing_simulations-ybdb-test: name: uss_qualifier configurations.dev.minimal_probing_simulations tests with ybdb needs: - - build-monitoring-image + - build-monitoring-images permissions: contents: read uses: ./.github/workflows/monitoring-test.yml @@ -333,7 +335,7 @@ jobs: prober-test: name: prober tests needs: - - build-monitoring-image + - build-monitoring-images permissions: contents: read uses: ./.github/workflows/monitoring-test.yml From 2f24b0e03acf3f252d8e50d0f41b844599e1bff8 Mon Sep 17 00:00:00 2001 From: Benjamin Pelletier Date: Thu, 14 May 2026 05:36:11 +0000 Subject: [PATCH 3/5] Transfer image-dev build sentinel in CI + target image-dev in unit tests --- .github/actions/load-image/action.yml | 1 + .github/workflows/ci.yml | 1 + monitoring/uss_qualifier/scripts/run_unit_tests.sh | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/actions/load-image/action.yml b/.github/actions/load-image/action.yml index 06c36adefc..2a0cc136f7 100644 --- a/.github/actions/load-image/action.yml +++ b/.github/actions/load-image/action.yml @@ -14,4 +14,5 @@ runs: set -euo pipefail docker load --input monitoring-image/monitoring-image.tar cp monitoring-image/monitoring/image monitoring/image + cp monitoring-image/monitoring/image-dev monitoring/image-dev rm -rf monitoring-image diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d5f24f89ac..2999daa0fd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -38,6 +38,7 @@ jobs: mkdir -p image-artifact/monitoring mv monitoring-image.tar image-artifact/ cp monitoring/image image-artifact/monitoring/ + cp monitoring/image-dev image-artifact/monitoring/ - name: Upload monitoring image artifact uses: actions/upload-artifact@v7 with: diff --git a/monitoring/uss_qualifier/scripts/run_unit_tests.sh b/monitoring/uss_qualifier/scripts/run_unit_tests.sh index 3f5f73b1ea..52d92e0bc0 100755 --- a/monitoring/uss_qualifier/scripts/run_unit_tests.sh +++ b/monitoring/uss_qualifier/scripts/run_unit_tests.sh @@ -15,7 +15,7 @@ cd "${BASEDIR}/../../.." || exit 1 ( cd monitoring || exit 1 -make image +make image-dev ) # shellcheck disable=SC2086 From e32923e191cd1bb280757f33927bec4eb056db68 Mon Sep 17 00:00:00 2001 From: Benjamin Pelletier Date: Thu, 14 May 2026 06:34:54 +0000 Subject: [PATCH 4/5] Fix dependencies --- .github/actions/load-image/action.yml | 1 + monitoring/Makefile | 4 ++-- monitoring/monitorlib/scripts/run_unit_tests.sh | 3 +-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/actions/load-image/action.yml b/.github/actions/load-image/action.yml index 2a0cc136f7..fae7af93ec 100644 --- a/.github/actions/load-image/action.yml +++ b/.github/actions/load-image/action.yml @@ -15,4 +15,5 @@ runs: docker load --input monitoring-image/monitoring-image.tar cp monitoring-image/monitoring/image monitoring/image cp monitoring-image/monitoring/image-dev monitoring/image-dev + touch monitoring/image monitoring/image-dev rm -rf monitoring-image diff --git a/monitoring/Makefile b/monitoring/Makefile index ee9595632d..1dc066db5a 100644 --- a/monitoring/Makefile +++ b/monitoring/Makefile @@ -11,10 +11,10 @@ unit-test: cd uss_qualifier && make unit_test cd monitorlib && make unit_test -image: ../uv.lock ../pyproject.toml $(shell find . -type f ! -path "*/output/*" ! -name image ! -name *.pyc) $(shell find ../interfaces -type f) +image: ../uv.lock ../pyproject.toml $(shell find . -type f ! -path "*/output/*" ! -name image ! -name image-dev ! -name *.pyc) $(shell find ../interfaces -type f) ./build.sh -image-dev: ../uv.lock ../pyproject.toml $(shell find . -type f ! -path "*/output/*" ! -name image ! -name *.pyc) $(shell find ../interfaces -type f) +image-dev: ../uv.lock ../pyproject.toml $(shell find . -type f ! -path "*/output/*" ! -name image ! -name image-dev ! -name *.pyc) $(shell find ../interfaces -type f) ./build_dev.sh .PHONY: test diff --git a/monitoring/monitorlib/scripts/run_unit_tests.sh b/monitoring/monitorlib/scripts/run_unit_tests.sh index fe92fcd63b..c0086eda84 100755 --- a/monitoring/monitorlib/scripts/run_unit_tests.sh +++ b/monitoring/monitorlib/scripts/run_unit_tests.sh @@ -15,7 +15,7 @@ cd "${BASEDIR}/../../.." || exit 1 ( cd monitoring || exit 1 -make image +make image-dev ) # shellcheck disable=SC2086 @@ -26,4 +26,3 @@ docker run --name monitorlib_unit_test \ -v /var/run/docker.sock:/var/run/docker.sock \ interuss/monitoring-dev \ monitorlib/scripts/in_container/run_unit_tests.sh - From fa8c8880f79043d699663e63325e716eabf9befe Mon Sep 17 00:00:00 2001 From: Benjamin Pelletier Date: Thu, 14 May 2026 06:52:05 +0000 Subject: [PATCH 5/5] Ignore pytest artifacts when determining whether images need to be built --- monitoring/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/monitoring/Makefile b/monitoring/Makefile index 1dc066db5a..2c2030d8b7 100644 --- a/monitoring/Makefile +++ b/monitoring/Makefile @@ -11,10 +11,10 @@ unit-test: cd uss_qualifier && make unit_test cd monitorlib && make unit_test -image: ../uv.lock ../pyproject.toml $(shell find . -type f ! -path "*/output/*" ! -name image ! -name image-dev ! -name *.pyc) $(shell find ../interfaces -type f) +image: ../uv.lock ../pyproject.toml $(shell find . -type f ! -path "*/output/*" ! -path "*/.*" ! -path "*/__pycache__/*" ! -name image ! -name image-dev ! -name "*.pyc") $(shell find ../interfaces -type f) ./build.sh -image-dev: ../uv.lock ../pyproject.toml $(shell find . -type f ! -path "*/output/*" ! -name image ! -name image-dev ! -name *.pyc) $(shell find ../interfaces -type f) +image-dev: ../uv.lock ../pyproject.toml $(shell find . -type f ! -path "*/output/*" ! -path "*/.*" ! -path "*/__pycache__/*" ! -name image ! -name image-dev ! -name "*.pyc") $(shell find ../interfaces -type f) ./build_dev.sh .PHONY: test