---
kind: pipeline
name: test-mysql
environment:
  GO111MODULE: "on"
  GOPROXY: "https://goproxy.io"
  CGO_ENABLED: 1
trigger:
  ref:
  - refs/heads/master
  - refs/pull/*/head
steps:
- name: test-vet
  image: golang:1.15
  pull: always
  volumes:
  - name: cache
    path: /go/pkg/mod
  commands:
    - make vet
- name: test-sqlite3
  image: golang:1.15
  volumes:
  - name: cache
    path: /go/pkg/mod
  depends_on:
  - test-vet
  commands:
    - make fmt-check
    - make test
    - make test-sqlite3
    - TEST_CACHE_ENABLE=true make test-sqlite3
- name: test-sqlite
  image: golang:1.15
  volumes:
  - name: cache
    path: /go/pkg/mod
  depends_on:
  - test-vet
  commands:
    - make test-sqlite
    - TEST_QUOTE_POLICY=reserved make test-sqlite
- name: test-mysql
  image: golang:1.15
  pull: never
  volumes:
  - name: cache
    path: /go/pkg/mod
  depends_on:
  - test-vet
  environment:
    TEST_MYSQL_HOST: mysql
    TEST_MYSQL_CHARSET: utf8
    TEST_MYSQL_DBNAME: xorm_test
    TEST_MYSQL_USERNAME: root
    TEST_MYSQL_PASSWORD:
  commands:
  - TEST_CACHE_ENABLE=true make test-mysql
  
- name: test-mysql-utf8mb4
  image: golang:1.15
  pull: never
  volumes:
  - name: cache
    path: /go/pkg/mod
  depends_on:
  - test-mysql
  environment:
    TEST_MYSQL_HOST: mysql
    TEST_MYSQL_CHARSET: utf8mb4
    TEST_MYSQL_DBNAME: xorm_test
    TEST_MYSQL_USERNAME: root
    TEST_MYSQL_PASSWORD:
  commands:
  - make test-mysql
  - TEST_QUOTE_POLICY=reserved make test-mysql

volumes:
- name: cache
  host:
    path: /tmp/cache

services:
- name: mysql
  image: mysql:5.7
  environment:
    MYSQL_ALLOW_EMPTY_PASSWORD: yes
    MYSQL_DATABASE: xorm_test

---
kind: pipeline
name: test-mysql8
depends_on:
  - test-mysql
trigger:
  ref:
  - refs/heads/master
  - refs/pull/*/head
steps:
- name: test-mysql8
  image: golang:1.15
  pull: never
  volumes:
  - name: cache
    path: /go/pkg/mod
  environment:
    TEST_MYSQL_HOST: mysql8
    TEST_MYSQL_CHARSET: utf8mb4
    TEST_MYSQL_DBNAME: xorm_test
    TEST_MYSQL_USERNAME: root
    TEST_MYSQL_PASSWORD:
  commands:
  - make test-mysql
  - TEST_CACHE_ENABLE=true make test-mysql

volumes:
- name: cache
  host:
    path: /tmp/cache

services:
- name: mysql8
  image: mysql:8.0
  environment:
    MYSQL_ALLOW_EMPTY_PASSWORD: yes
    MYSQL_DATABASE: xorm_test

---
kind: pipeline
name: test-mariadb
depends_on:
  - test-mysql8
trigger:
  ref:
  - refs/heads/master
  - refs/pull/*/head
steps:
- name: test-mariadb
  image: golang:1.15
  pull: never
  volumes:
  - name: cache
    path: /go/pkg/mod
  environment:
    TEST_MYSQL_HOST: mariadb
    TEST_MYSQL_CHARSET: utf8mb4
    TEST_MYSQL_DBNAME: xorm_test
    TEST_MYSQL_USERNAME: root
    TEST_MYSQL_PASSWORD:
  commands:
  - make test-mysql
  - TEST_QUOTE_POLICY=reserved make test-mysql

volumes:
- name: cache
  host:
    path: /tmp/cache

services:
- name: mariadb
  image: mariadb:10.4
  environment:
    MYSQL_ALLOW_EMPTY_PASSWORD: yes
    MYSQL_DATABASE: xorm_test

---
kind: pipeline
name: test-postgres
depends_on:
  - test-mariadb
trigger:
  ref:
  - refs/heads/master
  - refs/pull/*/head
steps:
- name: test-postgres
  pull: never
  image: golang:1.15
  volumes:
  - name: cache
    path: /go/pkg/mod
  environment:
    TEST_PGSQL_HOST: pgsql
    TEST_PGSQL_DBNAME: xorm_test
    TEST_PGSQL_USERNAME: postgres
    TEST_PGSQL_PASSWORD: postgres
  commands:
  - make test-postgres
  - TEST_CACHE_ENABLE=true make test-postgres

