---
kind: pipeline
name: matrix-1

platform:
  os: linux
  arch: amd64

clone:
  disable: true

workspace:
  base: /go
  path: src/github.com/go-xorm/xorm

steps:
- name: git
  pull: default
  image: plugins/git:next
  settings:
    depth: 50
    tags: true

- name: init_postgres
  pull: default
  image: postgres:9.5
  commands:
  - "until psql -U postgres -d xorm_test -h pgsql \\\n -c \"SELECT 1;\" >/dev/null 2>&1; do sleep 1; done\n"
  - "psql -U postgres -d xorm_test -h pgsql \\\n  -c \"create schema xorm;\"\n"

- name: build
  pull: default
  image: golang:1.10
  commands:
  - go get -t -d -v ./...
  - go get -u xorm.io/core
  - go get -u xorm.io/builder
  - go build -v
  when:
    event:
    - push
    - pull_request

- name: test-sqlite
  pull: default
  image: golang:1.10
  commands:
  - go get -u github.com/wadey/gocovmerge
  - "go test -v -race -db=\"sqlite3\" -conn_str=\"./test.db\" -coverprofile=coverage1-1.txt -covermode=atomic"
  - "go test -v -race -db=\"sqlite3\" -conn_str=\"./test.db\" -cache=true -coverprofile=coverage1-2.txt -covermode=atomic"
  when:
    event:
    - push
    - pull_request

- name: test-mysql
  pull: default
  image: golang:1.10
  commands:
  - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test\" -coverprofile=coverage2-1.txt -covermode=atomic"
  - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test\" -cache=true -coverprofile=coverage2-2.txt -covermode=atomic"
  when:
    event:
    - push
    - pull_request

- name: test-mysql-utf8mb4
  pull: default
  image: golang:1.10
  commands:
  - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test?charset=utf8mb4\" -coverprofile=coverage2.1-1.txt -covermode=atomic"
  - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test?charset=utf8mb4\" -cache=true -coverprofile=coverage2.1-2.txt -covermode=atomic"
  when:
    event:
    - push
    - pull_request

- name: test-mymysql
  pull: default
  image: golang:1.10
  commands:
  - "go test -v -race -db=\"mymysql\" -conn_str=\"tcp:mysql:3306*xorm_test/root/\" -coverprofile=coverage3-1.txt -covermode=atomic"
  - "go test -v -race -db=\"mymysql\" -conn_str=\"tcp:mysql:3306*xorm_test/root/\" -cache=true -coverprofile=coverage3-2.txt -covermode=atomic"
  when:
    event:
    - push
    - pull_request

- name: test-postgres
  pull: default
  image: golang:1.10
  commands:
  - "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -coverprofile=coverage4-1.txt -covermode=atomic"
  - "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -cache=true -coverprofile=coverage4-2.txt -covermode=atomic"
  when:
    event:
    - push
    - pull_request

- name: test-postgres-schema
  pull: default
  image: golang:1.10
  commands:
  - "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -schema=xorm -coverprofile=coverage5-1.txt -covermode=atomic"
  - "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -schema=xorm -cache=true -coverprofile=coverage5-2.txt -covermode=atomic"
  - gocovmerge coverage1-1.txt coverage1-2.txt coverage2-1.txt coverage2-2.txt coverage2.1-1.txt coverage2.1-2.txt coverage3-1.txt coverage3-2.txt coverage4-1.txt coverage4-2.txt coverage5-1.txt coverage5-2.txt > coverage.txt
  when:
    event:
    - push
    - pull_request

services:
- name: mysql
  pull: default
  image: mysql:5.7
  environment:
    MYSQL_ALLOW_EMPTY_PASSWORD: yes
    MYSQL_DATABASE: xorm_test
  when:
    event:
    - push
    - tag
    - pull_request

- name: pgsql
  pull: default
  image: postgres:9.5
  environment:
    POSTGRES_DB: xorm_test
    POSTGRES_USER: postgres
  when:
    event:
    - push
    - tag
    - pull_request

---
kind: pipeline
name: matrix-2

platform:
  os: linux
  arch: amd64

clone:
  disable: true

workspace:
  base: /go
  path: src/github.com/go-xorm/xorm

