From 89f3601c2ce4bca0a4ee1534b3b1abe07cbdbd96 Mon Sep 17 00:00:00 2001 From: Michael Housh Date: Thu, 14 Nov 2024 21:34:48 -0500 Subject: [PATCH] fix: Fixes sensor service test that was flaky and moves docker stuff into it's own directory. --- .gitea/workflows/ci.yaml | 2 +- Makefile | 8 +++---- docker/Dockerfile | 14 +++++++++++++ docker/Dockerfile.mosquitto | 3 +++ docker/Dockerfile.test | 7 +++++++ docker/docker-compose-test.yaml | 22 ++++++++++++++++++++ docker/docker-compose.yaml | 37 +++++++++++++++++++++++++++++++++ 7 files changed, 88 insertions(+), 5 deletions(-) create mode 100755 docker/Dockerfile create mode 100644 docker/Dockerfile.mosquitto create mode 100644 docker/Dockerfile.test create mode 100755 docker/docker-compose-test.yaml create mode 100755 docker/docker-compose.yaml diff --git a/.gitea/workflows/ci.yaml b/.gitea/workflows/ci.yaml index 41be121..9ec6c58 100644 --- a/.gitea/workflows/ci.yaml +++ b/.gitea/workflows/ci.yaml @@ -15,7 +15,7 @@ jobs: - name: Setup Docker buildx uses: docker/setup-buildx-action@v3 - name: Run Test - run: make test-docker + run: make test - name: Cleanup. if: always() run: docker compose --file docker/docker-compose-test.yaml down diff --git a/Makefile b/Makefile index f5480c3..d99ce20 100755 --- a/Makefile +++ b/Makefile @@ -17,13 +17,13 @@ run: @swift run dewpoint-controller start-mosquitto: - @docker-compose start mosquitto + @docker compose start mosquitto stop-mosquitto: - @docker-compose rm -f mosquitto || true + @docker compose rm -f mosquitto || true test-docker: - @docker-compose --file docker/docker-compose-test.yaml \ + @docker compose --file docker/docker-compose-test.yaml \ --project-directory "${PWD}" \ run --build --remove-orphans -i --rm test - @docker-compose --file docker/docker-compose-test.yaml down + @docker compose --file docker/docker-compose-test.yaml down diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100755 index 0000000..9a03055 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,14 @@ + +# Build the executable +FROM swift:5.10 AS build +WORKDIR /build +COPY ./Package.* ./ +RUN swift package resolve +COPY . . +RUN swift build -c release -Xswiftc -g + +# Run image +FROM swift:5.10-slim +WORKDIR /run +COPY --from=build /build/.build/release/dewpoint-controller /run +CMD ["/bin/bash", "-xc", "./dewpoint-controller"] diff --git a/docker/Dockerfile.mosquitto b/docker/Dockerfile.mosquitto new file mode 100644 index 0000000..c50a1f7 --- /dev/null +++ b/docker/Dockerfile.mosquitto @@ -0,0 +1,3 @@ +FROM eclipse-mosquitto:latest +COPY ./mosquitto/config/mosquitto.conf /mosquitto/config/mosquitto.conf +EXPOSE 1883 diff --git a/docker/Dockerfile.test b/docker/Dockerfile.test new file mode 100644 index 0000000..a3fa111 --- /dev/null +++ b/docker/Dockerfile.test @@ -0,0 +1,7 @@ +FROM swift:5.10 +WORKDIR /app +COPY ./Package.* ./ +RUN swift package resolve +COPY . . +RUN swift build +CMD ["/bin/bash", "-xc", "swift", "test"] diff --git a/docker/docker-compose-test.yaml b/docker/docker-compose-test.yaml new file mode 100755 index 0000000..e53f00b --- /dev/null +++ b/docker/docker-compose-test.yaml @@ -0,0 +1,22 @@ +# run this with docker-compose run test +services: + test: + build: + context: . + dockerfile: docker/Dockerfile.test + working_dir: /app + depends_on: + - mosquitto + environment: + - MOSQUITTO_SERVER=mosquitto + command: /bin/bash -xc "swift test" + + mosquitto: + build: + context: . + dockerfile: docker/Dockerfile.mosquitto + +networks: + test: + driver: bridge + external: false diff --git a/docker/docker-compose.yaml b/docker/docker-compose.yaml new file mode 100755 index 0000000..d2aeb9c --- /dev/null +++ b/docker/docker-compose.yaml @@ -0,0 +1,37 @@ +# run this with docker-compose run test +services: + server: + image: swift-mqtt-dewpoint:latest + restart: unless-stopped + env_file: .env + + local: + container_name: local-server + build: + context: . + dockerfile: Dockerfile + depends_on: + - mosquitto + environment: + - MQTT_HOST=mosquitto + + test: + build: + context: . + dockerfile: Dockerfile.test + working_dir: /app + depends_on: + - mosquitto + environment: + - MOSQUITTO_SERVER=mosquitto + command: /bin/bash -xc "swift test" + + mosquitto: + build: + context: . + dockerfile: Dockerfile.mosquitto + +networks: + test: + driver: bridge + external: false