gitlab-qa 2.7.3 → 2.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitlab-ci.yml +24 -0
- data/bin/notify_upstream_commit +50 -0
- data/fixtures/ldap/1_add_nodes.ldif +7 -0
- data/fixtures/ldap/2_add_users.ldif +237 -0
- data/fixtures/ldap/3_add_groups.ldif +39 -0
- data/lib/gitlab/qa/component/ldap.rb +3 -3
- data/lib/gitlab/qa/scenario/test/integration/ldap_no_tls.rb +2 -0
- data/lib/gitlab/qa/scenario/test/integration/ldap_tls.rb +2 -0
- data/lib/gitlab/qa/version.rb +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 10cf0ac3fcf95c6576b31b1c1fb0947b6a2f9eb5bb1bfc78281e4375001ecdc4
|
4
|
+
data.tar.gz: 2ed071bfb04c06a6004c1669e981aeb3f3673b1512fde01bf31dadb94a794d0d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 597b819e4181911f326165fe5e6e26ded947992e55dbc994cd4568172ba4f9102011fdb7b238f74c4a1a92ee4189658a8d32ccfa98bb9ea944a9cddbc54a8757
|
7
|
+
data.tar.gz: a05d29929286348904d2c12c2d247bf19c2654cb0598512e4ce7b7ba8eb145d2a939fd1a055b63af79060f58f1c0b5ba901a202d65b7d650c8ea24baf59236c3
|
data/.gitlab-ci.yml
CHANGED
@@ -4,12 +4,14 @@ services:
|
|
4
4
|
stages:
|
5
5
|
- check
|
6
6
|
- test
|
7
|
+
- notify
|
7
8
|
|
8
9
|
variables:
|
9
10
|
TEST_IMAGE: registry.gitlab.com/gitlab-org/gitlab-build-images:gitlab-qa
|
10
11
|
DOCKER_DRIVER: overlay
|
11
12
|
DOCKER_HOST: tcp://docker:2375
|
12
13
|
QA_ARTIFACTS_DIR: $CI_PROJECT_DIR
|
14
|
+
QA_CAN_TEST_GIT_PROTOCOL_V2: 'false'
|
13
15
|
|
14
16
|
before_script:
|
15
17
|
- bundle install
|
@@ -248,3 +250,25 @@ ee:object_storage:
|
|
248
250
|
<<: *test
|
249
251
|
<<: *high-capacity
|
250
252
|
<<: *ee-qa
|
253
|
+
|
254
|
+
.notify_upstream_commit: ¬ify_upstream_commit
|
255
|
+
stage: notify
|
256
|
+
image: $TEST_IMAGE
|
257
|
+
before_script:
|
258
|
+
- gem install gitlab --no-document
|
259
|
+
only:
|
260
|
+
variables:
|
261
|
+
- $TOP_UPSTREAM_SOURCE_PROJECT
|
262
|
+
- $TOP_UPSTREAM_SOURCE_SHA
|
263
|
+
|
264
|
+
notify_upstream_commit:success:
|
265
|
+
<<: *notify_upstream_commit
|
266
|
+
script:
|
267
|
+
- bin/notify_upstream_commit success
|
268
|
+
when: on_success
|
269
|
+
|
270
|
+
notify_upstream_commit:failure:
|
271
|
+
<<: *notify_upstream_commit
|
272
|
+
script:
|
273
|
+
- bin/notify_upstream_commit failure
|
274
|
+
when: on_failure
|
@@ -0,0 +1,50 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require 'gitlab'
|
5
|
+
|
6
|
+
# Configure credentials to be used with gitlab gem
|
7
|
+
Gitlab.configure do |config|
|
8
|
+
config.endpoint = 'https://gitlab.com/api/v4'
|
9
|
+
config.private_token = ENV['GITLAB_BOT_MULTI_PROJECT_PIPELINE_POLLING_TOKEN']
|
10
|
+
end
|
11
|
+
|
12
|
+
class CommitComment
|
13
|
+
def self.post!(status)
|
14
|
+
unless ENV['TOP_UPSTREAM_SOURCE_SHA']
|
15
|
+
puts "The 'TOP_UPSTREAM_SOURCE_SHA' environment variable is missing, cannot post a comment on a missing upstream commit."
|
16
|
+
return
|
17
|
+
end
|
18
|
+
|
19
|
+
top_upstream_source_sha = ENV['TOP_UPSTREAM_SOURCE_SHA']
|
20
|
+
|
21
|
+
unless ENV['TOP_UPSTREAM_SOURCE_PROJECT']
|
22
|
+
puts "The 'TOP_UPSTREAM_SOURCE_PROJECT' environment variable is missing, cannot post a comment on the upstream #{top_upstream_source_sha} commit."
|
23
|
+
return
|
24
|
+
end
|
25
|
+
|
26
|
+
top_upstream_source_project = ENV['TOP_UPSTREAM_SOURCE_PROJECT']
|
27
|
+
|
28
|
+
status_with_icon =
|
29
|
+
case status
|
30
|
+
when :success
|
31
|
+
"passed. :white_check_mark:"
|
32
|
+
when :failure
|
33
|
+
"failed! :boom:"
|
34
|
+
end
|
35
|
+
|
36
|
+
Gitlab.create_commit_comment(
|
37
|
+
top_upstream_source_project,
|
38
|
+
top_upstream_source_sha,
|
39
|
+
"The [`gitlab-qa` downstream pipeline](#{ENV['CI_PIPELINE_URL']}) #{status_with_icon}")
|
40
|
+
rescue Gitlab::Error::Error => error
|
41
|
+
puts "Ignoring the following error: #{error}"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
status = ARGV[0].to_s.strip
|
46
|
+
if status != ''
|
47
|
+
CommitComment.post!(status.to_sym)
|
48
|
+
else
|
49
|
+
puts "Please provide a status!"
|
50
|
+
end
|
@@ -0,0 +1,237 @@
|
|
1
|
+
|
2
|
+
# 1. Human Resources
|
3
|
+
|
4
|
+
dn: uid=hruser1,ou=People,ou=Global Groups,dc=example,dc=org
|
5
|
+
cn: HR User 1
|
6
|
+
givenName: HR
|
7
|
+
sn: User1
|
8
|
+
uid: hruser1
|
9
|
+
uidNumber: 5000
|
10
|
+
gidNumber: 10000
|
11
|
+
homeDirectory: /home/hruser1
|
12
|
+
mail: hruser1@example.org
|
13
|
+
objectClass: top
|
14
|
+
objectClass: posixAccount
|
15
|
+
objectClass: shadowAccount
|
16
|
+
objectClass: inetOrgPerson
|
17
|
+
objectClass: organizationalPerson
|
18
|
+
objectClass: person
|
19
|
+
loginShell: /bin/bash
|
20
|
+
# hashed value for 'password'
|
21
|
+
userPassword: {SSHA}ICMhr6Jxt5bk2awD7HL7GxRTM3BZ1pFI
|
22
|
+
|
23
|
+
dn: uid=hruser2,ou=People,ou=Global Groups,dc=example,dc=org
|
24
|
+
cn: HR User 2
|
25
|
+
givenName: HR
|
26
|
+
sn: User2
|
27
|
+
uid: hruser2
|
28
|
+
uidNumber: 5001
|
29
|
+
gidNumber: 10001
|
30
|
+
homeDirectory: /home/hruser2
|
31
|
+
mail: hruser2@example.org
|
32
|
+
objectClass: top
|
33
|
+
objectClass: posixAccount
|
34
|
+
objectClass: shadowAccount
|
35
|
+
objectClass: inetOrgPerson
|
36
|
+
objectClass: organizationalPerson
|
37
|
+
objectClass: person
|
38
|
+
loginShell: /bin/bash
|
39
|
+
# hashed value for 'password'
|
40
|
+
userPassword: {SSHA}ICMhr6Jxt5bk2awD7HL7GxRTM3BZ1pFI
|
41
|
+
|
42
|
+
dn: uid=hruser3,ou=People,ou=Global Groups,dc=example,dc=org
|
43
|
+
cn: HR User 3
|
44
|
+
givenName: HR
|
45
|
+
sn: User3
|
46
|
+
uid: hruser3
|
47
|
+
uidNumber: 5002
|
48
|
+
gidNumber: 10002
|
49
|
+
homeDirectory: /home/hruser3
|
50
|
+
mail: hruser3@example.org
|
51
|
+
objectClass: top
|
52
|
+
objectClass: posixAccount
|
53
|
+
objectClass: shadowAccount
|
54
|
+
objectClass: inetOrgPerson
|
55
|
+
objectClass: organizationalPerson
|
56
|
+
objectClass: person
|
57
|
+
loginShell: /bin/bash
|
58
|
+
# hashed value for 'password'
|
59
|
+
userPassword: {SSHA}ICMhr6Jxt5bk2awD7HL7GxRTM3BZ1pFI
|
60
|
+
|
61
|
+
# 2. Engineering
|
62
|
+
|
63
|
+
dn: uid=enguser1,ou=People,ou=Global Groups,dc=example,dc=org
|
64
|
+
cn: ENG User 1
|
65
|
+
givenName: ENG
|
66
|
+
sn: User1
|
67
|
+
uid: enguser1
|
68
|
+
uidNumber: 5003
|
69
|
+
gidNumber: 10003
|
70
|
+
homeDirectory: /home/enguser1
|
71
|
+
mail: enguser1@example.org
|
72
|
+
objectClass: top
|
73
|
+
objectClass: posixAccount
|
74
|
+
objectClass: shadowAccount
|
75
|
+
objectClass: inetOrgPerson
|
76
|
+
objectClass: organizationalPerson
|
77
|
+
objectClass: person
|
78
|
+
loginShell: /bin/bash
|
79
|
+
# hashed value for 'password'
|
80
|
+
userPassword: {SSHA}ICMhr6Jxt5bk2awD7HL7GxRTM3BZ1pFI
|
81
|
+
|
82
|
+
dn: uid=enguser2,ou=People,ou=Global Groups,dc=example,dc=org
|
83
|
+
cn: ENG User 2
|
84
|
+
givenName: ENG
|
85
|
+
sn: User2
|
86
|
+
uid: enguser2
|
87
|
+
uidNumber: 5004
|
88
|
+
gidNumber: 10004
|
89
|
+
homeDirectory: /home/enguser2
|
90
|
+
mail: enguser2@example.org
|
91
|
+
objectClass: top
|
92
|
+
objectClass: posixAccount
|
93
|
+
objectClass: shadowAccount
|
94
|
+
objectClass: inetOrgPerson
|
95
|
+
objectClass: organizationalPerson
|
96
|
+
objectClass: person
|
97
|
+
loginShell: /bin/bash
|
98
|
+
# hashed value for 'password'
|
99
|
+
userPassword: {SSHA}ICMhr6Jxt5bk2awD7HL7GxRTM3BZ1pFI
|
100
|
+
|
101
|
+
dn: uid=enguser3,ou=People,ou=Global Groups,dc=example,dc=org
|
102
|
+
cn: ENG User 3
|
103
|
+
givenName: ENG
|
104
|
+
sn: User3
|
105
|
+
uid: enguser3
|
106
|
+
uidNumber: 5005
|
107
|
+
gidNumber: 10005
|
108
|
+
homeDirectory: /home/enguser3
|
109
|
+
mail: enguser3@example.org
|
110
|
+
objectClass: top
|
111
|
+
objectClass: posixAccount
|
112
|
+
objectClass: shadowAccount
|
113
|
+
objectClass: inetOrgPerson
|
114
|
+
objectClass: organizationalPerson
|
115
|
+
objectClass: person
|
116
|
+
loginShell: /bin/bash
|
117
|
+
# hashed value for 'password'
|
118
|
+
userPassword: {SSHA}ICMhr6Jxt5bk2awD7HL7GxRTM3BZ1pFI
|
119
|
+
|
120
|
+
|
121
|
+
# 3. Security
|
122
|
+
|
123
|
+
dn: uid=securityuser1,ou=People,ou=Global Groups,dc=example,dc=org
|
124
|
+
cn: Security User 1
|
125
|
+
givenName: Security
|
126
|
+
sn: User1
|
127
|
+
uid: securityuser1
|
128
|
+
uidNumber: 5006
|
129
|
+
gidNumber: 10006
|
130
|
+
homeDirectory: /home/securityuser1
|
131
|
+
mail: securityuser1@example.org
|
132
|
+
objectClass: top
|
133
|
+
objectClass: posixAccount
|
134
|
+
objectClass: shadowAccount
|
135
|
+
objectClass: inetOrgPerson
|
136
|
+
objectClass: organizationalPerson
|
137
|
+
objectClass: person
|
138
|
+
loginShell: /bin/bash
|
139
|
+
# hashed value for 'password'
|
140
|
+
userPassword: {SSHA}ICMhr6Jxt5bk2awD7HL7GxRTM3BZ1pFI
|
141
|
+
|
142
|
+
dn: uid=securityuser2,ou=People,ou=Global Groups,dc=example,dc=org
|
143
|
+
cn: Security User 2
|
144
|
+
givenName: Security
|
145
|
+
sn: User2
|
146
|
+
uid: securityuser2
|
147
|
+
uidNumber: 5007
|
148
|
+
gidNumber: 10007
|
149
|
+
homeDirectory: /home/securityuser2
|
150
|
+
mail: securityuser1@example.org
|
151
|
+
objectClass: top
|
152
|
+
objectClass: posixAccount
|
153
|
+
objectClass: shadowAccount
|
154
|
+
objectClass: inetOrgPerson
|
155
|
+
objectClass: organizationalPerson
|
156
|
+
objectClass: person
|
157
|
+
loginShell: /bin/bash
|
158
|
+
# hashed value for 'password'
|
159
|
+
userPassword: {SSHA}ICMhr6Jxt5bk2awD7HL7GxRTM3BZ1pFI
|
160
|
+
|
161
|
+
dn: uid=securityuser3,ou=People,ou=Global Groups,dc=example,dc=org
|
162
|
+
cn: Security User 3
|
163
|
+
givenName: Security
|
164
|
+
sn: User3
|
165
|
+
uid: securityuser3
|
166
|
+
uidNumber: 5008
|
167
|
+
gidNumber: 10008
|
168
|
+
homeDirectory: /home/securityuser3
|
169
|
+
mail: securityuser3@example.org
|
170
|
+
objectClass: top
|
171
|
+
objectClass: posixAccount
|
172
|
+
objectClass: shadowAccount
|
173
|
+
objectClass: inetOrgPerson
|
174
|
+
objectClass: organizationalPerson
|
175
|
+
objectClass: person
|
176
|
+
loginShell: /bin/bash
|
177
|
+
# hashed value for 'password'
|
178
|
+
userPassword: {SSHA}ICMhr6Jxt5bk2awD7HL7GxRTM3BZ1pFI
|
179
|
+
|
180
|
+
# 3. Admin
|
181
|
+
|
182
|
+
dn: uid=adminuser1,ou=People,ou=Global Groups,dc=example,dc=org
|
183
|
+
cn: Admin User 1
|
184
|
+
givenName: Admin
|
185
|
+
sn: User1
|
186
|
+
uid: adminuser1
|
187
|
+
uidNumber: 5009
|
188
|
+
gidNumber: 10009
|
189
|
+
homeDirectory: /home/adminuser1
|
190
|
+
mail: adminuser1@example.org
|
191
|
+
objectClass: top
|
192
|
+
objectClass: posixAccount
|
193
|
+
objectClass: shadowAccount
|
194
|
+
objectClass: inetOrgPerson
|
195
|
+
objectClass: organizationalPerson
|
196
|
+
objectClass: person
|
197
|
+
loginShell: /bin/bash
|
198
|
+
# hashed value for 'password'
|
199
|
+
userPassword: {SSHA}ICMhr6Jxt5bk2awD7HL7GxRTM3BZ1pFI
|
200
|
+
|
201
|
+
dn: uid=adminuser2,ou=People,ou=Global Groups,dc=example,dc=org
|
202
|
+
cn: Admin User 2
|
203
|
+
givenName: Admin
|
204
|
+
sn: User1
|
205
|
+
uid: adminuser2
|
206
|
+
uidNumber: 5010
|
207
|
+
gidNumber: 10010
|
208
|
+
homeDirectory: /home/adminuser2
|
209
|
+
mail: adminuser2@example.org
|
210
|
+
objectClass: top
|
211
|
+
objectClass: posixAccount
|
212
|
+
objectClass: shadowAccount
|
213
|
+
objectClass: inetOrgPerson
|
214
|
+
objectClass: organizationalPerson
|
215
|
+
objectClass: person
|
216
|
+
loginShell: /bin/bash
|
217
|
+
# hashed value for 'password'
|
218
|
+
userPassword: {SSHA}ICMhr6Jxt5bk2awD7HL7GxRTM3BZ1pFI
|
219
|
+
|
220
|
+
dn: uid=adminuser3,ou=People,ou=Global Groups,dc=example,dc=org
|
221
|
+
cn: Admin User 3
|
222
|
+
givenName: Admin
|
223
|
+
sn: User1
|
224
|
+
uid: adminuser3
|
225
|
+
uidNumber: 5011
|
226
|
+
gidNumber: 10011
|
227
|
+
homeDirectory: /home/adminuser3
|
228
|
+
mail: adminuser3@example.org
|
229
|
+
objectClass: top
|
230
|
+
objectClass: posixAccount
|
231
|
+
objectClass: shadowAccount
|
232
|
+
objectClass: inetOrgPerson
|
233
|
+
objectClass: organizationalPerson
|
234
|
+
objectClass: person
|
235
|
+
loginShell: /bin/bash
|
236
|
+
# hashed value for 'password'
|
237
|
+
userPassword: {SSHA}ICMhr6Jxt5bk2awD7HL7GxRTM3BZ1pFI
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# 1. Human Resources
|
2
|
+
|
3
|
+
dn: cn=Human Resources,ou=Global Groups,dc=example,dc=org
|
4
|
+
objectClass: groupofnames
|
5
|
+
cn: Human Resources
|
6
|
+
description: Human Resources
|
7
|
+
member: uid=hruser1,ou=People,ou=Global Groups,dc=example,dc=org
|
8
|
+
member: uid=hruser2,ou=People,ou=Global Groups,dc=example,dc=org
|
9
|
+
member: uid=hruser3,ou=People,ou=Global Groups,dc=example,dc=org
|
10
|
+
|
11
|
+
# 2. Engineering
|
12
|
+
|
13
|
+
dn: cn=Engineering,ou=Global Groups,dc=example,dc=org
|
14
|
+
objectClass: groupofnames
|
15
|
+
cn: Engineering
|
16
|
+
description: Engineering
|
17
|
+
member: uid=enguser1,ou=People,ou=Global Groups,dc=example,dc=org
|
18
|
+
member: uid=enguser2,ou=People,ou=Global Groups,dc=example,dc=org
|
19
|
+
member: uid=enguser3,ou=People,ou=Global Groups,dc=example,dc=org
|
20
|
+
|
21
|
+
# 3. Security
|
22
|
+
|
23
|
+
dn: cn=Security,ou=Global Groups,dc=example,dc=org
|
24
|
+
objectClass: groupofnames
|
25
|
+
cn: Security
|
26
|
+
description: Security
|
27
|
+
member: uid=securityuser1,ou=People,ou=Global Groups,dc=example,dc=org
|
28
|
+
member: uid=securityuser2,ou=People,ou=Global Groups,dc=example,dc=org
|
29
|
+
member: uid=securityuser3,ou=People,ou=Global Groups,dc=example,dc=org
|
30
|
+
|
31
|
+
# 4. Admin
|
32
|
+
|
33
|
+
dn: cn=AdminGroup,ou=Global Groups,dc=example,dc=org
|
34
|
+
objectClass: groupofnames
|
35
|
+
cn: AdminGroup
|
36
|
+
description: Human Resources
|
37
|
+
member: uid=adminuser1,ou=People,ou=Global Groups,dc=example,dc=org
|
38
|
+
member: uid=adminuser2,ou=People,ou=Global Groups,dc=example,dc=org
|
39
|
+
member: uid=adminuser3,ou=People,ou=Global Groups,dc=example,dc=org
|
@@ -30,8 +30,8 @@ module Gitlab
|
|
30
30
|
BASE_DN = 'dc=example,dc=org'.freeze
|
31
31
|
BIND_DN = 'cn=admin,dc=example,dc=org'.freeze
|
32
32
|
BOOTSTRAP_LDIF = '/container/service/slapd/assets/config/bootstrap/ldif/custom'.freeze
|
33
|
-
GROUP_BASE = 'ou=
|
34
|
-
ADMIN_GROUP = '
|
33
|
+
GROUP_BASE = 'ou=Global Groups,dc=example,dc=org'.freeze
|
34
|
+
ADMIN_GROUP = 'AdminGroup'.freeze
|
35
35
|
FIXTURE_PATH = File.expand_path('../../../../fixtures/ldap'.freeze, __dir__)
|
36
36
|
|
37
37
|
attr_reader :docker
|
@@ -149,7 +149,7 @@ module Gitlab
|
|
149
149
|
uid: 'uid'
|
150
150
|
bind_dn: #{BIND_DN}
|
151
151
|
password: #{ADMIN_PASSWORD}
|
152
|
-
|
152
|
+
encryption: #{tls? ? 'simple_tls' : 'plain'}
|
153
153
|
verify_certificates: false
|
154
154
|
base: #{BASE_DN}
|
155
155
|
user_filter: ''
|
@@ -16,6 +16,8 @@ module Gitlab
|
|
16
16
|
gitlab.omnibus_config = <<~OMNIBUS
|
17
17
|
gitlab_rails['ldap_enabled'] = true;
|
18
18
|
gitlab_rails['ldap_servers'] = #{ldap.to_config};
|
19
|
+
gitlab_rails['ldap_sync_worker_cron'] = '* * * * *';
|
20
|
+
gitlab_rails['ldap_group_sync_worker_cron'] = '* * * * *';
|
19
21
|
OMNIBUS
|
20
22
|
end
|
21
23
|
end
|
@@ -19,6 +19,8 @@ module Gitlab
|
|
19
19
|
gitlab_rails['ldap_servers'] = #{ldap.to_config};
|
20
20
|
letsencrypt['enable'] = false;
|
21
21
|
external_url '#{gitlab.address}';
|
22
|
+
gitlab_rails['ldap_sync_worker_cron'] = '* * * * *';
|
23
|
+
gitlab_rails['ldap_group_sync_worker_cron'] = '* * * * *';
|
22
24
|
OMNIBUS
|
23
25
|
end
|
24
26
|
end
|
data/lib/gitlab/qa/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gitlab-qa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Grzegorz Bizon
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-11-
|
11
|
+
date: 2018-11-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: climate_control
|
@@ -130,6 +130,7 @@ files:
|
|
130
130
|
- Rakefile
|
131
131
|
- bin/console
|
132
132
|
- bin/expect_exit_code_and_text
|
133
|
+
- bin/notify_upstream_commit
|
133
134
|
- bin/qa
|
134
135
|
- bin/setup
|
135
136
|
- docs/README.md
|
@@ -140,6 +141,9 @@ files:
|
|
140
141
|
- docs/waits.md
|
141
142
|
- docs/what_tests_can_be_run.md
|
142
143
|
- exe/gitlab-qa
|
144
|
+
- fixtures/ldap/1_add_nodes.ldif
|
145
|
+
- fixtures/ldap/2_add_users.ldif
|
146
|
+
- fixtures/ldap/3_add_groups.ldif
|
143
147
|
- fixtures/ldap/tanuki.ldif
|
144
148
|
- gitlab-qa.gemspec
|
145
149
|
- lib/gitlab/qa.rb
|