--- kind: pipeline type: docker name: test-mysql-5.7 services: - name: database image: mysql:5.7 ports: - 3306 environment: MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' - name: influxdb image: influxdb:1.7.8 ports: - 8086 environment: INFLUXDB_ADMIN_ENABLED: 'true' - name: rabbitmq image: rabbitmq:3.8.9 ports: - 5672 - name: redis image: redis:4.0 ports: - 6379 steps: - name: wait-for-services image: jwilder/dockerize commands: - dockerize -wait tcp://database:3306 -wait tcp://influxdb:8086 -wait tcp://rabbitmq:5672 -wait tcp://redis:6379 -timeout 1m - name: init-influxdb image: influxdb:1.7.8 commands: - cat db/influxdb.sql | influx -host influxdb # Copy bundler cache from the host machine to your build environment. # Plugin description: http://plugins.drone.io/drillster/drone-volume-cache - name: restore-bundle-cache pull: if-not-exists image: drillster/drone-volume-cache settings: restore: true mount: - vendor/bundle volumes: - name: bundle-cache path: /cache - name: run-rspec image: ruby:2.6.5 environment: DATABASE_HOST: database INFLUXDB_HOST: influxdb RABBITMQ_HOST: rabbitmq EVENT_API_RABBITMQ_HOST: rabbitmq REDIS_URL: redis://redis:6379 RAILS_ENV: test VAULT_ADDR: '' VAULT_TOKEN: '' commands: - bin/init_config - gem install bundler:2.1.4 - bundle install --jobs=$(nproc) --retry=3 --path vendor/bundle - bundle exec rake db:create db:migrate - LOG_LEVEL=warn bundle exec rspec - name: rebuild-bundle-cache pull: if-not-exists image: drillster/drone-volume-cache settings: rebuild: true mount: - vendor/bundle volumes: - name: bundle-cache path: /cache - name: docs-generate image: quay.io/openware/ruby-node:2.6.5 environment: DATABASE_HOST: database INFLUXDB_HOST: influxdb RABBITMQ_HOST: rabbitmq EVENT_API_RABBITMQ_HOST: rabbitmq REDIS_URL: redis://redis:6379 VAULT_TOKEN: '' commands: - gem install bundler:2.1.4 - bin/gendocs when: branch: - master - "*-stable" volumes: - name: bundle-cache host: path: /tmp/bundle trigger: event: - push --- kind: pipeline type: docker name: test-mariadb-10.3 services: - name: mariadb image: mariadb:10.3 ports: - 3306 environment: MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' - name: influxdb image: influxdb:1.7.8 ports: - 8086 environment: INFLUXDB_ADMIN_ENABLED: 'true' - name: rabbitmq image: rabbitmq:3.8.9 ports: - 5672 - name: redis image: redis:4.0 ports: - 6379 steps: - name: wait-for-services image: jwilder/dockerize commands: - dockerize -wait tcp://mariadb:3306 -wait tcp://influxdb:8086 -wait tcp://rabbitmq:5672 -wait tcp://redis:6379 -timeout 1m - name: init-influxdb image: influxdb:1.7.8 commands: - cat db/influxdb.sql | influx -host influxdb - name: restore-bundle-cache pull: if-not-exists image: drillster/drone-volume-cache settings: restore: true mount: - vendor/bundle volumes: - name: bundle-cache path: /cache - name: run-rspec image: ruby:2.6.5 environment: DATABASE_HOST: "mariadb" DATABASE_SUPPORT_JSON: "false" INFLUXDB_HOST: influxdb RABBITMQ_HOST: rabbitmq EVENT_API_RABBITMQ_HOST: rabbitmq REDIS_URL: redis://redis:6379 RAILS_ENV: test VAULT_ADDR: '' VAULT_TOKEN: '' commands: - bin/init_config - gem install bundler:2.1.4 - bundle install --jobs=$(nproc) --retry=3 --path vendor/bundle - bundle exec rake db:create db:migrate - LOG_LEVEL=warn bundle exec rspec trigger: event: - push branch: - master - "*-stable" - "fix-db/*" --- kind: pipeline type: docker name: test-mysql-8.0 services: - name: mysql image: mysql:8.0 commands: - /entrypoint.sh --default-authentication-plugin=mysql_native_password ports: - 3306 environment: MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' - name: influxdb image: influxdb:1.7.8 ports: - 8086 environment: INFLUXDB_ADMIN_ENABLED: 'true' - name: rabbitmq image: rabbitmq:3.8.9 ports: - 5672 - name: redis image: redis:4.0 ports: - 6379 steps: - name: wait-for-services image: jwilder/dockerize commands: - dockerize -wait tcp://mysql:3306 -wait tcp://influxdb:8086 -wait tcp://rabbitmq:5672 -wait tcp://redis:6379 -timeout 1m - name: init-influxdb image: influxdb:1.7.8 commands: - cat db/influxdb.sql | influx -host influxdb - name: restore-bundle-cache pull: if-not-exists image: drillster/drone-volume-cache settings: restore: true mount: - vendor/bundle volumes: - name: bundle-cache path: /cache - name: run-rspec image: ruby:2.6.5 environment: DATABASE_HOST: "mysql" INFLUXDB_HOST: influxdb RABBITMQ_HOST: rabbitmq EVENT_API_RABBITMQ_HOST: rabbitmq REDIS_URL: redis://redis:6379 RAILS_ENV: test VAULT_ADDR: '' VAULT_TOKEN: '' commands: - bin/init_config - gem install bundler:2.1.4 - bundle install --jobs=$(nproc) --retry=3 --path vendor/bundle - bundle exec rake db:create db:migrate - LOG_LEVEL=warn bundle exec rspec trigger: event: - push branch: - master - "*-stable" - "fix-db/*" --- kind: pipeline type: docker name: test-postgresql-13.0 services: - name: postgres image: postgres:13.0 ports: - 5432 environment: POSTGRES_PASSWORD: changeme - name: influxdb image: influxdb:1.7.8 ports: - 8086 environment: INFLUXDB_ADMIN_ENABLED: 'true' - name: rabbitmq image: rabbitmq:3.8.9 ports: - 5672 - name: redis image: redis:4.0 ports: - 6379 steps: - name: wait-for-services image: jwilder/dockerize commands: - dockerize -wait tcp://postgres:5432 -wait tcp://influxdb:8086 -wait tcp://rabbitmq:5672 -wait tcp://redis:6379 -timeout 1m - name: init-influxdb image: influxdb:1.7.8 commands: - cat db/influxdb.sql | influx -host influxdb - name: restore-bundle-cache pull: if-not-exists image: drillster/drone-volume-cache settings: restore: true mount: - vendor/bundle volumes: - name: bundle-cache path: /cache - name: run-rspec image: ruby:2.6.5 environment: DATABASE_HOST: "postgres" DATABASE_USER: "postgres" DATABASE_PASS: "changeme" DATABASE_ADAPTER: "postgresql" DATABASE_PORT: "5432" DATABASE_COLLATION: "" INFLUXDB_HOST: influxdb RABBITMQ_HOST: rabbitmq EVENT_API_RABBITMQ_HOST: rabbitmq REDIS_URL: redis://redis:6379 RAILS_ENV: test VAULT_ADDR: '' VAULT_TOKEN: '' commands: - bin/init_config - gem install bundler:2.1.4 - bundle install --jobs=$(nproc) --retry=3 --path vendor/bundle - bundle exec rake db:create db:migrate - LOG_LEVEL=warn bundle exec rspec trigger: event: - push branch: - master - "*-stable" - "fix-db/*" --- kind: pipeline type: docker name: docker-build-snapshot steps: - name: git-tag-snapshot image: quay.io/openware/sdk-citools:2.6.7 environment: BRANCH_NAME: master REPO_NAME: ${DRONE_REPO} GITHUB_API_KEY: from_secret: kite_bot_key commands: - BUNDLE_GEMFILE=/sdk/Gemfile bundle exec rake --rakefile=/sdk/Rakefile ci:prebuild - bin/genversion # Build and push docker image using ".tags" file. - name: docker-build-and-push image: plugins/docker settings: username: from_secret: quay_username password: from_secret: quay_password repo: quay.io/openware/peatio registry: quay.io # Redeploy on master.devkube.com - name: devkube-redeploy image: rubykube/microkube:0.2.0 environment: WEBHOOK_JWT_SECRET: from_secret: devkube_webhook_secret commands: - export latest_image=quay.io/openware/peatio:$(cat .tags) - cd /home/app - bundle exec rake payload:send[peatio,$latest_image,http://master.devkube.com:1337] detach: true when: branch: - master # Update changelog and API documentation, then push it to sdk repository and notify. - name: push-and-notify image: quay.io/openware/sdk-citools:2.6.7 environment: BOT_USERNAME: kite-bot BOT_NAME: Kite Bot BOT_EMAIL: kite-bot@heliostech.fr REPO_NAME: ${DRONE_REPO} BRANCH_NAME: ${DRONE_BRANCH} SDK_BRANCH: ${DRONE_BRANCH} TELEGRAM_BOT_TOKEN: from_secret: telegram_bot_token TELEGRAM_CHAT_ID: from_secret: telegram_chat_id SLACK_TOKEN: from_secret: slack_token SLACK_CHANNEL: from_secret: slack_channel GITHUB_API_KEY: from_secret: kite_bot_key commands: - BUNDLE_GEMFILE=/sdk/Gemfile bundle exec rake --rakefile=/sdk/Rakefile ci:postbuild[/drone/src] when: branch: - master # Trigger custom Peatio image build - name: build-custom-image image: curlimages/curl environment: SERVER: https://ci.openware.work REPO: openware/assembly-line BRANCH: master COMPONENT: peatio DRONE_TOKEN: from_secret: drone_token commands: - COMPONENT_VERSION=$(cat .tags) - "curl -s -XPOST -H \"Authorization: Bearer $DRONE_TOKEN\" -i \"$SERVER/api/repos/$REPO/builds?branch=$BRANCH&ASSEMBLY_COMPONENT_VERSION=$COMPONENT_VERSION&ASSEMBLY_COMPONENT=$COMPONENT\"" detach: true when: branch: - master trigger: event: - push branch: - master - "fix/*" - "integration/*" image_pull_secrets: - dockerconfigjson --- kind: pipeline type: docker name: docker-build-stable steps: # Update application version - name: git-tag-stable image: quay.io/openware/sdk-citools:2.6.7 environment: BOT_USERNAME: kite-bot BOT_NAME: Kite Bot BOT_EMAIL: kite-bot@heliostech.fr BRANCH_NAME: ${DRONE_BRANCH} REPO_NAME: ${DRONE_REPO} GITHUB_API_KEY: from_secret: kite_bot_key commands: - BUNDLE_GEMFILE=/sdk/Gemfile bundle exec rake --rakefile=/sdk/Rakefile ci:prebuild - bin/genversion # Build and push docker image using ".tags" file. - name: docker-build-and-push image: plugins/docker settings: username: from_secret: quay_username password: from_secret: quay_password repo: quay.io/openware/peatio registry: quay.io # Redeploy on master.devkube.com - name: devkube-redeploy image: rubykube/microkube:0.2.0 environment: WEBHOOK_JWT_SECRET: from_secret: devkube_webhook_secret commands: - export latest_image=quay.io/openware/peatio:$(cat .tags) - cd /home/app - bundle exec rake payload:send[peatio,$latest_image,http://master.devkube.com:1337] detach: true # Update changelog and API documentation, then push it to sdk repository and notify. - name: push-and-notify image: quay.io/openware/sdk-citools:2.6.7 environment: BOT_USERNAME: kite-bot BOT_NAME: Kite Bot BOT_EMAIL: kite-bot@heliostech.fr REPO_NAME: ${DRONE_REPO} BRANCH_NAME: ${DRONE_BRANCH} SDK_BRANCH: ${DRONE_BRANCH} TELEGRAM_BOT_TOKEN: from_secret: telegram_bot_token TELEGRAM_CHAT_ID: from_secret: telegram_chat_id SLACK_TOKEN: from_secret: slack_token SLACK_CHANNEL: from_secret: slack_channel GITHUB_API_KEY: from_secret: kite_bot_key commands: - BUNDLE_GEMFILE=/sdk/Gemfile bundle exec rake --rakefile=/sdk/Rakefile ci:postbuild[/drone/src] # Trigger custom Peatio image build - name: build-custom-image image: curlimages/curl environment: SERVER: https://ci.openware.work REPO: openware/assembly-line BRANCH: master COMPONENT: peatio DRONE_TOKEN: from_secret: drone_token commands: - COMPONENT_VERSION=$(cat .tags) - "curl -s -XPOST -H \"Authorization: Bearer $DRONE_TOKEN\" -i \"$SERVER/api/repos/$REPO/builds?branch=$BRANCH&ASSEMBLY_COMPONENT_VERSION=$COMPONENT_VERSION&ASSEMBLY_COMPONENT=$COMPONENT\"" detach: true - name: "Update global OpenDAX version" image: quay.io/openware/goci:0.0.6 environment: GIT_TOKEN: from_secret: kite_bot_key commands: - /app/goci versions trigger: event: - push branch: - "*-stable" depends_on: - test-mysql-5.7 - test-mariadb-10.3 - test-mysql-8.0 - test-postgresql-13.0 image_pull_secrets: - dockerconfigjson