@@ -15,37 +15,143 @@ export BUILDKITE_JOB_ID=12
15
15
export BUILDKITE_PIPELINE_SLUG=test
16
16
17
17
18
- @test " Build and run in a single step " {
18
+ @test " Build and run" {
19
19
export BUILDKITE_PLUGIN_DOCKER_COMPOSE_RUN=myservice
20
20
export BUILDKITE_PLUGIN_DOCKER_COMPOSE_BUILD=myservice
21
+
22
+ # necessary for build
21
23
export BUILDKITE_PLUGIN_DOCKER_COMPOSE_IMAGE_REPOSITORY=my.repository/llamas
22
- export BUILDKITE_PLUGIN_DOCKER_COMPOSE_CHECK_LINKED_CONTAINERS=false
23
- export BUILDKITE_PLUGIN_DOCKER_COMPOSE_CLEANUP=false
24
24
25
25
stub docker-compose \
26
26
" -f docker-compose.yml -p buildkite12 -f docker-compose.buildkite-1-override.yml build --pull myservice : echo built myservice" \
27
27
" -f docker-compose.yml -p buildkite12 -f docker-compose.buildkite-1-override.yml push myservice : echo pushed myservice" \
28
28
" -f docker-compose.yml -p buildkite12 -f docker-compose.buildkite-1-override.yml pull myservice : echo pulled myservice" \
29
29
" -f docker-compose.yml -p buildkite12 -f docker-compose.buildkite-1-override.yml up -d --scale myservice=0 myservice : echo ran dependencies" \
30
30
" -f docker-compose.yml -p buildkite12 -f docker-compose.buildkite-1-override.yml run --name buildkite12_myservice_build_1 --rm myservice /bin/sh -e -c 'pwd' : echo ran myservice"
31
+
32
+ # these commands simulate metadata for a specific value by using an intermediate-file
33
+ stub buildkite-agent \
34
+ " meta-data set docker-compose-plugin-built-image-tag-myservice \* : echo \$ 4 > /tmp/build-run-metadata" \
35
+ " meta-data exists docker-compose-plugin-built-image-tag-myservice : test -f /tmp/build-run-metadata" \
36
+ " meta-data get docker-compose-plugin-built-image-tag-myservice : cat /tmp/build-run-metadata"
37
+
38
+ run $PWD /hooks/command
39
+
40
+ assert_success
41
+ assert_output --partial " Building services myservice"
42
+ assert_output --partial " Pushing built images to my.repository/llamas"
43
+ assert_output --partial " Found a pre-built image for myservice"
44
+ assert_output --partial " Starting dependencies"
45
+ assert_output --partial " ran myservice"
46
+
47
+ unstub docker-compose
48
+ unstub buildkite-agent
49
+ }
50
+
51
+ @test " Build and push" {
52
+ export BUILDKITE_PLUGIN_DOCKER_COMPOSE_BUILD=myservice
53
+ export BUILDKITE_PLUGIN_DOCKER_COMPOSE_PUSH=myservice
54
+
55
+ # necessary for build
56
+ export BUILDKITE_PLUGIN_DOCKER_COMPOSE_IMAGE_REPOSITORY=my.repository/llamas
57
+
58
+ stub docker-compose \
59
+ " -f docker-compose.yml -p buildkite12 -f docker-compose.buildkite-1-override.yml build --pull myservice : echo built myservice" \
60
+ " -f docker-compose.yml -p buildkite12 -f docker-compose.buildkite-1-override.yml push myservice : echo build-pushed myservice" \
61
+ " -f docker-compose.yml -p buildkite12 config : echo ''" \
62
+ " -f docker-compose.yml -p buildkite12 push myservice : echo push-pushed myservice"
31
63
64
+ # these commands simulate metadata for a specific value by using an intermediate-file
32
65
stub buildkite-agent \
33
- " meta-data set docker-compose-plugin-built-image-tag-myservice my.repository/llamas:test-myservice-build-1 : echo set meta-data" \
34
- " meta-data exists docker-compose-plugin-built-image-tag-myservice : exit 0" \
35
- " meta-data get docker-compose-plugin-built-image-tag-myservice : echo got meta-data"
66
+ " meta-data set docker-compose-plugin-built-image-tag-myservice \* : echo \$ 4 > /tmp/build-push-metadata" \
67
+ " meta-data exists docker-compose-plugin-built-image-tag-myservice : test -f /tmp/build-push-metadata" \
68
+ " meta-data get docker-compose-plugin-built-image-tag-myservice : cat /tmp/build-push-metadata"
69
+
70
+ stub docker \
71
+ " pull my.repository/llamas:test-myservice-build-1 : echo pulled pre-built image" \
72
+ " tag my.repository/llamas:test-myservice-build-1 buildkite12_myservice : echo re-tagged pre-built image"
36
73
37
74
run $PWD /hooks/command
38
75
76
+ assert_success
77
+
78
+ assert_output --partial " Building services myservice"
79
+ assert_output --partial " Pushing built images to my.repository/llamas"
80
+ assert_output --partial " Pulling pre-built service myservice"
81
+ assert_output --partial " Tagging pre-built service myservice"
82
+ assert_output --partial " Pushing images for myservice"
83
+
39
84
unstub docker-compose
40
85
unstub buildkite-agent
86
+ }
87
+
88
+ @test " Run and push without pre-built image" {
89
+ export BUILDKITE_PLUGIN_DOCKER_COMPOSE_RUN=myservice
90
+ export BUILDKITE_PLUGIN_DOCKER_COMPOSE_PUSH=myservice
91
+
92
+ stub docker-compose \
93
+ " -f docker-compose.yml -p buildkite12 build --pull myservice : echo built myservice" \
94
+ " -f docker-compose.yml -p buildkite12 up -d --scale myservice=0 myservice : echo ran dependencies" \
95
+ " -f docker-compose.yml -p buildkite12 run --name buildkite12_myservice_build_1 --rm myservice /bin/sh -e -c 'pwd' : echo ran myservice" \
96
+ " -f docker-compose.yml -p buildkite12 config : echo ''" \
97
+ " -f docker-compose.yml -p buildkite12 build myservice : echo built-2 myservice" \
98
+ " -f docker-compose.yml -p buildkite12 push myservice : echo pushed myservice"
99
+
100
+ # these make sure that the image is not pre-built
101
+ stub buildkite-agent \
102
+ " meta-data exists docker-compose-plugin-built-image-tag-myservice : exit 1" \
103
+ " meta-data exists docker-compose-plugin-built-image-tag-myservice : exit 1"
104
+
105
+ run $PWD /hooks/command
41
106
42
107
assert_success
43
- assert_output --partial " built myservice "
44
- assert_output --partial " pushed myservice"
45
- assert_output --partial " pulled myservice "
46
- assert_output --partial " ran dependencies"
108
+
109
+ assert_output --partial " Building Docker Compose Service: myservice"
110
+ assert_output --partial " No pre-built image found from a previous "
111
+ assert_output --partial " Starting dependencies"
47
112
assert_output --partial " ran myservice"
113
+ assert_output --partial " Building myservice"
114
+ assert_output --partial " Pushing images for myservice"
115
+
116
+ unstub docker-compose
117
+ unstub buildkite-agent
48
118
}
49
119
50
120
121
+ @test " Run and push with pre-built image" {
122
+ export BUILDKITE_PLUGIN_DOCKER_COMPOSE_RUN=myservice
123
+ export BUILDKITE_PLUGIN_DOCKER_COMPOSE_PUSH=myservice
124
+
125
+ stub docker-compose \
126
+ " -f docker-compose.yml -p buildkite12 -f docker-compose.buildkite-1-override.yml pull myservice : echo pulled myservice" \
127
+ " -f docker-compose.yml -p buildkite12 -f docker-compose.buildkite-1-override.yml up -d --scale myservice=0 myservice : echo ran dependencies" \
128
+ " -f docker-compose.yml -p buildkite12 -f docker-compose.buildkite-1-override.yml run --name buildkite12_myservice_build_1 --rm myservice /bin/sh -e -c 'pwd' : echo ran myservice" \
129
+ " -f docker-compose.yml -p buildkite12 config : echo ''" \
130
+ " -f docker-compose.yml -p buildkite12 push myservice : echo pushed myservice"
131
+
132
+ # these make sure that the image is not pre-built
133
+ stub buildkite-agent \
134
+ " meta-data exists docker-compose-plugin-built-image-tag-myservice : exit 0" \
135
+ " meta-data get docker-compose-plugin-built-image-tag-myservice : echo myservice-tag" \
136
+ " meta-data exists docker-compose-plugin-built-image-tag-myservice : exit 0" \
137
+ " meta-data get docker-compose-plugin-built-image-tag-myservice : echo myservice-tag"
138
+
139
+ stub docker \
140
+ " pull myservice-tag : echo pulled pre-built image" \
141
+ " tag myservice-tag buildkite12_myservice : echo re-tagged pre-built image"
142
+
143
+ run $PWD /hooks/command
144
+
145
+ assert_success
146
+
147
+ refute_output --partial " Building services myservice"
148
+ assert_output --partial " Found a pre-built image for myservice"
149
+ assert_output --partial " Pulling services myservice"
150
+ assert_output --partial " Starting dependencies"
151
+ assert_output --partial " Pulling pre-built service myservice"
152
+ assert_output --partial " Pushing images for myservice"
153
+
154
+ unstub docker-compose
155
+ unstub buildkite-agent
156
+ }
51
157
0 commit comments