github.com/docker/compose-on-kubernetes@v0.5.0/.circleci/config.yml (about) 1 version: 2 2 3 aliases: 4 kube_versions: 5 - kube_1_11: &kube_1_11 "1.11.10" 6 - kube_1_13: &kube_1_13 "1.13.10" 7 - kube_1_14: &kube_1_14 "1.14.6" 8 - kube_1_15: &kube_1_15 "1.15.3" 9 - kube_1_16: &kube_1_16 "1.16.1" 10 docker-login: &docker-login 11 username: $DOCKER_USER 12 password: $DOCKER_PASS 13 compose-ci-docker: &compose-ci-docker 14 - image: dockereng/kube-compose-ci-docker 15 auth: *docker-login 16 compose-ci-golang: &compose-ci-golang 17 - image: dockereng/kube-compose-ci-golang 18 auth: *docker-login 19 public-golang: &public-golang 20 - image: circleci/golang:1.16 21 user: root 22 23 e2e-kind-steps: &e2e-kind-steps 24 - attach_workspace: 25 at: /root 26 - setup_remote_docker: 27 version: 20.10.11 28 - run: 29 name: "Prepare Kind and run e2e tests" 30 command: | 31 export PATH="$PATH:/root/bin" 32 export IMAGE_REPOSITORY=${CIRCLE_TAG:+docker} 33 export IMAGE_REPOSITORY=${IMAGE_REPOSITORY:-dockereng} 34 export IMAGE_PREFIX=kube-compose- 35 export IMAGE_REPO_PREFIX=${IMAGE_REPOSITORY:-dockereng}/${IMAGE_PREFIX} 36 export KUBERNETES_VERSION_PARAM="${KUBERNETES_VERSION:+KUBERNETES_VERSION=$KUBERNETES_VERSION}" 37 make -f docker.Makefile ${KUBERNETES_VERSION_PARAM} create-kind-cluster 38 make -f docker.Makefile IMAGE_ARCHIVE=/root/kube-compose-api-server-coverage.tar load-kind-image-archive 39 make -f docker.Makefile IMAGE_ARCHIVE=/root/kube-compose-controller-coverage.tar load-kind-image-archive 40 docker load -i /root/kube-compose-e2e-tests.tar 41 make TAG=${CIRCLE_TAG:-${CIRCLE_SHA1}} e2e-kind-circleci 42 no_output_timeout: 30m 43 - persist_to_workspace: 44 root: /root/ 45 paths: 46 - 'src/github.com/docker/compose-on-kubernetes/e2e-coverage/compose-*/coverage.txt' 47 48 e2e-benchmark-kind-steps: &e2e-benchmark-kind-steps 49 - attach_workspace: 50 at: /root 51 - setup_remote_docker: 52 version: 20.10.11 53 - run: 54 name: "Prepare Kind and run e2e benchmark" 55 command: | 56 export PATH="$PATH:/root/bin" 57 export IMAGE_REPOSITORY=${CIRCLE_TAG:+docker} 58 export IMAGE_REPOSITORY=${IMAGE_REPOSITORY:-dockereng} 59 export IMAGE_PREFIX=kube-compose- 60 export IMAGE_REPO_PREFIX=${IMAGE_REPOSITORY:-dockereng}/${IMAGE_PREFIX} 61 export KUBERNETES_VERSION_PARAM="${KUBERNETES_VERSION:+KUBERNETES_VERSION=$KUBERNETES_VERSION}" 62 make -f docker.Makefile ${KUBERNETES_VERSION_PARAM} create-kind-cluster 63 make -f docker.Makefile IMAGE_ARCHIVE=/root/kube-compose-api-server-coverage.tar load-kind-image-archive 64 make -f docker.Makefile IMAGE_ARCHIVE=/root/kube-compose-controller-coverage.tar load-kind-image-archive 65 docker load -i /root/kube-compose-e2e-benchmark.tar 66 make TAG=${CIRCLE_TAG:-${CIRCLE_SHA1}} e2e-benchmark-kind-circleci 67 no_output_timeout: 30m 68 - run: 69 name: Get cluster info (on failure) 70 command: | 71 curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl 72 chmod +x ./kubectl 73 mv kubectl /root/bin 74 export PATH="$PATH:/root/bin" 75 make e2e-kind-pods-info 76 when: on_fail 77 78 jobs: 79 checkout: 80 docker: *compose-ci-docker 81 working_directory: /root/src/github.com/docker/compose-on-kubernetes 82 steps: 83 - checkout 84 - setup_remote_docker: 85 version: 20.10.11 86 - run: 87 name: Login to docker hub 88 command: echo "$DOCKER_PASS" | docker login -u "$DOCKER_USER" --password-stdin 89 - persist_to_workspace: 90 root: /root/ 91 paths: 92 - 'src' 93 - '.docker' 94 95 checkout-pr: 96 docker: *public-golang 97 working_directory: /root/src/github.com/docker/compose-on-kubernetes 98 steps: 99 - checkout 100 - persist_to_workspace: 101 root: /root/ 102 paths: 103 - 'src' 104 105 validate: 106 docker: *public-golang 107 working_directory: /root/src/github.com/docker/compose-on-kubernetes 108 environment: 109 GOPATH: "/root" 110 GOPROXY: "direct" 111 steps: 112 - attach_workspace: 113 at: /root 114 - setup_remote_docker: 115 version: 20.10.11 116 - run: make -f docker.Makefile validate 117 validate-vendor: 118 docker: *public-golang 119 working_directory: /root/src/github.com/docker/compose-on-kubernetes 120 environment: 121 GOPATH: "/root" 122 GOPROXY: "direct" 123 steps: 124 - attach_workspace: 125 at: /root 126 - run: 127 name: Validate vendoring 128 command: make validate-vendor 129 check-licenses: 130 docker: *public-golang 131 working_directory: /root/src/github.com/docker/compose-on-kubernetes 132 environment: 133 GOPATH: "/root" 134 GOPROXY: "direct" 135 steps: 136 - attach_workspace: 137 at: /root 138 - run: make check-licenses 139 images: 140 docker: *public-golang 141 working_directory: /root/src/github.com/docker/compose-on-kubernetes 142 environment: 143 GOPATH: "/root" 144 GOPROXY: "direct" 145 steps: 146 - attach_workspace: 147 at: /root 148 - setup_remote_docker: 149 version: 20.10.11 150 - run: 151 name: Build images 152 command: | 153 export IMAGE_REPOSITORY=${CIRCLE_TAG:+docker} 154 export IMAGE_REPOSITORY=${IMAGE_REPOSITORY:-dockereng} 155 export IMAGE_PREFIX=kube-compose- 156 export IMAGE_REPO_PREFIX=${IMAGE_REPOSITORY:-dockereng}/${IMAGE_PREFIX} 157 echo "building images with TAG=${CIRCLE_TAG:-${CIRCLE_SHA1}} and IMAGE_REPO_PREFIX=${IMAGE_REPO_PREFIX}" 158 make -f docker.Makefile TAG=${CIRCLE_TAG:-${CIRCLE_SHA1}} images 159 for image in controller controller-coverage api-server api-server-coverage installer e2e-tests e2e-benchmark; do 160 docker save "${IMAGE_REPO_PREFIX}$image:${CIRCLE_TAG:-${CIRCLE_SHA1}}" -o "/root/${IMAGE_PREFIX}$image.tar" 161 done 162 - persist_to_workspace: 163 root: /root/ 164 paths: 165 - kube-compose-api-server.tar 166 - kube-compose-api-server-coverage.tar 167 - kube-compose-controller.tar 168 - kube-compose-controller-coverage.tar 169 - kube-compose-installer.tar 170 - kube-compose-e2e-tests.tar 171 - kube-compose-e2e-benchmark.tar 172 e2e-kind: 173 docker: *public-golang 174 working_directory: /root/src/github.com/docker/compose-on-kubernetes 175 environment: 176 GOPATH: "/root" 177 GOPROXY: "direct" 178 steps: *e2e-kind-steps 179 e2e-kind-1_11: 180 docker: *public-golang 181 working_directory: /root/src/github.com/docker/compose-on-kubernetes 182 environment: 183 GOPATH: "/root" 184 GOPROXY: "direct" 185 KUBERNETES_VERSION: *kube_1_11 186 steps: *e2e-kind-steps 187 e2e-kind-1_13: 188 docker: *public-golang 189 working_directory: /root/src/github.com/docker/compose-on-kubernetes 190 environment: 191 GOPATH: "/root" 192 GOPROXY: "direct" 193 KUBERNETES_VERSION: *kube_1_13 194 steps: *e2e-kind-steps 195 e2e-kind-1_14: 196 docker: *public-golang 197 working_directory: /root/src/github.com/docker/compose-on-kubernetes 198 environment: 199 GOPATH: "/root" 200 GOPROXY: "direct" 201 KUBERNETES_VERSION: *kube_1_14 202 steps: *e2e-kind-steps 203 e2e-kind-1_15: 204 docker: *public-golang 205 working_directory: /root/src/github.com/docker/compose-on-kubernetes 206 environment: 207 GOPATH: "/root" 208 GOPROXY: "direct" 209 KUBERNETES_VERSION: *kube_1_15 210 steps: *e2e-kind-steps 211 e2e-kind-1_16: 212 docker: *public-golang 213 working_directory: /root/src/github.com/docker/compose-on-kubernetes 214 environment: 215 GOPATH: "/root" 216 GOPROXY: "direct" 217 KUBERNETES_VERSION: *kube_1_16 218 steps: *e2e-kind-steps 219 e2e-benchmark-kind: 220 docker: *public-golang 221 working_directory: /root/src/github.com/docker/compose-on-kubernetes 222 environment: 223 GOPATH: "/root" 224 GOPROXY: "direct" 225 KUBERNETES_VERSION: *kube_1_13 226 steps: *e2e-benchmark-kind-steps 227 test-unit: 228 docker: *public-golang 229 working_directory: /root/src/github.com/docker/compose-on-kubernetes 230 environment: 231 GOPATH: "/root" 232 GOPROXY: "direct" 233 steps: 234 - attach_workspace: 235 at: /root 236 - setup_remote_docker: 237 version: 20.10.11 238 - run: 239 name: Run unit tests 240 command: make -f docker.Makefile test-unit 241 - persist_to_workspace: 242 root: /root/ 243 paths: 244 - 'src/github.com/docker/compose-on-kubernetes/coverage.txt' 245 coverage-upload: 246 docker: *public-golang 247 working_directory: /root/src/github.com/docker/compose-on-kubernetes 248 environment: 249 GOPATH: "/root" 250 GOPROXY: "direct" 251 steps: 252 - attach_workspace: 253 at: /root 254 - run: 255 name: Upload coverage 256 command: bash <(curl -s https://codecov.io/bash) -t 30879c0b-96d4-4dec-bb62-b053f96b8726 257 push-to-hub: 258 docker: *compose-ci-docker 259 working_directory: /root/src/github.com/docker/compose-on-kubernetes 260 steps: 261 - attach_workspace: 262 at: /root 263 - setup_remote_docker: 264 version: 20.10.11 265 - deploy: 266 name: push-to-hub 267 command: | 268 echo "Logging in with $DOCKER_USER" 269 echo "$DOCKER_PASS" | docker login -u "$DOCKER_USER" --password-stdin 270 if [ "$CI_PULL_REQUEST" != "" ]; then 271 # case where a pull request from a fork's master 272 exit 0 273 fi 274 export IMAGE_REPOSITORY=${CIRCLE_TAG:+docker} 275 export IMAGE_REPOSITORY=${IMAGE_REPOSITORY:-dockereng} 276 export IMAGE_PREFIX=kube-compose- 277 export IMAGE_REPO_PREFIX=${IMAGE_REPOSITORY}/${IMAGE_PREFIX} 278 TAG=${CIRCLE_TAG:-${CIRCLE_SHA1}} 279 for image in api-server controller installer e2e-tests; do 280 docker load -i /root/${IMAGE_PREFIX}$image.tar 281 docker tag ${IMAGE_REPO_PREFIX}$image:$TAG ${IMAGE_REPO_PREFIX}$image:latest 282 docker push ${IMAGE_REPO_PREFIX}$image:$TAG 283 # Don't push on latest tag if it's not a stable release 284 if echo "${CIRCLE_TAG}" | grep -Eq "^v[0-9]+\.[0-9]+\.[0-9]+$"; then 285 docker push ${IMAGE_REPO_PREFIX}$image:latest 286 fi 287 done 288 build-and-release-installer: 289 docker: *compose-ci-golang 290 working_directory: /root/src/github.com/docker/compose-on-kubernetes 291 steps: 292 - attach_workspace: 293 at: /root 294 - setup_remote_docker: 295 version: 20.10.11 296 - deploy: 297 name: push-to-hub 298 command: | 299 if [ "$CIRCLE_TAG" == "" ]; then 300 # case where we are not on a tag 301 exit 0 302 fi 303 export IMAGE_REPOSITORY=docker 304 export IMAGE_PREFIX=kube-compose- 305 export IMAGE_REPO_PREFIX=${IMAGE_REPOSITORY}/${IMAGE_PREFIX} 306 TAG=${CIRCLE_TAG:-${CIRCLE_SHA1}} 307 GOOS=linux make bin/installer 308 mv bin/installer bin/installer-linux 309 GOOS=darwin make bin/installer 310 mv bin/installer bin/installer-darwin 311 GOOS=windows make bin/installer 312 mv bin/installer bin/installer-windows.exe 313 go get -d github.com/tcnksm/ghr 314 cd /root/src/github.com/tcnksm/ghr 315 git checkout v0.12.0 316 go install 317 cd /root/src/github.com/docker/compose-on-kubernetes 318 # Mark all unstable releases as draft 319 if echo "${CIRCLE_TAG}" | grep -v -Eq "^v[0-9]+\.[0-9]+\.[0-9]+$"; then 320 OPTIONS="-draft" 321 fi 322 ghr -t ${GITHUB_RELEASE_TOKEN} -u ${CIRCLE_PROJECT_USERNAME} -r ${CIRCLE_PROJECT_REPONAME} -c ${CIRCLE_SHA1} -delete ${OPTIONS} ${TAG} ./bin/ 323 324 workflows: 325 version: 2 326 pr: 327 jobs: 328 - checkout-pr: 329 filters: 330 branches: 331 only: /^pull\/.*$/ 332 - test-unit: 333 requires: 334 - checkout-pr 335 filters: 336 branches: 337 only: /^pull\/.*$/ 338 - validate: 339 requires: 340 - checkout-pr 341 filters: 342 branches: 343 only: /^pull\/.*$/ 344 - validate-vendor: 345 requires: 346 - checkout-pr 347 filters: 348 branches: 349 only: /^pull\/.*$/ 350 - check-licenses: 351 requires: 352 - checkout-pr 353 filters: 354 branches: 355 only: /^pull\/.*$/ 356 - images: 357 requires: 358 - checkout-pr 359 filters: 360 branches: 361 only: /^pull\/.*$/ 362 - e2e-kind: 363 requires: 364 - images 365 filters: 366 branches: 367 only: /^pull\/.*$/ 368 - coverage-upload: 369 requires: 370 - e2e-kind 371 - test-unit 372 filters: 373 branches: 374 only: /^pull\/.*$/ 375 master-or-tag: 376 jobs: 377 - checkout: 378 filters: 379 tags: 380 only: /v.*/ 381 branches: 382 only: /^(?!pull\/).*$/ 383 - test-unit: 384 requires: 385 - checkout 386 filters: 387 tags: 388 only: /v.*/ 389 branches: 390 only: /^(?!pull\/).*$/ 391 - images: 392 requires: 393 - checkout 394 filters: 395 tags: 396 only: /v.*/ 397 branches: 398 only: /^(?!pull\/).*$/ 399 - validate: 400 requires: 401 - images 402 filters: 403 tags: 404 only: /v.*/ 405 branches: 406 only: /^(?!pull\/).*$/ 407 - validate-vendor: 408 requires: 409 - checkout 410 filters: 411 tags: 412 only: /v.*/ 413 branches: 414 only: /^(?!pull\/).*$/ 415 - check-licenses: 416 requires: 417 - checkout 418 filters: 419 tags: 420 only: /v.*/ 421 branches: 422 only: /^(?!pull\/).*$/ 423 - test-unit: 424 requires: 425 - images 426 filters: 427 tags: 428 only: /v.*/ 429 branches: 430 only: /^(?!pull\/).*$/ 431 - e2e-kind-1_11: 432 requires: 433 - images 434 filters: 435 tags: 436 only: /v.*/ 437 branches: 438 only: /^(?!pull\/).*$/ 439 - e2e-kind-1_13: 440 requires: 441 - images 442 filters: 443 tags: 444 only: /v.*/ 445 branches: 446 only: /^(?!pull\/).*$/ 447 - e2e-kind-1_14: 448 requires: 449 - images 450 filters: 451 tags: 452 only: /v.*/ 453 branches: 454 only: /^(?!pull\/).*$/ 455 - e2e-kind-1_15: 456 requires: 457 - images 458 filters: 459 tags: 460 only: /v.*/ 461 branches: 462 only: /^(?!pull\/).*$/ 463 - e2e-kind-1_16: 464 requires: 465 - images 466 filters: 467 tags: 468 only: /v.*/ 469 branches: 470 only: /^(?!pull\/).*$/ 471 # - e2e-benchmark-kind: 472 # requires: 473 # - images 474 # filters: 475 # tags: 476 # only: /v.*/ 477 # branches: 478 # only: /^(?!pull\/).*$/ 479 - coverage-upload: 480 requires: 481 - test-unit 482 - e2e-kind-1_11 483 - e2e-kind-1_13 484 - e2e-kind-1_14 485 - e2e-kind-1_15 486 - e2e-kind-1_16 487 # - e2e-benchmark-kind 488 filters: 489 tags: 490 only: /v.*/ 491 branches: 492 only: /^(?!pull\/).*$/ 493 - push-to-hub: 494 requires: 495 - e2e-kind-1_11 496 - e2e-kind-1_13 497 - e2e-kind-1_14 498 - e2e-kind-1_15 499 - e2e-kind-1_16 500 # - e2e-benchmark-kind 501 filters: 502 branches: 503 only: master 504 tags: 505 only: /v.*/ 506 - build-and-release-installer: 507 requires: 508 - e2e-kind-1_11 509 - e2e-kind-1_13 510 - e2e-kind-1_14 511 - e2e-kind-1_15 512 - e2e-kind-1_16 513 # - e2e-benchmark-kind 514 filters: 515 branches: 516 only: master 517 tags: 518 only: /v.*/ 519