github.com/jonsyu1/godel@v0.0.0-20171017211503-64567a0cf169/.circleci/config.yml (about)

     1  ### Docker images ###
     2  alpine-go-curr: &alpine-go-curr
     3    working_directory: /go/src/github.com/palantir/godel
     4    docker:
     5      - image: nmiyake/go:alpine-go-1.9.1-t124
     6  
     7  alpine-go-prev: &alpine-go-prev
     8    working_directory: /go/src/github.com/palantir/godel
     9    docker:
    10      - image: nmiyake/go:alpine-go-1.8.3-t124
    11  
    12  brew-go: &brew-go
    13    working_directory: /go/src/github.com/palantir/godel
    14    docker:
    15      - image: nmiyake/go:brew-go-t124
    16  
    17  darwin-linux: &darwin-linux
    18    working_directory: /go/src/github.com/palantir/godel
    19    docker:
    20      - image: nmiyake/go:go-darwin-linux-1.9.1-t124
    21  
    22  darwin-linux-no-cgo: &darwin-linux-no-cgo
    23    working_directory: /go/src/github.com/palantir/godel
    24    docker:
    25      - image: nmiyake/go:go-darwin-linux-no-cgo-1.9.1-t124
    26        environment:
    27          CGO_ENABLED: 0
    28  
    29  darwin-linux-rpm-fpm: &darwin-linux-rpm-fpm
    30    working_directory: /go/src/github.com/palantir/godel
    31    docker:
    32      - image: nmiyake/go:go-darwin-linux-no-cgo-1.9.1-docker-17.03.0-ce-rpm-fpm-t124
    33  
    34  ### Shared cache steps ###
    35  godel-gouser-cache-restore: &godel-gouser-cache-restore
    36    restore_cache:
    37      keys:
    38        - godel-gouser-cache-{{ checksum "godelw" }}-v1
    39  godel-gouser-cache-save: &godel-gouser-cache-save
    40    save_cache:
    41      key: godel-gouser-cache-{{ checksum "godelw" }}-v1
    42      paths:
    43        - /home/gouser/.godel
    44  
    45  godel-linuxbrew-cache-restore: &godel-linuxbrew-cache-restore
    46    restore_cache:
    47      keys:
    48        - godel-linuxbrew-cache-{{ checksum "godelw" }}-v1
    49  godel-linuxbrew-cache-save: &godel-linuxbrew-cache-save
    50    save_cache:
    51      key: godel-linuxbrew-cache-{{ checksum "godelw" }}-v1
    52      paths:
    53        - /home/linuxbrew/.godel
    54  
    55  godel-root-cache-restore: &godel-root-cache-restore
    56    restore_cache:
    57      keys:
    58        - godel-root-cache-{{ checksum "godelw" }}-v1
    59  godel-root-cache-save: &godel-root-cache-save
    60    save_cache:
    61      key: godel-root-cache-{{ checksum "godelw" }}-v1
    62      paths:
    63        - ~/.godel
    64  
    65  ### Shared test steps ###
    66  define-tests-dir: &define-tests-dir
    67    run: echo "export TESTS_DIR=/tmp/test-results/${CIRCLE_PROJECT_REPONAME}-${TAG_NAME}-tests" >> $BASH_ENV
    68  
    69  mkdir-tests-dir: &mkdir-tests-dir
    70    run: mkdir -p "${TESTS_DIR}"
    71  
    72  run-tests: &run-tests
    73    run: ./godelw test --tags="$TAG_NAME" --junit-output="$TESTS_DIR/tests.xml"
    74  
    75  store-test-results: &store-test-results
    76    type: test-results-store
    77    path: /tmp/test-results
    78  
    79  ### Other shared steps ###
    80  go-install-packages: &go-install-packages
    81    run: go install $(./godelw packages)
    82  
    83  go-version: &go-version
    84    run: go version
    85  
    86  godel-version: &godel-version
    87    run: ./godelw version
    88  
    89  godel-dist-product: &godel-dist-product
    90    run: ./godelw dist "$PRODUCT_NAME"
    91  
    92  store-artifacts: &store-artifacts
    93    type: artifacts-store
    94    path: /tmp/test-results
    95    destination: test-results
    96  
    97  test_steps: &test_steps
    98    - setup_remote_docker
    99    - checkout
   100    - *go-version
   101    - *godel-root-cache-restore
   102    - *godel-version
   103    - *godel-root-cache-save
   104    - *go-install-packages
   105    - *define-tests-dir
   106    - *mkdir-tests-dir
   107    - *godel-dist-product
   108    - run: go install ./vendor/github.com/palantir/amalgomate
   109    - *run-tests
   110    - *store-test-results
   111    - *store-artifacts
   112  
   113  ### Jobs ###
   114  version: 2
   115  jobs:
   116    ### Base tests ###
   117    distgo:
   118      <<: *darwin-linux-rpm-fpm
   119      environment:
   120        PRODUCT_NAME: distgo
   121        TAG_NAME: distgo
   122      # define custom steps because image runs with non-root user
   123      steps:
   124        - setup_remote_docker
   125        - checkout
   126        - *go-version
   127        - *godel-gouser-cache-restore
   128        - *godel-version
   129        - *godel-gouser-cache-save
   130        - *define-tests-dir
   131        - *mkdir-tests-dir
   132        - *godel-dist-product
   133        - *run-tests
   134        - *store-test-results
   135        - *store-artifacts
   136  
   137    godel:
   138      <<: *darwin-linux-no-cgo
   139      environment:
   140        PRODUCT_NAME: godel
   141        TAG_NAME: none
   142      steps: *test_steps
   143  
   144    gonform:
   145        <<: *darwin-linux-no-cgo
   146        environment:
   147          PRODUCT_NAME: gonform
   148          TAG_NAME: gonform
   149        steps: *test_steps
   150  
   151    gunit:
   152      <<: *darwin-linux
   153      environment:
   154        PRODUCT_NAME: gunit
   155        TAG_NAME: gunit
   156      steps: *test_steps
   157  
   158    okgo:
   159      <<: *darwin-linux-no-cgo
   160      environment:
   161        PRODUCT_NAME: okgo
   162        TAG_NAME: okgo
   163      steps: *test_steps
   164  
   165    ### Integration tests ###
   166    integration-alpine-go-curr:
   167      <<: *alpine-go-curr
   168      environment:
   169        PRODUCT_NAME: godel
   170        TAG_NAME: integration
   171        CGO_ENABLED: 0
   172      steps: *test_steps
   173  
   174    integration-alpine-go-prev:
   175      <<: *alpine-go-prev
   176      environment:
   177        PRODUCT_NAME: godel
   178        TAG_NAME: integration
   179        CGO_ENABLED: 0
   180      steps: *test_steps
   181  
   182    integration-brew:
   183      <<: *brew-go
   184      environment:
   185        PRODUCT_NAME: godel
   186        TAG_NAME: integration
   187      # define custom steps because image runs with non-root user
   188      steps:
   189        - checkout
   190        - *go-version
   191        - *godel-linuxbrew-cache-restore
   192        - *godel-version
   193        - *godel-linuxbrew-cache-save
   194        - *go-install-packages
   195        - *define-tests-dir
   196        - *mkdir-tests-dir
   197        - *godel-dist-product
   198        - *run-tests
   199        - *store-test-results
   200        - *store-artifacts
   201  
   202    integration-std:
   203      <<: *darwin-linux-no-cgo
   204      environment:
   205        PRODUCT_NAME: godel
   206        TAG_NAME: integration
   207      steps: *test_steps
   208  
   209    ### Docs ###
   210    wiki:
   211      <<: *darwin-linux-no-cgo
   212      steps:
   213        - checkout
   214        - *go-version
   215        - *godel-root-cache-restore
   216        - *godel-version
   217        - *godel-root-cache-save
   218        - run: ./godelw github-wiki --docs-dir docs --repository=git@github.com:palantir/godel.wiki.git
   219  
   220    ### Dist/Publish ###
   221    dist:
   222      <<: *darwin-linux-no-cgo
   223      steps:
   224        - checkout
   225        - *go-version
   226        - *godel-root-cache-restore
   227        - *godel-version
   228        - *godel-root-cache-save
   229        - run: ./godelw dist
   230        - save_cache:
   231            key: dist-{{ .Environment.CIRCLE_SHA1 }}-v1
   232            paths:
   233              - dist
   234    publish:
   235      <<: *darwin-linux-no-cgo
   236      steps:
   237        - checkout
   238        - *go-version
   239        - *godel-root-cache-restore
   240        - *godel-version
   241        - *godel-root-cache-save
   242        - restore_cache:
   243            keys:
   244              - dist-{{ .Environment.CIRCLE_SHA1 }}-v1
   245        - run: ./godelw publish bintray --url https://api.bintray.com --subject palantir --repository releases --user "$BINTRAY_USER" --password "$BINTRAY_PASSWORD" --publish --downloads-list godel
   246  
   247  ### Workflows ###
   248  requires_products: &requires_products
   249    - dist
   250    - distgo
   251    - godel
   252    - gonform
   253    - gunit
   254    - integration-alpine-go-curr
   255    - integration-alpine-go-prev
   256    - integration-brew
   257    - integration-std
   258    - okgo
   259  
   260  all-tags-filter: &all-tags-filter
   261    filters:
   262      tags:
   263        only: /.*/
   264  
   265  workflows:
   266    version: 2
   267    build-publish:
   268      jobs:
   269        - dist:
   270            <<: *all-tags-filter
   271        - distgo:
   272            <<: *all-tags-filter
   273        - godel:
   274            <<: *all-tags-filter
   275        - gonform:
   276            <<: *all-tags-filter
   277        - gunit:
   278            <<: *all-tags-filter
   279        - integration-alpine-go-curr:
   280            <<: *all-tags-filter
   281        - integration-alpine-go-prev:
   282            <<: *all-tags-filter
   283        - integration-brew:
   284            <<: *all-tags-filter
   285        - integration-std:
   286            <<: *all-tags-filter
   287        - okgo:
   288            <<: *all-tags-filter
   289        - wiki:
   290            requires: *requires_products
   291            filters:
   292              branches:
   293                only: /^master$/
   294        - publish:
   295            requires: *requires_products
   296            filters:
   297              tags:
   298                only: /^[0-9]+(\.[0-9]+)+(-rc[0-9]+)?(-alpha[0-9]+)?$/
   299              branches:
   300                ignore: /.*/