3
3
# CI 一整套服务
4
4
5
5
## 环境说明
6
-
6
+
7
7
- CentOS 7.3
8
- - 两台机子
8
+ - 两台机子(一台机子也是可以,内存至少要 8G)
9
9
- 一台:Gitlab + Redis + Postgresql
10
+ - 硬件推荐:内存 4G,CPU 2 核以上
10
11
- 端口安排
11
12
- Gitlab:10080
12
13
- 一台:Nexus + Jenkins + SonarQube + Postgresql
14
+ - 硬件推荐:内存 8G,CPU 2 核以上
13
15
- 端口安排
14
- - Nexus:8081
15
- - SonarQube:9000
16
+ - SonarQube:19000
17
+ - Nexus:18081
16
18
- Jenkins:18080
17
19
18
20
## Gitlab + Redis + Postgresql
19
21
22
+ - 预计会使用内存:2G 左右
20
23
- 创建宿主机挂载目录:` mkdir -p /data/docker/gitlab/gitlab /data/docker/gitlab/redis /data/docker/gitlab/postgresql `
24
+ - 赋权(避免挂载的时候,一些程序需要容器中的用户的特定权限使用):` chmod -R 777 /data/docker/gitlab/gitlab /data/docker/gitlab/redis /data/docker/gitlab/postgresql `
21
25
- 这里使用 docker-compose 的启动方式,所以需要创建 docker-compose.yml 文件:
22
26
23
- ``` yml
24
- gitlab :
25
- image : sameersbn/gitlab
26
- ports :
27
- - " 10022:22"
28
- - " 10080:80"
29
- links :
30
- - gitlab-redis:redisio
31
- - gitlab-postgresql:postgresql
32
- environment :
33
- - GITLAB_PORT=80
34
- - GITLAB_SSH_PORT=22
35
- - GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alpha-numeric-string
36
- - GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alpha-numeric-string
37
- - GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alpha-numeric-string
38
- volumes :
39
- - /data/docker/gitlab/gitlab:/home/git/data
40
- restart : always
41
- gitlab-redis :
42
- image : sameersbn/redis
43
- volumes :
44
- - /data/docker/gitlab/redis:/var/lib/redis
45
- restart : always
46
- gitlab-postgresql :
47
- image : sameersbn/postgresql:9.6
48
- environment :
49
- - DB_NAME=gitlabhq_production
27
+ ``` yaml
28
+ version : ' 2'
29
+
30
+ services :
31
+ redis :
32
+ restart : always
33
+ image : sameersbn/redis:latest
34
+ command :
35
+ - --loglevel warning
36
+ volumes :
37
+ - /data/docker/gitlab/redis:/var/lib/redis:Z
38
+
39
+ postgresql :
40
+ restart : always
41
+ image : sameersbn/postgresql:9.6-2
42
+ volumes :
43
+ - /data/docker/gitlab/postgresql:/var/lib/postgresql:Z
44
+ environment :
50
45
- DB_USER=gitlab
51
46
- DB_PASS=password
47
+ - DB_NAME=gitlabhq_production
52
48
- DB_EXTENSION=pg_trgm
53
- volumes :
54
- - /data/docker/gitlab/postgresql:/var/lib/postgresql
55
- restart : always
49
+
50
+ gitlab :
51
+ restart : always
52
+ image : sameersbn/gitlab:10.4.2-1
53
+ depends_on :
54
+ - redis
55
+ - postgresql
56
+ ports :
57
+ - " 10080:80"
58
+ - " 10022:22"
59
+ volumes :
60
+ - /data/docker/gitlab/gitlab:/home/git/data:Z
61
+ environment :
62
+ - DEBUG=false
63
+
64
+ - DB_ADAPTER=postgresql
65
+ - DB_HOST=postgresql
66
+ - DB_PORT=5432
67
+ - DB_USER=gitlab
68
+ - DB_PASS=password
69
+ - DB_NAME=gitlabhq_production
70
+
71
+ - REDIS_HOST=redis
72
+ - REDIS_PORT=6379
73
+
74
+ - TZ=Asia/Kolkata
75
+ - GITLAB_TIMEZONE=Kolkata
76
+
77
+ - GITLAB_HTTPS=false
78
+ - SSL_SELF_SIGNED=false
79
+
80
+ - GITLAB_HOST=localhost
81
+ - GITLAB_PORT=10080
82
+ - GITLAB_SSH_PORT=10022
83
+ - GITLAB_RELATIVE_URL_ROOT=
84
+ - GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alphanumeric-string
85
+ - GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alphanumeric-string
86
+ - GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alphanumeric-string
87
+
88
+ - GITLAB_ROOT_PASSWORD=
89
+ - GITLAB_ROOT_EMAIL=
90
+
91
+ - GITLAB_NOTIFY_ON_BROKEN_BUILDS=true
92
+ - GITLAB_NOTIFY_PUSHER=false
93
+
94
+ - GITLAB_EMAIL=notifications@example.com
95
+ - GITLAB_EMAIL_REPLY_TO=noreply@example.com
96
+ - GITLAB_INCOMING_EMAIL_ADDRESS=reply@example.com
97
+
98
+ - GITLAB_BACKUP_SCHEDULE=daily
99
+ - GITLAB_BACKUP_TIME=01:00
100
+
101
+ - SMTP_ENABLED=false
102
+ - SMTP_DOMAIN=www.example.com
103
+ - SMTP_HOST=smtp.gmail.com
104
+ - SMTP_PORT=587
105
+ - SMTP_USER=mailer@example.com
106
+ - SMTP_PASS=password
107
+ - SMTP_STARTTLS=true
108
+ - SMTP_AUTHENTICATION=login
109
+
110
+ - IMAP_ENABLED=false
111
+ - IMAP_HOST=imap.gmail.com
112
+ - IMAP_PORT=993
113
+ - IMAP_USER=mailer@example.com
114
+ - IMAP_PASS=password
115
+ - IMAP_SSL=true
116
+ - IMAP_STARTTLS=false
117
+
118
+ - OAUTH_ENABLED=false
119
+ - OAUTH_AUTO_SIGN_IN_WITH_PROVIDER=
120
+ - OAUTH_ALLOW_SSO=
121
+ - OAUTH_BLOCK_AUTO_CREATED_USERS=true
122
+ - OAUTH_AUTO_LINK_LDAP_USER=false
123
+ - OAUTH_AUTO_LINK_SAML_USER=false
124
+ - OAUTH_EXTERNAL_PROVIDERS=
125
+
126
+ - OAUTH_CAS3_LABEL=cas3
127
+ - OAUTH_CAS3_SERVER=
128
+ - OAUTH_CAS3_DISABLE_SSL_VERIFICATION=false
129
+ - OAUTH_CAS3_LOGIN_URL=/cas/login
130
+ - OAUTH_CAS3_VALIDATE_URL=/cas/p3/serviceValidate
131
+ - OAUTH_CAS3_LOGOUT_URL=/cas/logout
132
+
133
+ - OAUTH_GOOGLE_API_KEY=
134
+ - OAUTH_GOOGLE_APP_SECRET=
135
+ - OAUTH_GOOGLE_RESTRICT_DOMAIN=
136
+
137
+ - OAUTH_FACEBOOK_API_KEY=
138
+ - OAUTH_FACEBOOK_APP_SECRET=
139
+
140
+ - OAUTH_TWITTER_API_KEY=
141
+ - OAUTH_TWITTER_APP_SECRET=
142
+
143
+ - OAUTH_GITHUB_API_KEY=
144
+ - OAUTH_GITHUB_APP_SECRET=
145
+ - OAUTH_GITHUB_URL=
146
+ - OAUTH_GITHUB_VERIFY_SSL=
147
+
148
+ - OAUTH_GITLAB_API_KEY=
149
+ - OAUTH_GITLAB_APP_SECRET=
150
+
151
+ - OAUTH_BITBUCKET_API_KEY=
152
+ - OAUTH_BITBUCKET_APP_SECRET=
153
+
154
+ - OAUTH_SAML_ASSERTION_CONSUMER_SERVICE_URL=
155
+ - OAUTH_SAML_IDP_CERT_FINGERPRINT=
156
+ - OAUTH_SAML_IDP_SSO_TARGET_URL=
157
+ - OAUTH_SAML_ISSUER=
158
+ - OAUTH_SAML_LABEL="Our SAML Provider"
159
+ - OAUTH_SAML_NAME_IDENTIFIER_FORMAT=urn:oasis:names:tc:SAML:2.0:nameid-format:transient
160
+ - OAUTH_SAML_GROUPS_ATTRIBUTE=
161
+ - OAUTH_SAML_EXTERNAL_GROUPS=
162
+ - OAUTH_SAML_ATTRIBUTE_STATEMENTS_EMAIL=
163
+ - OAUTH_SAML_ATTRIBUTE_STATEMENTS_NAME=
164
+ - OAUTH_SAML_ATTRIBUTE_STATEMENTS_FIRST_NAME=
165
+ - OAUTH_SAML_ATTRIBUTE_STATEMENTS_LAST_NAME=
166
+
167
+ - OAUTH_CROWD_SERVER_URL=
168
+ - OAUTH_CROWD_APP_NAME=
169
+ - OAUTH_CROWD_APP_PASSWORD=
170
+
171
+ - OAUTH_AUTH0_CLIENT_ID=
172
+ - OAUTH_AUTH0_CLIENT_SECRET=
173
+ - OAUTH_AUTH0_DOMAIN=
174
+
175
+ - OAUTH_AZURE_API_KEY=
176
+ - OAUTH_AZURE_API_SECRET=
177
+ - OAUTH_AZURE_TENANT_ID=
56
178
` ` `
57
179
58
- - 启动:` docker-compose up -d`
59
- - 浏览器访问:<http://192.168.0.105:10080/users/sign_in>
60
180
181
+ - 启动:` docker-compose up -d`
182
+ - 浏览器访问 Gitlab:<http://119.23.252.150:10080/users/sign_in>
61
183
62
184
63
185
# # Nexus + Jenkins + SonarQube
64
186
65
-
187
+ - 预计会使用内存:4G 左右
66
188
- 创建宿主机挂载目录:`mkdir -p /data/docker/ci/nexus /data/docker/ci/jenkins /data/docker/ci/sonarqube /data/docker/ci/postgresql`
189
+ - 赋权(避免挂载的时候,一些程序需要容器中的用户的特定权限使用):`chmod -R 777 /data/docker/ci/nexus /data/docker/ci/jenkins /data/docker/ci/sonarqube /data/docker/ci/postgresql`
67
190
- 这里使用 docker-compose 的启动方式,所以需要创建 docker-compose.yml 文件:
68
191
69
- ` ` `
70
- version: '2 '
192
+ ` ` ` yaml
193
+ version: '3 '
71
194
72
195
networks:
73
196
prodnetwork:
74
197
driver: bridge
75
198
76
199
services:
200
+ sonardb:
201
+ image: postgres:9.6.6
202
+ restart: always
203
+ ports:
204
+ - "5433:5432"
205
+ networks:
206
+ - prodnetwork
207
+ volumes:
208
+ - /data/docker/ci/postgresql:/var/lib/postgresql
209
+ environment:
210
+ - POSTGRES_USER=sonar
211
+ - POSTGRES_PASSWORD=sonar
212
+ sonar:
213
+ image: sonarqube:6.7.1
214
+ restart: always
215
+ ports:
216
+ - "19000:9000"
217
+ - "19092:9092"
218
+ #networks:
219
+ #- prodnetwork
220
+ depends_on:
221
+ - sonardb
222
+ volumes:
223
+ - /data/docker/ci/sonarqube/conf:/opt/sonarqube/conf
224
+ - /data/docker/ci/sonarqube/data:/opt/sonarqube/data
225
+ - /data/docker/ci/sonarqube/extension:/opt/sonarqube/extensions
226
+ - /data/docker/ci/sonarqube/bundled-plugins:/opt/sonarqube/lib/bundled-plugins
227
+ environment:
228
+ #- SONARQUBE_JDBC_URL=jdbc:postgresql://sonardb:5433/sonar
229
+ - SONARQUBE_JDBC_URL=jdbc:postgresql://119.23.252.150:5433/sonar
230
+ - SONARQUBE_JDBC_USERNAME=sonar
231
+ - SONARQUBE_JDBC_PASSWORD=sonar
77
232
nexus:
78
233
image: sonatype/nexus3
79
234
restart: always
@@ -84,7 +239,7 @@ services:
84
239
volumes:
85
240
- /data/docker/ci/nexus:/nexus-data
86
241
jenkins:
87
- image: jenkins
242
+ image: jenkins:2.60.3
88
243
restart: always
89
244
ports:
90
245
- "18080:8080"
@@ -101,44 +256,11 @@ services:
101
256
- NEXUS_PORT=8081
102
257
- SONAR_PORT=9000
103
258
- SONAR_DB_PORT=5432
104
- sonardb:
105
- networks:
106
- - prodnetwork
107
- restart: always
108
- image: postgres:9.6
109
- ports:
110
- - "5433:5432"
111
- volumes:
112
- - /data/docker/ci/postgresql:/var/lib/postgresql
113
- environment:
114
- - POSTGRES_USER=sonar
115
- - POSTGRES_PASSWORD=sonar
116
- sonar:
117
- image: sonarqube
118
- restart: always
119
- ports:
120
- - "19000:9000"
121
- - "19092:9092"
122
- networks:
123
- - prodnetwork
124
- depends_on:
125
- - sonardb
126
- volumes:
127
- - /data/docker/ci/sonarqube:/opt/sonarqube
128
- environment:
129
- - SONARQUBE_JDBC_URL=jdbc:postgresql://sonardb:5433/sonar
130
- - SONARQUBE_JDBC_USERNAME=sonar
131
- - SONARQUBE_JDBC_PASSWORD=sonar
132
259
` ` `
133
260
134
-
135
-
136
-
137
-
138
-
139
-
140
-
141
-
261
+ - 浏览器访问 SonarQube:<http://119.23.252.150:19000>
262
+ - 浏览器访问 Nexus:<http://119.23.252.150:18081>
263
+ - 浏览器访问 Jenkins:<http://119.23.252.150:18080>
142
264
143
265
144
266
0 commit comments