diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml new file mode 100644 index 000000000..aa241b3bd --- /dev/null +++ b/.github/workflows/dev.yml @@ -0,0 +1,19 @@ +name: Deploy OPEX - Dev + +on: + push: + branches: + - dev + +jobs: + jenkinsJob: + name: Build OPEX new dev version + runs-on: ubuntu-latest + steps: + - name: Trigger opex-build-job on jenkins + uses: appleboy/jenkins-action@master + with: + url: ${{ secrets.JENKINS_URL }} + user: ${{ secrets.JENKINS_USER }} + token: ${{ secrets.JENKINS_TOKEN }} + job: "opex-core-dev-deploy" diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index dc4426a98..74a80f71d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,4 +1,4 @@ -name: Deploy OPEX +name: Deploy OPEX - Demo on: push: @@ -7,7 +7,7 @@ on: jobs: jenkinsJob: - name: build opex new version + name: Deploy OPEX new demo version runs-on: ubuntu-latest steps: - name: Trigger opex-build-job on jenkins @@ -16,4 +16,4 @@ jobs: url: ${{ secrets.JENKINS_URL }} user: ${{ secrets.JENKINS_USER }} token: ${{ secrets.JENKINS_TOKEN }} - job: "opex-build-job" + job: "opex-core-demo-deploy" diff --git a/Deployment/docker-compose.dev.yml b/Deployment/docker-compose.dev.yml new file mode 100644 index 000000000..0e8bb31ff --- /dev/null +++ b/Deployment/docker-compose.dev.yml @@ -0,0 +1,142 @@ +services: + zookeeper: + ports: + - '127.0.0.1:2182:2181' + networks: + - opex-dev + kafka: + ports: + - '127.0.0.1:9093:9092' + networks: + - opex-dev + consul: + ports: + - '127.0.0.1:8501:8500' + - '127.0.0.1:8302:8300' + - '127.0.0.1:8603:8600' + networks: + - opex-dev + redis: + ports: + - "127.0.0.1:6380:6379" + networks: + - opex-dev + postgres-accountant: + ports: + - 127.0.0.1:5633:5432 + networks: + - opex-dev + postgres-eventlog: + ports: + - 127.0.0.1:5634:5432 + networks: + - opex-dev + postgres-auth: + ports: + - 127.0.0.1:5635:5432 + networks: + - opex-dev + postgres-wallet: + ports: + - 127.0.0.1:5636:5432 + networks: + - opex-dev + postgres-api: + ports: + - 127.0.0.1:5637:5432 + networks: + - opex-dev + postgres-bc-gateway: + ports: + - 127.0.0.1:5638:5432 + networks: + - opex-dev + accountant: + ports: + - 127.0.0.1:8289:8089 + - 127.0.0.1:1146:1044 + networks: + opex-dev: + aliases: + - accountant + eventlog: + ports: + - 127.0.0.1:8290:8090 + networks: + opex-dev: + aliases: + - eventlog + matching-engine: + ports: + - 127.0.0.1:8292:8092 + - 127.0.0.1:1246:1044 + networks: + opex-dev: + aliases: + - matching-engine + matching-gateway: + ports: + - 127.0.0.1:8293:8093 + - 127.0.0.1:1147:1044 + networks: + opex-dev: + aliases: + - matching-gateway + auth: + ports: + - 127.0.0.1:8283:8083 + - 127.0.0.1:1148:1044 + networks: + opex-dev: + aliases: + - auth + wallet: + ports: + - 127.0.0.1:8291:8091 + - 127.0.0.1:1149:1044 + networks: + opex-dev: + aliases: + - wallet + api: + ports: + - 127.0.0.1:8294:8094 + - 127.0.0.1:1150:1044 + networks: + opex-dev: + aliases: + - api + websocket: + ports: + - 127.0.0.1:8297:8097 + - 127.0.0.1:1154:1044 + networks: + opex-dev: + aliases: + - websocket + bc-gateway: + ports: + - 127.0.0.1:8295:8095 + - 127.0.0.1:1152:1044 + networks: + opex-dev: + aliases: + - bc-gateway + storage: + ports: + - 127.0.0.1:8296:8096 + - 127.0.0.1:1153:1044 + networks: + opex-dev: + aliases: + - storage + nginx: + ports: + - 8086:80 + networks: + opex-dev: + aliases: + - opex_nginx +networks: + opex-dev: + driver: bridge diff --git a/Deployment/docker-compose.override.yml b/Deployment/docker-compose.override.yml new file mode 100644 index 000000000..27cfb9eeb --- /dev/null +++ b/Deployment/docker-compose.override.yml @@ -0,0 +1,142 @@ +services: + zookeeper: + ports: + - '127.0.0.1:2181:2181' + networks: + - opex + kafka: + ports: + - '127.0.0.1:9092:9092' + networks: + - opex + consul: + ports: + - '127.0.0.1:8500:8500' + - '127.0.0.1:8300:8300' + - '127.0.0.1:8600:8600' + networks: + - opex + redis: + ports: + - "127.0.0.1:6379:6379" + networks: + - opex + postgres-accountant: + ports: + - 127.0.0.1:5433:5432 + networks: + - opex + postgres-eventlog: + ports: + - 127.0.0.1:5434:5432 + networks: + - opex + postgres-auth: + ports: + - 127.0.0.1:5435:5432 + networks: + - opex + postgres-wallet: + ports: + - 127.0.0.1:5436:5432 + networks: + - opex + postgres-api: + ports: + - 127.0.0.1:5437:5432 + networks: + - opex + postgres-bc-gateway: + ports: + - 127.0.0.1:5438:5432 + networks: + - opex + accountant: + ports: + - 127.0.0.1:8089:8089 + - 127.0.0.1:1045:1044 + networks: + opex: + aliases: + - accountant + eventlog: + ports: + - 127.0.0.1:8090:8090 + networks: + opex: + aliases: + - eventlog + matching-engine: + ports: + - 127.0.0.1:8092:8092 + - 127.0.0.1:1046:1044 + networks: + opex: + aliases: + - matching-engine + matching-gateway: + ports: + - 127.0.0.1:8093:8093 + - 127.0.0.1:1047:1044 + networks: + opex: + aliases: + - matching-gateway + auth: + ports: + - 127.0.0.1:8083:8083 + - 127.0.0.1:1048:1044 + networks: + opex: + aliases: + - auth + wallet: + ports: + - 127.0.0.1:8091:8091 + - 127.0.0.1:1049:1044 + networks: + opex: + aliases: + - wallet + api: + ports: + - 127.0.0.1:8094:8094 + - 127.0.0.1:1050:1044 + networks: + opex: + aliases: + - api + websocket: + ports: + - 127.0.0.1:8097:8097 + - 127.0.0.1:1054:1044 + networks: + opex: + aliases: + - websocket + bc-gateway: + ports: + - 127.0.0.1:8095:8095 + - 127.0.0.1:1052:1044 + networks: + opex: + aliases: + - bc-gateway + storage: + ports: + - 127.0.0.1:8096:8096 + - 127.0.0.1:1053:1044 + networks: + opex: + aliases: + - storage + nginx: + ports: + - 80:80 + networks: + opex: + aliases: + - opex_nginx +networks: + opex: + driver: bridge diff --git a/Deployment/docker-compose.yml b/Deployment/docker-compose.yml index f34b167d0..9ba167dbe 100644 --- a/Deployment/docker-compose.yml +++ b/Deployment/docker-compose.yml @@ -2,8 +2,6 @@ version: '3.8' services: zookeeper: image: 'docker.io/bitnami/zookeeper:3-debian-10' - ports: - - '127.0.0.1:2181:2181' volumes: - $DATA/zookeeper_data:/bitnami environment: @@ -15,8 +13,6 @@ services: condition: on-failure kafka: image: 'docker.io/bitnami/kafka:2-debian-10' - ports: - - '127.0.0.1:9092:9092' volumes: - $DATA/kafka-data:/bitnami environment: @@ -32,10 +28,6 @@ services: condition: on-failure consul: image: 'consul' - ports: - - '127.0.0.1:8500:8500' - - '127.0.0.1:8300:8300' - - '127.0.0.1:8600:8600' environment: - CONSUL_BIND_INTERFACE=eth0 networks: @@ -46,8 +38,6 @@ services: redis: image: "redis:alpine" command: redis-server - ports: - - "127.0.0.1:6379:6379" volumes: - $DATA/redis-data:/var/lib/redis - $DATA/redis.conf:/usr/local/etc/redis/redis.conf @@ -60,8 +50,6 @@ services: condition: on-failure postgres-accountant: image: "postgres" - ports: - - 127.0.0.1:5433:5432 environment: - POSTGRES_USER=opex - POSTGRES_PASSWORD=hiopex @@ -72,8 +60,6 @@ services: - opex postgres-eventlog: image: "postgres" - ports: - - 127.0.0.1:5434:5432 environment: - POSTGRES_USER=opex - POSTGRES_PASSWORD=hiopex @@ -84,8 +70,6 @@ services: - opex postgres-auth: image: "postgres" - ports: - - 127.0.0.1:5435:5432 environment: - POSTGRES_USER=opex - POSTGRES_PASSWORD=hiopex @@ -99,8 +83,6 @@ services: condition: on-failure postgres-wallet: image: "postgres" - ports: - - 127.0.0.1:5436:5432 environment: - POSTGRES_USER=opex - POSTGRES_PASSWORD=hiopex @@ -114,8 +96,6 @@ services: condition: on-failure postgres-api: image: "postgres" - ports: - - 127.0.0.1:5437:5432 environment: - POSTGRES_USER=opex - POSTGRES_PASSWORD=hiopex @@ -129,8 +109,6 @@ services: condition: on-failure postgres-bc-gateway: image: "postgres" - ports: - - 127.0.0.1:5438:5432 environment: - POSTGRES_USER=opex - POSTGRES_PASSWORD=hiopex @@ -143,13 +121,9 @@ services: restart_policy: condition: on-failure accountant: - container_name: accountant build: context: ../accountant/accountant-app dockerfile: Dockerfile - ports: - - 127.0.0.1:8089:8089 - - 127.0.0.1:1045:1044 environment: - JAVA_OPTS=-Xmx256m -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1044 - SPRING_PROFILES_ACTIVE=docker,demo,scheduled @@ -158,7 +132,9 @@ services: - CONSUL_HOST=consul - DB_IP_PORT=postgres-accountant networks: - - opex + opex: + aliases: + - accountant depends_on: - zookeeper - kafka @@ -166,12 +142,9 @@ services: - consul - postgres-accountant eventlog: - container_name: eventlog build: context: ../eventlog/eventlog-app dockerfile: Dockerfile - ports: - - 127.0.0.1:8090:8090 environment: - JAVA_OPTS=-Xmx256m - SPRING_PROFILES_ACTIVE=docker,demo @@ -179,8 +152,6 @@ services: - REDIS_HOST=redis - CONSUL_HOST=consul - DB_IP_PORT=postgres-eventlog - networks: - - opex depends_on: - zookeeper - kafka @@ -188,52 +159,36 @@ services: - consul - postgres-eventlog matching-engine: - container_name: matching-engine build: context: ../matching-engine/matching-engine-app dockerfile: Dockerfile - ports: - - 127.0.0.1:8092:8092 - - 127.0.0.1:1046:1044 environment: - JAVA_OPTS=-Xmx256m -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1044 - SPRING_PROFILES_ACTIVE=docker,demo - KAFKA_IP_PORT=kafka:9092 - REDIS_HOST=redis - networks: - - opex depends_on: - zookeeper - kafka - redis matching-gateway: - container_name: matching-gateway build: context: ../matching-gateway/matching-gateway-app dockerfile: Dockerfile - ports: - - 127.0.0.1:8093:8093 - - 127.0.0.1:1047:1044 environment: - JAVA_OPTS=-Xmx256m -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1044 - SPRING_PROFILES_DEFAULT=docker,demo - KAFKA_IP_PORT=kafka:9092 - REDIS_HOST=redis - CONSUL_HOST=consul - networks: - - opex depends_on: - zookeeper - kafka - consul auth: - container_name: auth build: context: ../user-management/keycloak-gateway dockerfile: Dockerfile - ports: - - 127.0.0.1:8083:8083 - - 127.0.0.1:1048:1044 environment: - JAVA_OPTS=-Xmx256m -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1044 - SPRING_PROFILES_ACTIVE=docker,demo @@ -243,8 +198,6 @@ services: - DB_IP_PORT=postgres-auth - PROXY_ADDRESS_FORWARDING=true - WORKING_DIR=$DATA - networks: - - opex depends_on: - zookeeper - kafka @@ -255,13 +208,9 @@ services: restart_policy: condition: on-failure wallet: - container_name: wallet build: context: ../wallet/wallet-app dockerfile: Dockerfile - ports: - - 127.0.0.1:8091:8091 - - 127.0.0.1:1049:1044 environment: - JAVA_OPTS=-Xmx256m -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1044 - SPRING_PROFILES_DEFAULT=docker,demo @@ -269,8 +218,6 @@ services: - REDIS_HOST=redis - CONSUL_HOST=consul - DB_IP_PORT=postgres-wallet - networks: - - opex depends_on: - zookeeper - kafka @@ -281,13 +228,9 @@ services: restart_policy: condition: on-failure api: - container_name: API build: context: ../api/api-app dockerfile: Dockerfile - ports: - - 127.0.0.1:8094:8094 - - 127.0.0.1:1050:1044 environment: - JAVA_OPTS=-Xmx256m -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1044 - SPRING_PROFILES_DEFAULT=docker,demo @@ -295,8 +238,6 @@ services: - REDIS_HOST=redis - CONSUL_HOST=consul - DB_IP_PORT=postgres-api - networks: - - opex depends_on: - zookeeper - kafka @@ -307,21 +248,15 @@ services: restart_policy: condition: on-failure websocket: - container_name: websocket build: context: ../websocket/websocket-app dockerfile: Dockerfile - ports: - - 127.0.0.1:8097:8097 - - 127.0.0.1:1054:1044 environment: - JAVA_OPTS=-Xmx256m -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1044 - SPRING_PROFILES_DEFAULT=docker - KAFKA_IP_PORT=kafka:9092 - CONSUL_HOST=consul - DB_IP_PORT=postgres-api - networks: - - opex depends_on: - zookeeper - kafka @@ -331,13 +266,9 @@ services: restart_policy: condition: on-failure bc-gateway: - container_name: bc-gateway build: context: ../bc-gateway/bc-gateway-app dockerfile: Dockerfile - ports: - - 127.0.0.1:8095:8095 - - 127.0.0.1:1052:1044 environment: - JAVA_OPTS=-Xmx256m -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1044 - SPRING_PROFILES_DEFAULT=docker,demo,scheduled @@ -345,8 +276,6 @@ services: - REDIS_HOST=redis - CONSUL_HOST=consul - DB_IP_PORT=postgres-bc-gateway - networks: - - opex depends_on: - zookeeper - kafka @@ -357,19 +286,13 @@ services: restart_policy: condition: on-failure storage: - container_name: storage build: context: ../storage/storage-app dockerfile: Dockerfile - ports: - - 127.0.0.1:8096:8096 - - 127.0.0.1:1053:1044 environment: - JAVA_OPTS=-Xmx256m -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1044 - SPRING_PROFILES_DEFAULT=docker - CONSUL_HOST=consul - networks: - - opex depends_on: - consul deploy: @@ -377,19 +300,14 @@ services: condition: on-failure nginx: image: jboesl/docker-nginx-headers-more - container_name: opex_nginx volumes: - ./nginx.conf:/etc/nginx/nginx.conf - $DATA/www:/data/www - ports: - - 80:80 depends_on: - wallet - auth - matching-gateway - api - networks: - - opex networks: opex: driver: bridge diff --git a/Jenkins/Jenkinsfile.deploy.dev.groovy b/Jenkins/Jenkinsfile.deploy.dev.groovy new file mode 100644 index 000000000..4c78c89b0 --- /dev/null +++ b/Jenkins/Jenkinsfile.deploy.dev.groovy @@ -0,0 +1,57 @@ +pipeline { + agent any + + stages('Deploy - Stage') { + stage('Build') { + steps { + setBuildStatus("?", "PENDING") + withMaven( + maven: 'maven-latest' + ) { + sh 'mvn -B clean install' + } + } + } + stage('Deliver') { + environment { + DATA = '/var/opex/runtime-dev' + } + steps { + dir("Deployment") { + sh 'COMPOSE_PROJECT_NAME=dev docker-compose -f docker-compose.yml -f docker-compose.dev.yml up -d --build' + } + } + } + } + + post { + always { + echo 'One way or another, I have finished' + } + success { + echo ':)' + setBuildStatus(":)", "SUCCESS") + } + unstable { + echo ':/' + setBuildStatus(":/", "UNSTABLE") + } + failure { + echo ':(' + setBuildStatus(":(", "FAILURE") + } + changed { + echo 'Things were different before...' + } + } +} + +void setBuildStatus(String message, String state) { + step([ + $class : "GitHubCommitStatusSetter", + reposSource : [$class: "ManuallyEnteredRepositorySource", url: "https://github.com/opexdev/OPEX-Core"], + contextSource : [$class: "ManuallyEnteredCommitContextSource", context: "ci/jenkins/build-status"], + errorHandlers : [[$class: "ChangingBuildStatusErrorHandler", result: "UNSTABLE"]], + statusResultSource: [$class: "ConditionalStatusResultSource", results: [[$class: "AnyBuildResult", message: message, state: state]]] + ]) +} diff --git a/Jenkins/Jenkinsfile.deploy.groovy b/Jenkins/Jenkinsfile.deploy.groovy index e5c4e0885..f4ce7d7fb 100644 --- a/Jenkins/Jenkinsfile.deploy.groovy +++ b/Jenkins/Jenkinsfile.deploy.groovy @@ -1,7 +1,7 @@ pipeline { agent any - stages { + stages('Deploy - Demo') { stage('Build') { steps { setBuildStatus("?", "PENDING") @@ -18,8 +18,7 @@ pipeline { } steps { dir("Deployment") { - sh 'docker-compose build' - sh 'docker-compose up -d' + sh 'COMPOSE_PROJECT_NAME=demo docker-compose up -d --build' } } }