version: 2 jobs: lint: working_directory: /work docker: [{image: 'docker:17.06-git'}] steps: - checkout - setup_remote_docker: reusable: true exclusive: false - run: command: docker version - run: name: "Lint" command: | dockerfile=dockerfiles/Dockerfile.lint echo "COPY . ." >> $dockerfile docker build -f $dockerfile --tag cli-linter:$CIRCLE_BUILD_NUM . docker run --rm cli-linter:$CIRCLE_BUILD_NUM cross: working_directory: /work docker: [{image: 'docker:17.06-git'}] parallelism: 3 steps: - checkout - setup_remote_docker: reusable: true exclusive: false - run: name: "Cross" command: | dockerfile=dockerfiles/Dockerfile.cross echo "COPY . ." >> $dockerfile docker build -f $dockerfile --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:17.06-git'}] steps: - checkout - setup_remote_docker: reusable: true exclusive: false - run: name: "Unit Test with Coverage" command: | dockerfile=dockerfiles/Dockerfile.dev echo "COPY . ." >> $dockerfile docker build -f $dockerfile --tag cli-builder:$CIRCLE_BUILD_NUM . docker run --name \ test-$CIRCLE_BUILD_NUM cli-builder:$CIRCLE_BUILD_NUM \ make test-coverage - 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' validate: working_directory: /work docker: [{image: 'docker:17.06-git'}] steps: - checkout - setup_remote_docker: reusable: true exclusive: false - run: name: "Validate Vendor, Docs, and Code Generation" command: | dockerfile=dockerfiles/Dockerfile.dev echo "COPY . ." >> $dockerfile rm -f .dockerignore # include .git docker build -f $dockerfile --tag cli-builder-with-git:$CIRCLE_BUILD_NUM . docker run --rm cli-builder-with-git:$CIRCLE_BUILD_NUM \ make ci-validate shellcheck: working_directory: /work docker: [{image: 'docker:17.06-git'}] steps: - checkout - setup_remote_docker - run: name: "Run shellcheck" command: | dockerfile=dockerfiles/Dockerfile.shellcheck echo "COPY . ." >> $dockerfile docker build -f $dockerfile --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