-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy path.gitlab-ci.yml
135 lines (122 loc) · 2.31 KB
/
.gitlab-ci.yml
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
131
132
133
134
# Default Image
image: quay.io/lifechurch/k8s-deploy-helper:3.0.0
variables:
BINARY_NAME: $CI_PROJECT_NAME
KUBE_DOMAIN: mydomain.com
.prep_go: &prep_go
before_script:
- export GL_URL=$(echo $CI_PROJECT_URL | awk -F/ '{print $3}')
- export GO_PROJECT_PATH="$GOPATH/src/$GL_URL/$CI_PROJECT_NAMESPACE"
- mkdir -p $GO_PROJECT_PATH
- ln -s $(pwd) $GO_PROJECT_PATH
- export GO_PROJECT_PATH="$GO_PROJECT_PATH/$CI_PROJECT_NAME"
- cd $GO_PROJECT_PATH
stages:
- build
- dockerbuild
- review
- staging
- canary
- destroy-canary
- production
- taglatest
go_build:
<<: *prep_go
stage: build
image: golang:1.11
script:
- go get github.com/golang/dep/cmd/dep
- dep ensure
- mkdir build
- CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o build/$BINARY_NAME ./...
artifacts:
paths:
- build/
expire_in: 1 week
docker_build:
stage: dockerbuild
script:
- command build
only:
- branches
review:
stage: review
dependencies: []
script:
- command deploy
environment:
name: review/$CI_COMMIT_REF_NAME
url: http://$CI_ENVIRONMENT_SLUG.$KUBE_DOMAIN
on_stop: stop_review
only:
- branches
except:
- master
stop_review:
stage: review
dependencies: []
variables:
GIT_STRATEGY: none
script:
- command destroy
environment:
name: review/$CI_COMMIT_REF_NAME
action: stop
when: manual
only:
- branches
except:
- master
staging:
stage: staging
dependencies: []
script:
- command deploy
environment:
name: staging
url: http://staging.$KUBE_DOMAIN
only:
- master
canary:
stage: canary
dependencies: []
script:
- command deploy
when: manual
only:
- master
allow_failure: true
environment:
name: production
url: http://$KUBE_DOMAIN
destroy-canary:
stage: destroy-canary
dependencies: []
allow_failure: true
environment:
name: production
script:
- command destroy-canary
when: manual
only:
- master
production:
stage: production
dependencies: []
script:
- command deploy
environment:
name: production
url: http://$KUBE_DOMAIN
when: manual
allow_failure: false
only:
- master
taglatest:
stage: taglatest
dependencies: []
allow_failure: false
script:
- command push
only:
- master