1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
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/compose-$GOOS-$GOARCH cmd/compose/*.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-compose
image: plugins/docker
settings:
repo: crusttech/api-compose
auto_tag: true # generate tag names automatically based on git branch and git tag
dockerfile: Dockerfile.api-compose
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.crust
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/compose-$GOOS-$GOARCH cmd/compose/*.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" ./compose/db/...
- gotest -v --tags="migrations" ./messaging/db/...
- go test -run=^$ --tags="unit integration external" ./cmd/... ./internal/... ./compose/... ./messaging/... ./system/...
- gotest -failfast --coverprofile=coverage.txt -v --tags="unit integration" ./internal/... ./system/... ./compose/... ./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: