github.com/dnephin/dobi@v0.15.0/.circleci/config.yml (about)

     1  version: 2
     2  
     3  defaults:
     4    docker: &default_docker
     5      - image: dnephin/circleci-alpine-step@sha256:75f925e006ea379870ea7d2ce6539072e584f62a74063d73a9b1c2fd75ec233f
     6    steps:
     7      - setup_remote_docker: &setup_docker
     8          version: 17.07.0-ce
     9    filters: &default_filters
    10      branches: {ignore: [gh-pages]}
    11      tags: {only: '/v[0-9]+(\.[0-9]+)*/'}
    12  
    13  
    14  jobs:
    15  
    16    build:
    17      docker: [{image: 'docker:17.07-git'}]
    18      steps:
    19        - checkout
    20        - setup_remote_docker: *setup_docker
    21        - run: docker version
    22        - run:
    23            name: "Build dobi binary"
    24            command: |
    25              apk add --no-cache bash
    26              bash -c 'cat dockerfiles/Dockerfile.build <(echo COPY . .) | \
    27                  docker build -t dobi-dev -f - .'
    28              docker run --name build dobi-dev bash -ec 'go mod vendor; go generate ./...; go install .'
    29              mkdir /work
    30              docker cp build:/go/bin/dobi /work/dobi
    31              docker cp build:/go/src/github.com/dnephin/dobi/vendor /work/
    32        - persist_to_workspace:
    33            root: /work
    34            paths: [dobi, vendor]
    35  
    36    lint:
    37      docker:
    38        - image: "golangci/golangci-lint:v1.24.0"
    39      steps:
    40        - checkout
    41        - attach_workspace: {at: /work}
    42        - run:
    43            name: "Lint"
    44            command: |
    45              mv /work/vendor .
    46              golangci-lint run -v ./...
    47  
    48    cross:
    49      docker: *default_docker
    50      steps:
    51        - checkout
    52        - setup_remote_docker: *setup_docker
    53        - attach_workspace: {at: /work}
    54        - run:
    55            name: "Build binaries"
    56            command: script/ci/step dobi binary
    57        - store_artifacts:
    58            path: dist/bin
    59            destination: bin
    60  
    61    docs:
    62      docker: *default_docker
    63      steps:
    64        - checkout
    65        - setup_remote_docker: *setup_docker
    66        - attach_workspace: {at: /work}
    67        - run:
    68            name: "Build documentation"
    69            command: script/ci/step dobi docs-build
    70        - store_artifacts:
    71            path: docs/build/html.tar.gz
    72            destination: docs
    73  
    74    test-unit:
    75      docker: *default_docker
    76      steps:
    77        - checkout
    78        - setup_remote_docker: *setup_docker
    79        - attach_workspace: {at: /work}
    80        - run:
    81            name: "Run unit tests"
    82            command: script/ci/step dobi test-unit
    83  
    84    test-examples:
    85      docker: *default_docker
    86      steps:
    87        - checkout
    88        - setup_remote_docker: *setup_docker
    89        - attach_workspace: {at: /work}
    90        - run:
    91            name: "Run example tests"
    92            command: |
    93              cp -r "$DOCKER_CERT_PATH" ./circleci-certs
    94              script/ci/step dobi test-examples
    95        - store_artifacts:
    96            path: _results
    97            destination: test-examples-results
    98  
    99    release:
   100      docker: [{image: 'docker:17.07-git'}]
   101      steps:
   102        - checkout
   103        - setup_remote_docker: *setup_docker
   104        - attach_workspace: {at: /work}
   105        - run: |
   106            apk add --no-cache bash
   107            docker login -u $DOCKER_USER -p $DOCKER_PASS
   108            export DOBI_VERSION="$CIRCLE_TAG"
   109            script/ci/step dobi release
   110  
   111  workflows:
   112    version: 2
   113    ci:
   114      jobs:
   115        - build:
   116            filters: *default_filters
   117        - lint:
   118            requires: [build]
   119            filters: *default_filters
   120        - cross:
   121            requires: [build]
   122            filters: *default_filters
   123        - docs:
   124            requires: [build]
   125            filters: *default_filters
   126        - test-unit:
   127            requires: [build]
   128            filters: *default_filters
   129        - test-examples:
   130            requires: [build]
   131            filters: *default_filters
   132        - release:
   133            requires: [lint, cross, docs, test-unit, test-examples]
   134            filters:
   135              tags: {only: '/v[0-9]+(\.[0-9]+)*/'}
   136              branches: {ignore: '/.*/'}