.drone.yml 5.03 KB
workspace:
  base: /go/src
  path: github.com/crusttech/crust

kind: pipeline
name: docker image build

steps:
#- name: build
#  image: crusttech/crust-builder:latest
#  pull: always
#  environment:
#    CGO_ENABLED: 0
#    GOOS: linux
#    GOARCH: amd64
#  commands:
#  - go build -ldflags "-X github.com/crusttech/crust/internal/version.BuildTime=`date +%FT%T%z` -X github.com/crusttech/crust/internal/version.Version=`git describe --always --tags`" -o build/crust-$GOOS-$GOARCH cmd/crust/*.go
#  - go build -ldflags "-X github.com/crusttech/crust/internal/version.BuildTime=`date +%FT%T%z` -X github.com/crusttech/crust/internal/version.Version=`git describe --always --tags`" -o build/crm-$GOOS-$GOARCH cmd/crm/*.go
#  - go build -ldflags "-X github.com/crusttech/crust/internal/version.BuildTime=`date +%FT%T%z` -X github.com/crusttech/crust/internal/version.Version=`git describe --always --tags`" -o build/messaging-$GOOS-$GOARCH cmd/messaging/*.go
#  - go build -ldflags "-X github.com/crusttech/crust/internal/version.BuildTime=`date +%FT%T%z` -X github.com/crusttech/crust/internal/version.Version=`git describe --always --tags`" -o build/system-$GOOS-$GOARCH cmd/system/*.go
#  - go build -ldflags "-X github.com/crusttech/crust/internal/version.BuildTime=`date +%FT%T%z` -X github.com/crusttech/crust/internal/version.Version=`git describe --always --tags`" -o build/system-cli-$GOOS-$GOARCH cmd/system-cli/*.go

- name: api-system
  image: plugins/docker
  settings:
    repo: crusttech/api-system
    auto_tag: true # generate tag names automatically based on git branch and git tag
    dockerfile: Dockerfile.api-system
    username:
      from_secret: docker_hub_username
    password:
      from_secret: docker_hub_password


- name: api-crm
  image: plugins/docker
  settings:
    repo: crusttech/api-crm
    auto_tag: true # generate tag names automatically based on git branch and git tag
    dockerfile: Dockerfile.api-crm
    username:
      from_secret: docker_hub_username
    password:
      from_secret: docker_hub_password

- name: api-messaging
  image: plugins/docker
  settings:
    repo: crusttech/api-messaging
    auto_tag: true # generate tag names automatically based on git branch and git tag
    dockerfile: Dockerfile.api-messaging
    username:
      from_secret: docker_hub_username
    password:
      from_secret: docker_hub_password


- name: crust
  image: plugins/docker
  settings:
    repo: crusttech/crust
    auto_tag: true # generate tag names automatically based on git branch and git tag
    dockerfile: Dockerfile.api
    username:
      from_secret: docker_hub_username
    password:
      from_secret: docker_hub_password

trigger:
  branch:
    - master
  refs:
    - refs/tags/v20??.*
  event:
    - push

---
workspace:
  base: /go/src
  path: github.com/crusttech/crust

kind: pipeline
name: integration

steps:
- name: tests
  image: crusttech/crust-builder:latest
  pull: always
  environment:
    CGO_ENABLED: 0
    GOOS: linux
    GOARCH: amd64
    CI: circleci
    AUTH_OIDC_ENABLED: 0
    AUTH_JWT_SECRET: bRxJ37sJ6Qu4
  commands:
  - make mocks
  - make codegen
  - go build -ldflags "-X github.com/crusttech/crust/internal/version.BuildTime=`date +%FT%T%z` -X github.com/crusttech/crust/internal/version.Version=`git describe --always --tags`" -o build/crust-$GOOS-$GOARCH cmd/crust/*.go
  - go build -ldflags "-X github.com/crusttech/crust/internal/version.BuildTime=`date +%FT%T%z` -X github.com/crusttech/crust/internal/version.Version=`git describe --always --tags`" -o build/crm-$GOOS-$GOARCH cmd/crm/*.go
  - go build -ldflags "-X github.com/crusttech/crust/internal/version.BuildTime=`date +%FT%T%z` -X github.com/crusttech/crust/internal/version.Version=`git describe --always --tags`" -o build/messaging-$GOOS-$GOARCH cmd/messaging/*.go
  - go build -ldflags "-X github.com/crusttech/crust/internal/version.BuildTime=`date +%FT%T%z` -X github.com/crusttech/crust/internal/version.Version=`git describe --always --tags`" -o build/system-$GOOS-$GOARCH cmd/system/*.go
  - go build -ldflags "-X github.com/crusttech/crust/internal/version.BuildTime=`date +%FT%T%z` -X github.com/crusttech/crust/internal/version.Version=`git describe --always --tags`" -o build/system-cli-$GOOS-$GOARCH cmd/system-cli/*.go
  # check all tests are able to build
  - wait-for-it.sh -t 60 --strict crust-db:3306 -- echo "Crust DB1 is up"
  - gotest -v --tags="migrations" ./system/db/...
  - gotest -v --tags="migrations" ./crm/db/...
  - gotest -v --tags="migrations" ./messaging/db/...
  - go test -run=^$ --tags="unit integration external" ./cmd/... ./internal/... ./crm/... ./messaging/... ./system/...
  - gotest -failfast --coverprofile=coverage.txt -v --tags="unit integration" ./internal/... ./system/... ./crm/... ./messaging/...
- name: coverage
  image: plugins/codecov
  settings:
    token: ac2e49d3-b29d-42c9-a2e1-9c8f286e4c24
    files:
     - coverage.txt

services:
- name: crust-db
  pull: always
  image: percona:8.0
  ports:
    - 3306
  environment:
    MYSQL_ROOT_PASSWORD: bRxJ37sJ6Qu4
    MYSQL_DATABASE: crust
    MYSQL_USER: crust
    MYSQL_PASSWORD: crust

trigger: