diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index afb4ad8..8d08397 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -7,7 +7,6 @@ jobs: steps: - name: Check out the repo uses: actions/checkout@v4 - - run: make build-dev - run: make test-ci server-tests: name: Run server tests @@ -15,5 +14,4 @@ jobs: steps: - name: Check out the repo uses: actions/checkout@v4 - - run: cd server && make build-dev - run: cd server && make test-ci diff --git a/Makefile b/Makefile index 6ac74e5..284b823 100644 --- a/Makefile +++ b/Makefile @@ -19,10 +19,6 @@ test: @make deps-start @docker run -i -v ./:/app --network eventsgateway_eventsgateway eventsgateway-client-dev sh -c 'make test-go' -test-ci: - @docker compose up eventsgateway-api - @docker run -i --network eventsgateway_eventsgateway eventsgateway-client-dev sh -c 'make test-go' - spark-notebook: @docker compose up jupyter @@ -41,6 +37,13 @@ setup: @go mod tidy @cd .git/hooks && ln -sf ./hooks/pre-commit.sh pre-commit +# Run all CI commands inside a single Make target to make easier debugging. +test-ci: + @docker build -t eventsgateway-client-dev -f dev.Dockerfile . + @docker build -t eventsgateway-server -f server/Dockerfile server + @docker compose -f docker-compose-ci.yaml up -d eventsgateway-api --wait + @docker run -i --network eventsgateway_eventsgateway eventsgateway-client-dev sh -c 'make test-go' + test-go: unit integration test-coverage-func unit: print-unit-section unit-run copy-unit-cover diff --git a/docker-compose-ci.yaml b/docker-compose-ci.yaml new file mode 100644 index 0000000..f8a365d --- /dev/null +++ b/docker-compose-ci.yaml @@ -0,0 +1,67 @@ +services: + zookeeper: + image: confluentinc/cp-zookeeper:6.2.15 + ports: + - 2181:2181 + environment: + ZOOKEEPER_CLIENT_PORT: 2181 + networks: + - eventsgateway + + kafka: + image: confluentinc/cp-kafka:6.2.15 #Kafka 2.8 + ports: + - 9092:9092 + environment: + KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092 + KAFKA_LISTENERS: PLAINTEXT://:9092 + KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 + KAFKA_CREATE_TOPICS: uploads-au_default:1:0 + KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: "1" + KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: "1" + depends_on: + zookeeper: + condition: service_started + healthcheck: + test: [ "CMD", "nc", "-z", "localhost", "9092" ] + interval: 5s + timeout: 10s + retries: 10 + networks: + - eventsgateway + + jaeger: + image: jaegertracing/all-in-one:latest + environment: + - COLLECTOR_OTLP_ENABLED=true + ports: + - "5775:5775/udp" + - "6831:6831/udp" + - "6832:6832/udp" + - "5778:5778" + - "16686:16686" + - "4317:4317" + networks: + - eventsgateway + + eventsgateway-api: + image: eventsgateway-server + ports: + - "5000:5000" + - "6060:6060" + depends_on: + kafka: + condition: service_healthy + jaeger: + condition: service_started + healthcheck: + test: [ "CMD", "nc", "-z", "localhost", "5000" ] + interval: 5s + timeout: 10s + retries: 10 + + networks: + - eventsgateway + +networks: + eventsgateway: diff --git a/server/Dockerfile b/server/Dockerfile index 77dc6a5..bd9859f 100644 --- a/server/Dockerfile +++ b/server/Dockerfile @@ -29,7 +29,7 @@ ADD .. /go/src/github.com/topfreegames/eventsgateway RUN apk add --no-cache make git g++ && \ cd /go/src/github.com/topfreegames/eventsgateway && \ - make build && \ + make build-go && \ mv bin/eventsgateway /app/eventsgateway && \ mv config /app/config diff --git a/server/Makefile b/server/Makefile index 9494252..4094a72 100644 --- a/server/Makefile +++ b/server/Makefile @@ -9,7 +9,7 @@ GOBIN="${GOPATH}/bin" TEST_PACKAGES=`find . -type f -name "*.go" ! \( -path "*vendor*" \) | sed -En "s/([^\.])\/.*/\1/p" | uniq` run: - @docker compose up eventsgateway-api --wait + @docker compose -f ../docker-compose.yaml up eventsgateway-api --wait build-dev: @docker build -t eventsgateway-server-dev -f dev.Dockerfile . @@ -24,9 +24,6 @@ deps-stop: test: @docker run -i -v ./:/app eventsgateway-server-dev sh -c 'make test-go' -test-ci: - @docker run -i eventsgateway-server-dev sh -c 'make test-go' - test-go: @${GOBIN}/ginkgo -tags unit -cover -r --randomize-all --randomize-suites ${TEST_PACKAGES} @@ -34,4 +31,8 @@ build-go: @mkdir -p bin && go build -o ./bin/eventsgateway main.go build-image: - @docker build -t eventsgateway-server -f Dockerfile . \ No newline at end of file + @docker build -t eventsgateway-server -f Dockerfile . + +test-ci: + @docker build -t eventsgateway-server-dev -f dev.Dockerfile . + @docker run -i eventsgateway-server-dev sh -c 'make test-go' \ No newline at end of file