Skip to content

Commit 7d0dabe

Browse files
Run enterprise tests in CI (#839)
* Run enterprise tests in CI * Disable builtin_role_assignement tests This resource is deprecated * Fix lint and failing test
1 parent e4e425e commit 7d0dabe

File tree

5 files changed

+137
-48
lines changed

5 files changed

+137
-48
lines changed

.drone/drone.jsonnet

Lines changed: 47 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ local images = {
55
lint: 'golangci/golangci-lint:v1.49',
66
terraform: 'hashicorp/terraform',
77
grafana(version): 'grafana/grafana:' + version,
8+
grafanaEnterprise(version): 'grafana/grafana-enterprise:' + version,
89
};
910

1011
local terraformPath = '/drone/terraform-provider-grafana/terraform';
@@ -35,11 +36,14 @@ local secrets = {
3536
cloudOrg: secret('grafana-cloud-org', 'infra/data/ci/terraform-provider-grafana/cloud', 'cloud-org'),
3637
cloudApiKey: secret('grafana-cloud-api-key', 'infra/data/ci/terraform-provider-grafana/cloud', 'cloud-api-key'),
3738

38-
// Grafana Enterprise test secrets (Instance running in Grafana Cloud)
39+
// Grafana Cloud Instance test secrets
3940
cloudInstanceUrl: secret('grafana-cloud-instance-url', 'infra/data/ci/terraform-provider-grafana/cloud', 'cloud-instance-url'),
4041
apiToken: secret('grafana-api-token', 'infra/data/ci/terraform-provider-grafana/cloud', 'api-key'),
4142
smToken: secret('grafana-sm-token', 'infra/data/ci/terraform-provider-grafana/cloud', 'sm-access-token'),
4243
onCallToken: secret('grafana-oncall-token', 'infra/data/ci/terraform-provider-grafana/cloud', 'oncall-access-token'),
44+
45+
// Grafana Enterprise
46+
enterpriseLicense: secret('grafana-enterprise-license', 'infra/data/ci/terraform-provider-grafana/enterprise', 'license.jwt'),
4347
};
4448

4549
local pipeline(name, steps, services=[]) = {
@@ -71,6 +75,39 @@ local onPromoteTrigger = {
7175
},
7276
};
7377

78+
local localTestPipeline(version, name='oss tests: %s' % version, makeTarget='testacc-oss', grafanaEnvMixin={}, grafanaImage=images.grafana) = pipeline(
79+
name,
80+
steps=[
81+
installTerraformStep,
82+
{
83+
name: 'tests',
84+
image: images.go,
85+
commands: [
86+
'sleep 5', // https://docs.drone.io/pipeline/docker/syntax/services/#initialization
87+
'make %s' % makeTarget,
88+
],
89+
environment: {
90+
GRAFANA_URL: 'http://grafana:3000',
91+
GRAFANA_AUTH: 'admin:admin',
92+
GRAFANA_VERSION: version,
93+
GRAFANA_ORG_ID: 1,
94+
TF_ACC_TERRAFORM_PATH: terraformPath,
95+
},
96+
},
97+
],
98+
services=[
99+
{
100+
name: 'grafana',
101+
image: grafanaImage(version),
102+
environment: {
103+
// Prevents error="database is locked"
104+
GF_SERVER_ROOT_URL: 'http://grafana:3000',
105+
GF_DATABASE_URL: 'sqlite3:///var/lib/grafana/grafana.db?cache=private&mode=rwc&_journal_mode=WAL',
106+
} + grafanaEnvMixin,
107+
},
108+
],
109+
);
110+
74111
[
75112
pipeline(
76113
'lint', steps=[
@@ -187,39 +224,14 @@ local onPromoteTrigger = {
187224
]
188225
)
189226
+ withConcurrencyLimit(1),
227+
228+
localTestPipeline(
229+
grafanaVersions[0],
230+
name='enterprise tests',
231+
makeTarget='testacc-enterprise',
232+
grafanaEnvMixin={ GF_ENTERPRISE_LICENSE_TEXT: fromSecret(secrets.enterpriseLicense) },
233+
grafanaImage=images.grafanaEnterprise
234+
),
190235
]
191-
+ [
192-
pipeline(
193-
'oss tests: %s' % version,
194-
steps=[
195-
installTerraformStep,
196-
{
197-
name: 'tests',
198-
image: images.go,
199-
commands: [
200-
'sleep 5', // https://docs.drone.io/pipeline/docker/syntax/services/#initialization
201-
'make testacc-oss',
202-
],
203-
environment: {
204-
GRAFANA_URL: 'http://grafana:3000',
205-
GRAFANA_AUTH: 'admin:admin',
206-
GRAFANA_VERSION: version,
207-
GRAFANA_ORG_ID: 1,
208-
TF_ACC_TERRAFORM_PATH: terraformPath,
209-
},
210-
},
211-
],
212-
services=[
213-
{
214-
name: 'grafana',
215-
image: images.grafana(version),
216-
environment: {
217-
// Prevents error="database is locked"
218-
GF_DATABASE_URL: 'sqlite3:///var/lib/grafana/grafana.db?cache=private&mode=rwc&_journal_mode=WAL',
219-
},
220-
},
221-
],
222-
)
223-
for version in grafanaVersions
224-
]
236+
+ [localTestPipeline(version) for version in grafanaVersions]
225237
+ std.objectValuesAll(secrets)

.drone/drone.yml

Lines changed: 52 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,13 +165,54 @@ workspace:
165165
path: /drone/terraform-provider-grafana
166166
---
167167
kind: pipeline
168+
name: enterprise tests
169+
platform:
170+
arch: amd64
171+
os: linux
172+
services:
173+
- environment:
174+
GF_DATABASE_URL: sqlite3:///var/lib/grafana/grafana.db?cache=private&mode=rwc&_journal_mode=WAL
175+
GF_ENTERPRISE_LICENSE_TEXT:
176+
from_secret: grafana-enterprise-license
177+
GF_SERVER_ROOT_URL: http://grafana:3000
178+
image: grafana/grafana-enterprise:9.4.3
179+
name: grafana
180+
steps:
181+
- commands:
182+
- cp /bin/terraform /drone/terraform-provider-grafana/terraform
183+
- chmod a+x /drone/terraform-provider-grafana/terraform
184+
image: hashicorp/terraform
185+
name: download-terraform
186+
- commands:
187+
- sleep 5
188+
- make testacc-enterprise
189+
environment:
190+
GRAFANA_AUTH: admin:admin
191+
GRAFANA_ORG_ID: 1
192+
GRAFANA_URL: http://grafana:3000
193+
GRAFANA_VERSION: 9.4.3
194+
TF_ACC_TERRAFORM_PATH: /drone/terraform-provider-grafana/terraform
195+
image: golang:1.18
196+
name: tests
197+
trigger:
198+
branch:
199+
- master
200+
event:
201+
- pull_request
202+
- push
203+
type: docker
204+
workspace:
205+
path: /drone/terraform-provider-grafana
206+
---
207+
kind: pipeline
168208
name: 'oss tests: 9.4.3'
169209
platform:
170210
arch: amd64
171211
os: linux
172212
services:
173213
- environment:
174214
GF_DATABASE_URL: sqlite3:///var/lib/grafana/grafana.db?cache=private&mode=rwc&_journal_mode=WAL
215+
GF_SERVER_ROOT_URL: http://grafana:3000
175216
image: grafana/grafana:9.4.3
176217
name: grafana
177218
steps:
@@ -209,6 +250,7 @@ platform:
209250
services:
210251
- environment:
211252
GF_DATABASE_URL: sqlite3:///var/lib/grafana/grafana.db?cache=private&mode=rwc&_journal_mode=WAL
253+
GF_SERVER_ROOT_URL: http://grafana:3000
212254
image: grafana/grafana:9.3.8
213255
name: grafana
214256
steps:
@@ -246,6 +288,7 @@ platform:
246288
services:
247289
- environment:
248290
GF_DATABASE_URL: sqlite3:///var/lib/grafana/grafana.db?cache=private&mode=rwc&_journal_mode=WAL
291+
GF_SERVER_ROOT_URL: http://grafana:3000
249292
image: grafana/grafana:9.2.13
250293
name: grafana
251294
steps:
@@ -283,6 +326,7 @@ platform:
283326
services:
284327
- environment:
285328
GF_DATABASE_URL: sqlite3:///var/lib/grafana/grafana.db?cache=private&mode=rwc&_journal_mode=WAL
329+
GF_SERVER_ROOT_URL: http://grafana:3000
286330
image: grafana/grafana:8.5.21
287331
name: grafana
288332
steps:
@@ -320,6 +364,7 @@ platform:
320364
services:
321365
- environment:
322366
GF_DATABASE_URL: sqlite3:///var/lib/grafana/grafana.db?cache=private&mode=rwc&_journal_mode=WAL
367+
GF_SERVER_ROOT_URL: http://grafana:3000
323368
image: grafana/grafana:7.5.17
324369
name: grafana
325370
steps:
@@ -373,6 +418,12 @@ get:
373418
kind: secret
374419
name: grafana-cloud-org
375420
---
421+
get:
422+
name: license.jwt
423+
path: infra/data/ci/terraform-provider-grafana/enterprise
424+
kind: secret
425+
name: grafana-enterprise-license
426+
---
376427
get:
377428
name: oncall-access-token
378429
path: infra/data/ci/terraform-provider-grafana/cloud
@@ -386,6 +437,6 @@ kind: secret
386437
name: grafana-sm-token
387438
---
388439
kind: signature
389-
hmac: 7ab2509c5c2bafb65a9efd5ac3cad08d9af6514714c7e4d7b6865c2dfe97ea07
440+
hmac: 31e7676bf05214d323f3b26d66c84c6e111f193e924db7f491e1de7210992d05
390441

391442
...

internal/resources/grafana/resource_role_assignment_test.go

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"fmt"
55
"testing"
66

7+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
78
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
89
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
910

@@ -16,16 +17,18 @@ func TestRoleAssignments(t *testing.T) {
1617
testutils.CheckEnterpriseTestsEnabled(t)
1718
var roleAssignment gapi.RoleAssignments
1819

20+
testName := acctest.RandString(10)
21+
1922
resource.ParallelTest(t, resource.TestCase{
2023
ProviderFactories: testutils.ProviderFactories,
2124
CheckDestroy: testRoleAssignmentCheckDestroy(&roleAssignment),
2225
Steps: []resource.TestStep{
2326
{
24-
Config: fmt.Sprintf(roleAssignmentConfig, roleUID),
27+
Config: roleAssignmentConfig(testName),
2528
Check: resource.ComposeTestCheckFunc(
2629
testRoleAssignmentCheckExists("grafana_role_assignment.test", &roleAssignment),
2730
resource.TestCheckResourceAttr(
28-
"grafana_role_assignment.test", "role_uid", roleUID,
31+
"grafana_role_assignment.test", "role_uid", testName,
2932
),
3033
resource.TestCheckResourceAttr(
3134
"grafana_role_assignment.test", "users.#", "2",
@@ -39,7 +42,7 @@ func TestRoleAssignments(t *testing.T) {
3942
),
4043
},
4144
{
42-
Config: fmt.Sprintf(roleAssignmentConfig, roleUID),
45+
Config: roleAssignmentConfig(testName),
4346
Destroy: true,
4447
},
4548
},
@@ -81,28 +84,39 @@ func testRoleAssignmentCheckDestroy(ra *gapi.RoleAssignments) resource.TestCheck
8184
}
8285
}
8386

84-
var roleUID = "terraform_test_role"
87+
func roleAssignmentConfig(name string) string {
88+
return fmt.Sprintf(`
89+
resource "grafana_role" "test" {
90+
name = "%[1]s"
91+
description = "test desc"
92+
version = 1
93+
uid = "%[1]s"
94+
global = true
95+
group = "testgroup"
96+
display_name = "testdisplay"
97+
hidden = true
98+
}
8599
86-
var roleAssignmentConfig = `
87100
resource "grafana_team" "test_team" {
88-
name = "terraform_test_team"
101+
name = "%[1]s"
89102
}
90103
91104
resource "grafana_user" "test_user" {
92-
email = "terraform_user@test.com"
93-
login = "terraform_user@test.com"
105+
email = "%[1]s-1@test.com"
106+
login = "%[1]s-1@test.com"
94107
password = "12345"
95108
}
96109
97110
resource "grafana_user" "test_user2" {
98-
email = "terraform_user2@test.com"
99-
login = "terraform_user2@test.com"
111+
email = "%[1]s-2@test.com"
112+
login = "%[1]s-2@test.com"
100113
password = "12345"
101114
}
102115
103116
resource "grafana_role_assignment" "test" {
104-
role_uid = "%s"
117+
role_uid = grafana_role.test.uid
105118
users = [grafana_user.test_user.id, grafana_user.test_user2.id]
106119
teams = [grafana_team.test_team.id]
107120
}
108-
`
121+
`, name)
122+
}

internal/resources/grafana/resource_builtin_role_assignment.go renamed to internal/resources/grafana/zzz_deprecated_resource_builtin_role_assignment.go

File renamed without changes.

0 commit comments

Comments
 (0)