554 lines
12 KiB
YAML
554 lines
12 KiB
YAML
---
|
|
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
|