| 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 |