version: 2 jobs: lint: working_directory: /work docker: [{image: 'docker:18.09-git'}] environment: DOCKER_BUILDKIT: 1 steps: - checkout - setup_remote_docker: version: 18.09.3 reusable: true exclusive: false - run: command: docker version - run: name: "Lint" command: | docker build --progress=plain -f dockerfiles/Dockerfile.lint --tag cli-linter:$CIRCLE_BUILD_NUM . docker run --rm cli-linter:$CIRCLE_BUILD_NUM cross: working_directory: /work docker: [{image: 'docker:18.09-git'}] environment: DOCKER_BUILDKIT: 1 parallelism: 3 steps: - checkout - setup_remote_docker: version: 18.09.3 reusable: true exclusive: false - run: name: "Cross" command: | docker build --progress=plain -f dockerfiles/Dockerfile.cross --tag cli-builder:$CIRCLE_BUILD_NUM . name=cross-$CIRCLE_BUILD_NUM-$CIRCLE_NODE_INDEX docker run \ -e CROSS_GROUP=$CIRCLE_NODE_INDEX \ --name $name cli-builder:$CIRCLE_BUILD_NUM \ make cross docker cp \ $name:/go/src/github.com/docker/cli/build \ /work/build - store_artifacts: path: /work/build test: working_directory: /work docker: [{image: 'docker:18.09-git'}] environment: DOCKER_BUILDKIT: 1 steps: - checkout - setup_remote_docker: version: 18.09.3 reusable: true exclusive: false - run: name: "Unit Test with Coverage" command: | mkdir -p test-results/unit-tests docker build --progress=plain -f dockerfiles/Dockerfile.dev --tag cli-builder:$CIRCLE_BUILD_NUM . docker run \ -e GOTESTSUM_JUNITFILE=/tmp/junit.xml \ --name \ test-$CIRCLE_BUILD_NUM cli-builder:$CIRCLE_BUILD_NUM \ make test-coverage docker cp \ test-$CIRCLE_BUILD_NUM:/tmp/junit.xml \ ./test-results/unit-tests/junit.xml - run: name: "Upload to Codecov" command: | docker cp \ test-$CIRCLE_BUILD_NUM:/go/src/github.com/docker/cli/coverage.txt \ coverage.txt apk add -U bash curl curl -s https://codecov.io/bash | bash || \ echo 'Codecov failed to upload' - store_test_results: path: test-results - store_artifacts: path: test-results validate: working_directory: /work docker: [{image: 'docker:18.09-git'}] environment: DOCKER_BUILDKIT: 1 steps: - checkout - setup_remote_docker: version: 18.09.3 reusable: true exclusive: false - run: name: "Validate Vendor, Docs, and Code Generation" command: | rm -f .dockerignore # include .git docker build --progress=plain -f dockerfiles/Dockerfile.dev --tag cli-builder-with-git:$CIRCLE_BUILD_NUM . docker run --rm cli-builder-with-git:$CIRCLE_BUILD_NUM \ make ci-validate no_output_timeout: 15m shellcheck: working_directory: /work docker: [{image: 'docker:18.09-git'}] environment: DOCKER_BUILDKIT: 1 steps: - checkout - setup_remote_docker: version: 18.09.3 reusable: true exclusive: false - run: name: "Run shellcheck" command: | docker build --progress=plain -f dockerfiles/Dockerfile.shellcheck --tag cli-validator:$CIRCLE_BUILD_NUM . docker run --rm cli-validator:$CIRCLE_BUILD_NUM \ make shellcheck workflows: version: 2 ci: jobs: - lint - cross - test - validate - shellcheck