services:
  local-neo4j:
    platform: linux/amd64
    image: neo4j:5.26.4
    healthcheck:
      test: wget http://local-neo4j:7474/
      interval: 5s
      timeout: 10s
      retries: 10
    environment:
      NEO4J_PLUGINS: '["apoc"]'
      NEO4J_AUTH: neo4j/neo4jPass
  local-changelog-db:
    platform: linux/amd64
    image: mysql:8.0.32
    restart: always
    healthcheck:
      test: ['CMD', 'mysqladmin', 'ping', '-h', 'localhost']
      timeout: 20s
      retries: 10
    environment:
      MYSQL_DATABASE: 'publishing_compositions_test'
      # So you don't have to use root, but you can if you like
      MYSQL_USER: 'user'
      # You can use whatever password you like
      MYSQL_PASSWORD: 'password'
      # Password for root access
      MYSQL_ROOT_PASSWORD: 'password'
  local-service:
    platform: linux/amd64
    image: 086679231553.dkr.ecr.us-east-1.amazonaws.com/graphql-publishing:latest
    environment:
      - GITHUB_NPM_TOKEN=/run/secrets/GITHUB_NPM_TOKEN
      - ENV
      - PORT
      - NODE_ENV
      - LOG_LEVEL
      - DD_TRACE_ENABLED
      - ENABLE_JWT_SERVICE_CACHE
      - APOLLO_INTROSPECTION
      - APOLLO_PLAYGROUND
      - SPLIT_API_KEY
      - AUTH_ISSUERS
      - SNOWFLAKE_USER
      - SNOWFLAKE_SCHEMA
      - SNOWFLAKE_PRIVATE_KEY
      - SNOWFLAKE_KEY_PASSPHRASE
      - NEO4J_AURA_URL
      - NEO4J_AURA_USER
      - NEO4J_AURA_PASSWORD
      - MYSQL_CHANGELOG_USERNAME=user
      - MYSQL_CHANGELOG_PASSWORD=password
      - MYSQL_CHANGELOG_DB_NAME=publishing_compositions_test
      - MYSQL_CHANGELOG_HOSTNAME=local-changelog-db
      - MYSQL_CHANGELOG_RW_MAX_CONNECTIONS
      - UPLOAD_BUCKET
      - S3_SIGNED_URL_EXPIRY
      - AWS_REGION
      - AWS_ACCESS_KEY_ID
      - AWS_SECRET_ACCESS_KEY
      - AWS_SESSION_TOKEN
      - CHANGELOG_REPORT_STEP_FN_ARN
      - NEO4J_URL=neo4j://local-neo4j:7687
      - NEO4J_USER=neo4j
      - NEO4J_PASSWORD=neo4jPass
      - NEO4J_DATABASE_NAME=neo4j
    depends_on:
      - local-neo4j
      - local-changelog-db
  integration-tests:
    build:
      context: .
      target: integration-tests
      args:
        DOCKER_BUILDKIT: 1
      secrets:
        - GITHUB_NPM_TOKEN
    depends_on:
      local-neo4j:
        condition: service_healthy
      local-service:
        condition: service_started
      local-changelog-db:
        condition: service_healthy
    environment:
      - NODE_ENV=test
      - ENV=test
      - GITHUB_NPM_TOKEN=/run/secrets/GITHUB_NPM_TOKEN
      - SPLIT_API_KEY
      - NEO4J_URL=neo4j://local-neo4j:7687
      - NEO4J_USER=neo4j
      - NEO4J_PASSWORD=neo4jPass
      - NEO4J_DATABASE_NAME=neo4j
      - MYSQL_CHANGELOG_USERNAME=user
      - MYSQL_CHANGELOG_PASSWORD=password
      - MYSQL_CHANGELOG_DB_NAME=publishing_compositions_test
      - MYSQL_CHANGELOG_HOSTNAME=local-changelog-db
      - BASE_URL=http://local-service:8080/graphql
      - IS_LOCAL=true
      - NODE_OPTIONS=${NODE_OPTIONS:-}
      - JOB_NAME=${JOB_NAME:-}
      - JOB_URL=${JOB_URL:-}
      - BUILD_NUMBER=${BUILD_NUMBER:-}
      - BUILD_ID=${BUILD_ID:-}
      - BUILD_TAG=${BUILD_TAG:-}
      - BUILD_URL=${BUILD_URL:-}
      - JENKINS_URL=${JENKINS_URL:-}
      - DD_TEST_SESSION_NAME=integration-tests
      - DD_SERVICE=graphql-publishing-integration-tests
      - DD_ENV=qa
      - DD_AGENT_HOST=172.17.0.1
      - WORKSPACE=${WORKSPACE:-}
      - DD_GIT_REPOSITORY_URL=${GIT_URL:-}
      - DD_GIT_COMMIT_SHA=${GIT_COMMIT:-}
      - DD_GIT_BRANCH=${GIT_BRANCH:-}
      - DD_GIT_COMMIT_AUTHOR_NAME=${DD_GIT_COMMIT_AUTHOR_NAME:-}
      - DD_GIT_COMMIT_AUTHOR_EMAIL=${DD_GIT_COMMIT_AUTHOR_EMAIL:-}
      - DD_GIT_COMMIT_AUTHOR_DATE=${DD_GIT_COMMIT_AUTHOR_DATE:-}
