@@ -8,7 +8,8 @@ local images = {
88 grafanaEnterprise(version): 'grafana/grafana-enterprise:' + version,
99};
1010
11- local terraformPath = '/drone/terraform-provider-grafana/terraform' ;
11+ local workspace = '/drone/terraform-provider-grafana' ;
12+ local terraformPath = workspace + '/terraform' ;
1213local installTerraformStep = {
1314 name: 'download-terraform' ,
1415 image: images.terraform,
@@ -51,7 +52,7 @@ local pipeline(name, steps, services=[]) = {
5152 type: 'docker' ,
5253 name: name,
5354 workspace: {
54- path: '/drone/terraform-provider-grafana' ,
55+ path: workspace ,
5556 },
5657 platform: {
5758 os: 'linux' ,
@@ -75,37 +76,45 @@ local onPromoteTrigger = {
7576 },
7677};
7778
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- TF_ACC_TERRAFORM_PATH: terraformPath,
79+ local localTestPipeline(
80+ version,
81+ name='oss tests: %s' % version,
82+ makeTarget='testacc-oss' ,
83+ providerEnvMixin={},
84+ grafanaEnvMixin={},
85+ grafanaImage=images.grafana,
86+ ) =
87+ pipeline(
88+ name,
89+ steps=[
90+ installTerraformStep,
91+ {
92+ name: 'tests' ,
93+ image: images.go,
94+ commands: [
95+ 'sleep 5' , // https://docs.drone.io/pipeline/docker/syntax/services/#initialization
96+ 'make %s' % makeTarget,
97+ ],
98+ environment: {
99+ GRAFANA_URL: 'http://grafana:3000' ,
100+ GRAFANA_AUTH: 'admin:admin' ,
101+ GRAFANA_VERSION: version,
102+ TF_ACC_TERRAFORM_PATH: terraformPath,
103+ } + providerEnvMixin,
94104 },
95- },
96- ],
97- services=[
98- {
99- name: 'grafana' ,
100- image: grafanaImage(version),
101- environment: {
102- // Prevents error="database is locked"
103- GF_SERVER_ROOT_URL: 'http://grafana:3000' ,
104- GF_DATABASE_URL: 'sqlite3:///var/lib/grafana/grafana.db?cache=private&mode=rwc&_journal_mode=WAL' ,
105- } + grafanaEnvMixin,
106- },
107- ],
108- );
105+ ],
106+ services=[
107+ {
108+ name: 'grafana' ,
109+ image: grafanaImage(version),
110+ environment: {
111+ // Prevents error="database is locked"
112+ GF_SERVER_ROOT_URL: 'http://grafana:3000' ,
113+ GF_DATABASE_URL: 'sqlite3:///var/lib/grafana/grafana.db?cache=private&mode=rwc&_journal_mode=WAL' ,
114+ } + grafanaEnvMixin,
115+ },
116+ ],
117+ );
109118
110119[
111120 pipeline(
@@ -223,13 +232,55 @@ local localTestPipeline(version, name='oss tests: %s' % version, makeTarget='tes
223232 )
224233 + withConcurrencyLimit(1 ),
225234
235+ // Grafana Enterprise tests
226236 localTestPipeline(
227237 grafanaVersions[0 ],
228238 name='enterprise tests' ,
229239 makeTarget='testacc-enterprise' ,
230240 grafanaEnvMixin={ GF_ENTERPRISE_LICENSE_TEXT: fromSecret(secrets.enterpriseLicense) },
231241 grafanaImage=images.grafanaEnterprise
232242 ),
243+
244+ // Grafana OSS tests behind a TLS proxy tests
245+ // This is the equivalent of `make testacc-docker-tls`
246+ local certPath = workspace + '/testdata' ;
247+ localTestPipeline(
248+ grafanaVersions[0 ],
249+ name='tls proxy tests' ,
250+ providerEnvMixin={
251+ GRAFANA_URL: 'https://mtls-proxy:3001' ,
252+ GRAFANA_TLS_KEY: '%s/client.key' % certPath,
253+ GRAFANA_TLS_CERT: '%s/client.crt' % certPath,
254+ GRAFANA_CA_CERT: '%s/ca.crt' % certPath,
255+ }
256+ ) + {
257+ steps: [
258+ {
259+ name: 'generate certs' ,
260+ image: images.go,
261+ commands: [
262+ 'cd %s && go run . && ls -lah' % certPath,
263+ ],
264+ depends_on: ['clone' ],
265+ },
266+ {
267+ name: 'mtls-proxy' ,
268+ image: 'squareup/ghostunnel:v1.5.2' ,
269+ detach: true ,
270+ command: [
271+ 'server' ,
272+ '--listen=0.0.0.0:3001' ,
273+ '--target=grafana:3000' ,
274+ '--unsafe-target' ,
275+ '--key=%s/grafana.key' % certPath,
276+ '--cert=%s/grafana.crt' % certPath,
277+ '--cacert=%s/ca.crt' % certPath,
278+ '--allow-cn=client' ,
279+ ],
280+ depends_on: ['generate certs' ],
281+ },
282+ ] + std.map (function (s) s { depends_on: ['generate certs' ] }, super .steps),
283+ },
233284]
234285+ [localTestPipeline(version) for version in grafanaVersions]
235286+ std.objectValuesAll(secrets)
0 commit comments