From d67eace1a28cf10aa111d9c3191bb68eedeaac22 Mon Sep 17 00:00:00 2001 From: Warsama Date: Mon, 9 Dec 2024 12:45:11 -0800 Subject: [PATCH 1/6] Removed github secrets --- .github/workflows/rspec-tests.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/rspec-tests.yml b/.github/workflows/rspec-tests.yml index 61139f89..260e891a 100644 --- a/.github/workflows/rspec-tests.yml +++ b/.github/workflows/rspec-tests.yml @@ -18,12 +18,6 @@ jobs: uses: actions/checkout@v3 - name: Set up and Run Tests - env: # Pass secrets as environment variables to Docker Compose - POSTGRES_DB: ${{ secrets.POSTGRES_DB }} - POSTGRES_USER: ${{ secrets.POSTGRES_USER }} - POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD }} - MINIO_ROOT_USER: ${{ secrets.MINIO_ROOT_USER }} - MINIO_ROOT_PASSWORD: ${{ secrets.MINIO_ROOT_PASSWORD }} run: | docker compose -f docker-compose.test.yml up --build --exit-code-from medusa-test --abort-on-container-exit From 5cb155ee13aabd569642aa1cac95071c6aa84724 Mon Sep 17 00:00:00 2001 From: Warsama Date: Mon, 9 Dec 2024 16:01:00 -0800 Subject: [PATCH 2/6] Added fix to run Docker development seed data, remove env variables and cleaned up Docker compose files. --- docker-compose.development.yml | 95 ++++++++++++++++------------------ docker-compose.test.yml | 28 +++++----- 2 files changed, 59 insertions(+), 64 deletions(-) diff --git a/docker-compose.development.yml b/docker-compose.development.yml index 641068db..787b21ba 100644 --- a/docker-compose.development.yml +++ b/docker-compose.development.yml @@ -3,92 +3,87 @@ version: "3.7" services: medusa-development: build: - context: . # Build context is the current directory - dockerfile: docker/medusa/Dockerfile-development # Specify the Dockerfile for development + context: . + dockerfile: docker/medusa/Dockerfile-development depends_on: - - postgres # Ensure PostgreSQL starts before this service - - rabbitmq # Ensure RabbitMQ starts before this service - - memcached # Ensure Memcached starts before this service - - sunspot # Ensure Sunspot starts before this service - - sqs-mock # Ensure SQS mock service starts before this service - - minio # Ensure MinIO starts before this service + - postgres + - rabbitmq + - memcached + - sunspot + - sqs-mock + - minio ports: - - "3000:3000" # Map port 3000 of the container to port 3000 on the host + - "3000:3000" volumes: - - .:/app # Mount the current directory for live code updates - - /app/tmp # Ensure temporary files don’t persist across container rebuilds + - .:/app + - /app/tmp environment: - RAILS_ENV: development # Set Rails environment to development - DATABASE_URL: postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB} # Database connection string + RAILS_ENV: development + DATABASE_URL: postgres://root:medusa@postgres:5432/medusa - # wait-for-it ensures each service (e.g., database, cache) is fully ready before the app starts. - # This avoids arbitrary delays, as the app starts as soon as dependencies are available. - # It improves reliability by preventing connection errors if a service takes longer to initialize. command: > bash -c 'rm -f /app/tmp/pids/server.pid && \ wait-for-it postgres:5432 -- && \ wait-for-it rabbitmq:5672 -- && \ wait-for-it memcached:11211 -- && \ wait-for-it minio:9000 -- && \ - if bundle exec rails db:exists; then \ - echo "Database already exists. Skipping initialization."; \ - else \ - bundle exec rails db:create db:schema:load db:seed; \ - fi && \ + bundle exec rails db:create db:schema:load db:seed && \ + echo "Starting Rails server..." && \ bundle exec rails server -b 0.0.0.0' postgres: - image: postgres:12-alpine # Use a lightweight PostgreSQL image + image: postgres:12-alpine environment: - POSTGRES_DB: ${POSTGRES_DB} # Database name from environment variable - POSTGRES_USER: ${POSTGRES_USER} # Database user from environment variable - POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} # Database password from environment variable + POSTGRES_DB: medusa + POSTGRES_USER: root + POSTGRES_PASSWORD: medusa volumes: - - postgres_data:/var/lib/postgresql/data # Use a named volume for data persistence - restart: always # Restart the service on failure + - postgres_data:/var/lib/postgresql/data + restart: always + ports: + - "5432:5432" rabbitmq: - image: rabbitmq # Use the default RabbitMQ image + image: rabbitmq ports: - - "5672:5672" # Map RabbitMQ port - restart: always # Restart the service on failure + - "5672:5672" + restart: always memcached: - image: memcached # Use the default Memcached image + image: memcached ports: - - '11211:11211' # Map Memcached port - restart: always # Restart the service on failure + - "11211:11211" + restart: always sunspot: hostname: sunspot build: context: docker/sunspot/. ports: - - "8983:8983" # Changed to Solr's default port (8983) for Sunspot to avoid conflicts with other services (e.g., Rails on 3000) - restart: always # Ensures the service restarts on failure + - "8983:8983" + restart: always sqs-mock: build: - context: docker/sqs-mock/. # Build context for the SQS mock service - dockerfile: Dockerfile # Specify the Dockerfile for the SQS mock + context: docker/sqs-mock/. + dockerfile: Dockerfile ports: - - "9324:9324" # Map SQS mock port - restart: always # Restart the service on failure + - "9324:9324" + restart: always minio: - image: minio/minio # Use the MinIO image for object storage + image: minio/minio environment: - MINIO_ROOT_USER: ${MINIO_ROOT_USER} # MinIO root user from environment variable - MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD} # MinIO root password from environment variable - command: server /data --console-address ":9001" # Start MinIO server with console + MINIO_ROOT_USER: MinioUser + MINIO_ROOT_PASSWORD: OpenSesame + command: server /data --console-address ":9001" ports: - - "9000:9000" # Map MinIO port - - "9001:9001" # Map MinIO console port + - "9000:9000" + - "9001:9001" volumes: - - minio_data:/data # Use a named volume for data persistence - restart: always # Restart the service on failure + - minio_data:/data + restart: always -# Declared volumes for data persistence volumes: - postgres_data: # Named volume for PostgreSQL data - minio_data: # Named volume for MinIO data + postgres_data: + minio_data: diff --git a/docker-compose.test.yml b/docker-compose.test.yml index 6194159a..c8df1ebf 100644 --- a/docker-compose.test.yml +++ b/docker-compose.test.yml @@ -1,8 +1,8 @@ services: medusa-test: build: - context: . # Build context is the current directory - dockerfile: docker/medusa/Dockerfile-test # Specify the Dockerfile for testing + context: . + dockerfile: docker/medusa/Dockerfile-test depends_on: - postgres - rabbitmq @@ -11,27 +11,27 @@ services: - sqs-mock - minio ports: - - "3001:3000" # Map port 3000 of the container to port 3001 on the host for testing + - "3001:3000" # Map port 3000 of the container to port 3001 on the host volumes: - .:/app # Mount the current directory for live code updates environment: RAILS_ENV: test # Set Rails environment to test - DATABASE_URL: postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB} # Database connection string command: > bash -c 'rm -f /app/tmp/pids/server.pid && \ - /usr/local/bin/docker-entrypoint-test bundle exec rspec' + bundle exec rails db:drop db:create db:schema:load db:seed && \ + bundle exec rspec' postgres: image: postgres:12-alpine environment: - POSTGRES_DB: ${POSTGRES_DB} - POSTGRES_USER: ${POSTGRES_USER} - POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} + POSTGRES_DB: medusa_test + POSTGRES_USER: root + POSTGRES_PASSWORD: medusa volumes: - - postgres_data:/var/lib/postgresql/data - restart: always + - postgres_test_data:/var/lib/postgresql/data ports: - - "5432:5432" # Optional: expose PostgreSQL for debugging + - "5432:5432" # Expose PostgreSQL for testing + restart: always rabbitmq: image: rabbitmq @@ -64,8 +64,8 @@ services: minio: image: minio/minio environment: - MINIO_ROOT_USER: ${MINIO_ROOT_USER} - MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD} + MINIO_ROOT_USER: MinioUser + MINIO_ROOT_PASSWORD: OpenSesame command: server /data --console-address ":9001" ports: - "9000:9000" @@ -75,5 +75,5 @@ services: restart: always volumes: - postgres_data: + postgres_test_data: minio_data: From adfc82050a24cf2ec4cdcdb781466895d01fe6d3 Mon Sep 17 00:00:00 2001 From: Warsama Date: Mon, 9 Dec 2024 16:08:33 -0800 Subject: [PATCH 3/6] Add docker entrypoint command --- docker-compose.test.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docker-compose.test.yml b/docker-compose.test.yml index c8df1ebf..3b7623ce 100644 --- a/docker-compose.test.yml +++ b/docker-compose.test.yml @@ -18,8 +18,7 @@ services: RAILS_ENV: test # Set Rails environment to test command: > bash -c 'rm -f /app/tmp/pids/server.pid && \ - bundle exec rails db:drop db:create db:schema:load db:seed && \ - bundle exec rspec' + /usr/local/bin/docker-entrypoint-test bundle exec rspec' postgres: image: postgres:12-alpine From 51e759c24659b31c5f6834c8a8939e10bbc605b1 Mon Sep 17 00:00:00 2001 From: Warsama Date: Mon, 9 Dec 2024 16:49:09 -0800 Subject: [PATCH 4/6] Add env variables directly to Dockerfile test configuration --- docker-compose.test.yml | 44 ++++++++++++++--------------------------- 1 file changed, 15 insertions(+), 29 deletions(-) diff --git a/docker-compose.test.yml b/docker-compose.test.yml index 3b7623ce..64e8a610 100644 --- a/docker-compose.test.yml +++ b/docker-compose.test.yml @@ -1,24 +1,20 @@ +version: "3.7" + services: medusa-test: build: context: . dockerfile: docker/medusa/Dockerfile-test - depends_on: - - postgres - - rabbitmq - - memcached - - sunspot - - sqs-mock - - minio - ports: - - "3001:3000" # Map port 3000 of the container to port 3001 on the host - volumes: - - .:/app # Mount the current directory for live code updates environment: - RAILS_ENV: test # Set Rails environment to test + RAILS_ENV: test + POSTGRES_DB: medusa_test + POSTGRES_USER: root + POSTGRES_PASSWORD: medusa + POSTGRES_HOST: postgres + volumes: + - .:/app command: > - bash -c 'rm -f /app/tmp/pids/server.pid && \ - /usr/local/bin/docker-entrypoint-test bundle exec rspec' + /usr/local/bin/docker-entrypoint-test bundle exec rspec postgres: image: postgres:12-alpine @@ -26,16 +22,14 @@ services: POSTGRES_DB: medusa_test POSTGRES_USER: root POSTGRES_PASSWORD: medusa - volumes: - - postgres_test_data:/var/lib/postgresql/data ports: - - "5432:5432" # Expose PostgreSQL for testing + - "5432:5432" restart: always rabbitmq: image: rabbitmq ports: - - "5672:5672" # Map RabbitMQ port + - "5672:5672" restart: always memcached: @@ -52,19 +46,11 @@ services: - "8983:8983" restart: always - sqs-mock: - build: - context: docker/sqs-mock/. - dockerfile: Dockerfile - ports: - - "9324:9324" - restart: always - minio: image: minio/minio environment: - MINIO_ROOT_USER: MinioUser - MINIO_ROOT_PASSWORD: OpenSesame + MINIO_ROOT_USER: minio_user + MINIO_ROOT_PASSWORD: minio_password command: server /data --console-address ":9001" ports: - "9000:9000" @@ -74,5 +60,5 @@ services: restart: always volumes: - postgres_test_data: + postgres_data: minio_data: From c09d08590e3d4d9e2503505941c2d65aa8c0af03 Mon Sep 17 00:00:00 2001 From: Warsama Date: Mon, 9 Dec 2024 17:34:49 -0800 Subject: [PATCH 5/6] Hardcode env variables into github actions --- .github/workflows/rspec-tests.yml | 8 +++++++- docker-compose.test.yml | 6 ------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/rspec-tests.yml b/.github/workflows/rspec-tests.yml index 260e891a..1148cc79 100644 --- a/.github/workflows/rspec-tests.yml +++ b/.github/workflows/rspec-tests.yml @@ -12,6 +12,12 @@ jobs: rspec-tests: name: Run RSpec Tests in Docker runs-on: ubuntu-latest + env: + RAILS_ENV: test + POSTGRES_DB: medusa_test + POSTGRES_USER: root + POSTGRES_PASSWORD: medusa + POSTGRES_HOST: postgres steps: - name: Checkout the repository @@ -24,4 +30,4 @@ jobs: - name: Clean up if: always() run: | - docker compose -f docker-compose.yml -f docker-compose.test.yml down + docker compose -f docker-compose.test.yml down --volumes --remove-orphans diff --git a/docker-compose.test.yml b/docker-compose.test.yml index 64e8a610..04d96899 100644 --- a/docker-compose.test.yml +++ b/docker-compose.test.yml @@ -5,12 +5,6 @@ services: build: context: . dockerfile: docker/medusa/Dockerfile-test - environment: - RAILS_ENV: test - POSTGRES_DB: medusa_test - POSTGRES_USER: root - POSTGRES_PASSWORD: medusa - POSTGRES_HOST: postgres volumes: - .:/app command: > From 920f4087b5d0bc0297423873f8bc97fc9fd465b8 Mon Sep 17 00:00:00 2001 From: Warsama Date: Tue, 10 Dec 2024 08:37:22 -0800 Subject: [PATCH 6/6] Refactored github actions and fixed Docker file test configuration --- .github/workflows/rspec-tests.yml | 6 ----- docker-compose.test.yml | 39 ++++++++++++++++++++++++++----- 2 files changed, 33 insertions(+), 12 deletions(-) diff --git a/.github/workflows/rspec-tests.yml b/.github/workflows/rspec-tests.yml index 1148cc79..53b2dfa4 100644 --- a/.github/workflows/rspec-tests.yml +++ b/.github/workflows/rspec-tests.yml @@ -12,12 +12,6 @@ jobs: rspec-tests: name: Run RSpec Tests in Docker runs-on: ubuntu-latest - env: - RAILS_ENV: test - POSTGRES_DB: medusa_test - POSTGRES_USER: root - POSTGRES_PASSWORD: medusa - POSTGRES_HOST: postgres steps: - name: Checkout the repository diff --git a/docker-compose.test.yml b/docker-compose.test.yml index 04d96899..a728581c 100644 --- a/docker-compose.test.yml +++ b/docker-compose.test.yml @@ -1,14 +1,31 @@ -version: "3.7" - services: medusa-test: build: context: . dockerfile: docker/medusa/Dockerfile-test + depends_on: + - postgres + - rabbitmq + - memcached + - sunspot + - sqs-mock + - minio + ports: + - "3001:3000" volumes: - .:/app + environment: + RAILS_ENV: test + POSTGRES_DB: medusa_test + POSTGRES_USER: root + POSTGRES_PASSWORD: medusa + POSTGRES_HOST: postgres + DATABASE_URL: postgres://root:medusa@postgres:5432/medusa_test + MINIO_ROOT_USER: MinioUser + MINIO_ROOT_PASSWORD: OpenSesame command: > - /usr/local/bin/docker-entrypoint-test bundle exec rspec + bash -c 'rm -f /app/tmp/pids/server.pid && \ + /usr/local/bin/docker-entrypoint-test bundle exec rspec' postgres: image: postgres:12-alpine @@ -16,9 +33,11 @@ services: POSTGRES_DB: medusa_test POSTGRES_USER: root POSTGRES_PASSWORD: medusa + volumes: + - postgres_data:/var/lib/postgresql/data + restart: always ports: - "5432:5432" - restart: always rabbitmq: image: rabbitmq @@ -40,11 +59,19 @@ services: - "8983:8983" restart: always + sqs-mock: + build: + context: docker/sqs-mock/. + dockerfile: Dockerfile + ports: + - "9324:9324" + restart: always + minio: image: minio/minio environment: - MINIO_ROOT_USER: minio_user - MINIO_ROOT_PASSWORD: minio_password + MINIO_ROOT_USER: MinioUser + MINIO_ROOT_PASSWORD: OpenSesame command: server /data --console-address ":9001" ports: - "9000:9000"