steps:
- name: git
  pull: default
  image: plugins/git:next
  settings:
    depth: 50
    tags: true

- name: init_postgres
  pull: default
  image: postgres:9.5
  commands:
  - "until psql -U postgres -d xorm_test -h pgsql \\\n -c \"SELECT 1;\" >/dev/null 2>&1; do sleep 1; done\n"
  - "psql -U postgres -d xorm_test -h pgsql \\\n  -c \"create schema xorm;\"\n"

- name: build
  pull: default
  image: golang:1.11
  commands:
    - go get -t -d -v ./...	
    - go get -u xorm.io/core	
    - go get -u xorm.io/builder
    - GO111MODULE=off go build -v
  when:
    event:
    - push
    - pull_request

- name: build-gomod
  pull: default
  image: golang:1.11
  environment:
    GOPROXY: "https://goproxy.cn"
  commands:
    - GO111MODULE=on go build -v
  when:
    event:
    - push
    - pull_request

- name: test-sqlite
  pull: default
  image: golang:1.11
  commands:
  - go get -u github.com/wadey/gocovmerge
  - "go test -v -race -db=\"sqlite3\" -conn_str=\"./test.db\" -coverprofile=coverage1-1.txt -covermode=atomic"
  - "go test -v -race -db=\"sqlite3\" -conn_str=\"./test.db\" -cache=true -coverprofile=coverage1-2.txt -covermode=atomic"
  when:
    event:
    - push
    - pull_request

- name: test-mysql
  pull: default
  image: golang:1.11
  commands:
  - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test\" -coverprofile=coverage2-1.txt -covermode=atomic"
  - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test\" -cache=true -coverprofile=coverage2-2.txt -covermode=atomic"
  when:
    event:
    - push
    - pull_request

- name: test-mysql-utf8mb4
  pull: default
  image: golang:1.11
  commands:
  - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test?charset=utf8mb4\" -coverprofile=coverage2.1-1.txt -covermode=atomic"
  - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test?charset=utf8mb4\" -cache=true -coverprofile=coverage2.1-2.txt -covermode=atomic"
  when:
    event:
    - push
    - pull_request

- name: test-mymysql
  pull: default
  image: golang:1.11
  commands:
  - "go test -v -race -db=\"mymysql\" -conn_str=\"tcp:mysql:3306*xorm_test/root/\" -coverprofile=coverage3-1.txt -covermode=atomic"
  - "go test -v -race -db=\"mymysql\" -conn_str=\"tcp:mysql:3306*xorm_test/root/\" -cache=true -coverprofile=coverage3-2.txt -covermode=atomic"
  when:
    event:
    - push
    - pull_request

- name: test-postgres
  pull: default
  image: golang:1.11
  commands:
  - "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -coverprofile=coverage4-1.txt -covermode=atomic"
  - "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -cache=true -coverprofile=coverage4-2.txt -covermode=atomic"
  when:
    event:
    - push
    - pull_request

- name: test-postgres-schema
  pull: default
  image: golang:1.11
  commands:
  - "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -schema=xorm -coverprofile=coverage5-1.txt -covermode=atomic"
  - "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -schema=xorm -cache=true -coverprofile=coverage5-2.txt -covermode=atomic"
  - gocovmerge coverage1-1.txt coverage1-2.txt coverage2-1.txt coverage2-2.txt coverage2.1-1.txt coverage2.1-2.txt coverage3-1.txt coverage3-2.txt coverage4-1.txt coverage4-2.txt coverage5-1.txt coverage5-2.txt > coverage.txt
  when:
    event:
    - push
    - pull_request

services:
- name: mysql
  pull: default
  image: mysql:5.7
  environment:
    MYSQL_ALLOW_EMPTY_PASSWORD: yes
    MYSQL_DATABASE: xorm_test
  when:
    event:
    - push
    - tag
    - pull_request

- name: pgsql
  pull: default
  image: postgres:9.5
  environment:
    POSTGRES_DB: xorm_test
    POSTGRES_USER: postgres
  when:
    event:
    - push
    - tag
    - pull_request

---
kind: pipeline
name: matrix-3

platform:
  os: linux
  arch: amd64

