-
Notifications
You must be signed in to change notification settings - Fork 7
/
pipeline.jsonnet
75 lines (65 loc) · 1.99 KB
/
pipeline.jsonnet
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
local source = 'git';
local container = 'dev-container';
local concourse = import 'concourse.libsonnet';
local docker_params(name) = {
tag: '%s/.git/HEAD' % [name],
tag_as_latest: true,
cache: true,
cache_tag: 'latest'
};
local Inputs(dependencies = []) = concourse.Parallel(
[concourse.Get(s, dependencies = dependencies) for s in [source, container]]
);
local Task(name, file = name, image = container, params = {}) = {
task: name,
image: image,
params: { CI: true } + params,
file: '%s/pipeline/tasks/%s/task.yml' % [source, file]
};
local resources = [
concourse.GitResource(source, 'https://github.com/sirech/example-concourse-pipeline.git'),
concourse.DockerResource(container, 'registry:5000/dev-container', allow_insecure = true),
concourse.DockerResource('serverspec-container', 'sirech/dind-ruby', tag = '2.6.3'),
];
local jobs = [
concourse.Job('prepare', plan = [
concourse.Get(source),
concourse.Parallel([
concourse.Get('serverspec-container'),
{
put: 'dev-container',
params: docker_params(source) + {
build: source,
dockerfile: '%s/Dockerfile.build' % source
}
}
]),
Task('update-pipeline', params = {
CONCOURSE_USER: 'test',
CONCOURSE_PASSWORD: 'test',
CONCOURSE_URL: 'http://web:8080'
})
]),
concourse.Job('lint', plan = [
Inputs('prepare'),
concourse.Parallel(
[Task('lint-%s' % lang, 'linter', params = { TARGET: lang }) for lang in ['sh', 'js', 'css', 'docker']]
)
]),
concourse.Job('test', plan = [
Inputs('prepare'),
Task('test-js', 'tests', params = { TARGET: 'js' })
]),
concourse.Job('build', plan = [
Inputs(['lint', 'test']),
Task('build')
])
];
{
"pipeline.generated.json": {
resources: resources,
jobs: jobs
}
} + {
['pipeline/tasks/%s/task.json' % [task]]: concourse.FileTask('pipeline/tasks/%s/task.sh' % [task], inputs = source, caches = '%s/node_modules' % [source]) for task in ['build', 'linter', 'tests']
}