| version: 2 |
| |
| jobs: |
| |
| lint: |
| working_directory: /work |
| docker: [{image: 'docker:18.03-git'}] |
| steps: |
| - checkout |
| - setup_remote_docker: |
| version: 18.03.1-ce |
| reusable: true |
| exclusive: false |
| - run: |
| command: docker version |
| - run: |
| name: "Lint" |
| command: | |
| docker build -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.03-git'}] |
| parallelism: 3 |
| steps: |
| - checkout |
| - setup_remote_docker: |
| version: 18.03.1-ce |
| reusable: true |
| exclusive: false |
| - run: |
| name: "Cross" |
| command: | |
| docker build -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.03-git'}] |
| steps: |
| - checkout |
| - setup_remote_docker: |
| version: 18.03.1-ce |
| reusable: true |
| exclusive: false |
| - run: |
| name: "Unit Test with Coverage" |
| command: | |
| mkdir -p test-results/unit-tests |
| docker build -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.03-git'}] |
| steps: |
| - checkout |
| - setup_remote_docker: |
| version: 18.03.1-ce |
| reusable: true |
| exclusive: false |
| - run: |
| name: "Validate Vendor, Docs, and Code Generation" |
| command: | |
| rm -f .dockerignore # include .git |
| docker build -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.03-git'}] |
| steps: |
| - checkout |
| - setup_remote_docker: |
| version: 18.03.1-ce |
| reusable: true |
| exclusive: false |
| - run: |
| name: "Run shellcheck" |
| command: | |
| docker build -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 |