clone:
  disable: true

workspace:
  base: /go
  path: src/github.com/go-xorm/xorm

steps:
- name: git
  pull: default
  image: plugins/git:next
  settings:
    depth: 50
    tags: true

- name: init_postgres
  pull: default
  image: postgres:9.5
  commands:
  - "until psql -U postgres -d xorm_test -h pgsql \\\n -c \"SELECT 1;\" >/dev/null 2>&1; do sleep 1; done\n"
  - "psql -U postgres -d xorm_test -h pgsql \\\n  -c \"create schema xorm;\"\n"

- name: build
  pull: default
  image: golang:1.12
  commands:
    - go get -t -d -v ./...	
    - go get -u xorm.io/core	
    - go get -u xorm.io/builder
    - GO111MODULE=off go build -v
  when:
    event:
    - push
    - pull_request

- name: build-gomod
  pull: default
  image: golang:1.12
  environment:
    GOPROXY: "https://goproxy.cn" 
  commands:
    - GO111MODULE=on go build -v
  when:
    event:
    - push
    - pull_request

- name: test-sqlite
  pull: default
  image: golang:1.12
  commands:
  - go get -u github.com/wadey/gocovmerge
  - "go test -v -race -db=\"sqlite3\" -conn_str=\"./test.db\" -coverprofile=coverage1-1.txt -covermode=atomic"
  - "go test -v -race -db=\"sqlite3\" -conn_str=\"./test.db\" -cache=true -coverprofile=coverage1-2.txt -covermode=atomic"
  when:
    event:
    - push
    - pull_request

- name: test-mysql
  pull: default
  image: golang:1.12
  commands:
  - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test\" -coverprofile=coverage2-1.txt -covermode=atomic"
  - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test\" -cache=true -coverprofile=coverage2-2.txt -covermode=atomic"
  when:
    event:
    - push
    - pull_request

- name: test-mysql-utf8mb4
  pull: default
  image: golang:1.12
  commands:
  - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test?charset=utf8mb4\" -coverprofile=coverage2.1-1.txt -covermode=atomic"
  - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test?charset=utf8mb4\" -cache=true -coverprofile=coverage2.1-2.txt -covermode=atomic"
  when:
    event:
    - push
    - pull_request

- name: test-mymysql
  pull: default
  image: golang:1.12
  commands:
  - "go test -v -race -db=\"mymysql\" -conn_str=\"tcp:mysql:3306*xorm_test/root/\" -coverprofile=coverage3-1.txt -covermode=atomic"
  - "go test -v -race -db=\"mymysql\" -conn_str=\"tcp:mysql:3306*xorm_test/root/\" -cache=true -coverprofile=coverage3-2.txt -covermode=atomic"
  when:
    event:
    - push
    - pull_request

- name: test-postgres
  pull: default
  image: golang:1.12
  commands:
  - "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -coverprofile=coverage4-1.txt -covermode=atomic"
  - "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -cache=true -coverprofile=coverage4-2.txt -covermode=atomic"
  when:
    event:
    - push
    - pull_request

- name: test-postgres-schema
  pull: default
  image: golang:1.12
  commands:
  - "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -schema=xorm -coverprofile=coverage5-1.txt -covermode=atomic"
  - "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -schema=xorm -cache=true -coverprofile=coverage5-2.txt -covermode=atomic"
  - gocovmerge coverage1-1.txt coverage1-2.txt coverage2-1.txt coverage2-2.txt coverage2.1-1.txt coverage2.1-2.txt coverage3-1.txt coverage3-2.txt coverage4-1.txt coverage4-2.txt coverage5-1.txt coverage5-2.txt > coverage.txt
  when:
    event:
    - push
    - pull_request

services:
- name: mysql
  pull: default
  image: mysql:5.7
  environment:
    MYSQL_ALLOW_EMPTY_PASSWORD: yes
    MYSQL_DATABASE: xorm_test
  when:
    event:
    - push
    - tag
    - pull_request

- name: pgsql
  pull: default
  image: postgres:9.5
  environment:
    POSTGRES_DB: xorm_test
    POSTGRES_USER: postgres
  when:
    event:
    - push
    - tag
    - pull_request