- name: test-postgres-schema
  pull: never
  image: golang:1.15
  volumes:
  - name: cache
    path: /go/pkg/mod
  depends_on:
  - test-postgres
  environment:
    TEST_PGSQL_HOST: pgsql
    TEST_PGSQL_SCHEMA: xorm
    TEST_PGSQL_DBNAME: xorm_test
    TEST_PGSQL_USERNAME: postgres
    TEST_PGSQL_PASSWORD: postgres
  commands:
  - TEST_QUOTE_POLICY=reserved make test-postgres

- name: test-pgx
  pull: never
  image: golang:1.15
  volumes:
  - name: cache
    path: /go/pkg/mod
  depends_on:
  - test-postgres-schema
  environment:
    TEST_PGSQL_HOST: pgsql
    TEST_PGSQL_DBNAME: xorm_test
    TEST_PGSQL_USERNAME: postgres
    TEST_PGSQL_PASSWORD: postgres
  commands:
  - make test-pgx
  - TEST_CACHE_ENABLE=true make test-pgx
  - TEST_QUOTE_POLICY=reserved make test-pgx

- name: test-pgx-schema
  pull: never
  image: golang:1.15
  volumes:
  - name: cache
    path: /go/pkg/mod
  depends_on:
  - test-pgx
  environment:
    TEST_PGSQL_HOST: pgsql
    TEST_PGSQL_SCHEMA: xorm
    TEST_PGSQL_DBNAME: xorm_test
    TEST_PGSQL_USERNAME: postgres
    TEST_PGSQL_PASSWORD: postgres
  commands:
  - make test-pgx
  - TEST_CACHE_ENABLE=true make test-pgx
  - TEST_QUOTE_POLICY=reserved make test-pgx

volumes:
- name: cache
  host:
    path: /tmp/cache

services:
- name: pgsql
  image: postgres:9.5
  environment:
    POSTGRES_DB: xorm_test
    POSTGRES_USER: postgres
    POSTGRES_PASSWORD: postgres

---
kind: pipeline
name: test-mssql
depends_on:
  - test-postgres
trigger:
  ref:
  - refs/heads/master
  - refs/pull/*/head
steps:
- name: test-mssql
  pull: never
  image: golang:1.15
  volumes:
  - name: cache
    path: /go/pkg/mod
  environment:
    TEST_MSSQL_HOST: mssql
    TEST_MSSQL_DBNAME: xorm_test
    TEST_MSSQL_USERNAME: sa
    TEST_MSSQL_PASSWORD: "yourStrong(!)Password"
  commands:
  - make test-mssql
  - TEST_MSSQL_DEFAULT_VARCHAR=NVARCHAR TEST_MSSQL_DEFAULT_CHAR=NCHAR make test-mssql

volumes:
- name: cache
  host:
    path: /tmp/cache

services:
- name: mssql
  pull: always
  image: mcr.microsoft.com/mssql/server:latest
  environment:
    ACCEPT_EULA: Y
    SA_PASSWORD: yourStrong(!)Password
    MSSQL_PID: Standard

---
kind: pipeline
name: test-tidb
depends_on:
  - test-mssql
trigger:
  ref:
  - refs/heads/master
  - refs/pull/*/head
steps:
- name: test-tidb
  pull: never
  image: golang:1.15
  volumes:
  - name: cache
    path: /go/pkg/mod
  environment:
    TEST_TIDB_HOST: "tidb:4000"
    TEST_TIDB_DBNAME: xorm_test
    TEST_TIDB_USERNAME: root
    TEST_TIDB_PASSWORD:
  commands:
  - make test-tidb

volumes:
- name: cache
  host:
    path: /tmp/cache

services:
- name: tidb
  image: pingcap/tidb:v3.0.3

---
kind: pipeline
name: test-cockroach
depends_on:
  - test-tidb
trigger:
  ref:
  - refs/heads/master
  - refs/pull/*/head
steps:
- name: test-cockroach
  pull: never
  image: golang:1.15
  volumes:
  - name: cache
    path: /go/pkg/mod
  environment:
    TEST_COCKROACH_HOST: "cockroach:26257"
    TEST_COCKROACH_DBNAME: xorm_test
    TEST_COCKROACH_USERNAME: root
    TEST_COCKROACH_PASSWORD:
  commands:
  - sleep 10
  - make test-cockroach

volumes:
- name: cache
  host:
    path: /tmp/cache

services:
- name: cockroach
  image: cockroachdb/cockroach:v19.2.4
  commands:
  - /cockroach/cockroach start --insecure

---
kind: pipeline
name: merge_coverage
depends_on:
  - test-mysql
  - test-mysql8
  - test-mariadb
  - test-postgres
  - test-mssql
  - test-tidb
  - test-cockroach
trigger:
  ref:
  - refs/heads/master
  - refs/pull/*/head
steps:
- name: merge_coverage
  image: golang:1.15
  commands:
  - make coverage

---
kind: pipeline
name: release-tag
trigger:
  event:
    - tag
steps:
- name: release-tag-gitea
  pull: always
  image: plugins/gitea-release:latest
  settings:
    base_url: https://gitea.com
    title: '${DRONE_TAG} is released'
    api_key:
      from_secret: gitea_token