1version: 2.1
2orbs:
3  go: circleci/go@0.2.0
4  prometheus: prometheus/prometheus@0.11.0
5jobs:
6  test:
7    parameters:
8      go_version:
9        type: string
10      run_style_and_unused:
11        type: boolean
12        default: false
13      run_lint:
14        type: boolean
15        default: false
16      use_gomod_cache:
17        type: boolean
18        default: true
19    docker:
20      - image: circleci/golang:<< parameters.go_version >>
21    working_directory: /go/src/github.com/prometheus/client_golang
22    steps:
23      - checkout
24      - when:
25          condition: << parameters.use_gomod_cache >>
26          steps:
27            - go/load-cache:
28                key: v1-go<< parameters.go_version >>
29      - run: make check_license test
30      - when:
31          condition: << parameters.run_lint >>
32          steps:
33            - run: make lint
34      - when:
35          condition: << parameters.run_style_and_unused >>
36          steps:
37            - run: make style unused
38      - when:
39          condition: << parameters.use_gomod_cache >>
40          steps:
41            - go/save-cache:
42                key: v1-go<< parameters.go_version >>
43      - store_test_results:
44          path: test-results
45workflows:
46  version: 2
47  client_golang:
48    jobs:
49      # Refer to README.md for the currently supported versions.
50      - test:
51          name: go-1-13
52          go_version: "1.13"
53          run_lint: true
54      - test:
55          name: go-1-14
56          go_version: "1.14"
57          run_lint: true
58      - test:
59          name: go-1-15
60          go_version: "1.15"
61          run_lint: true
62      - test:
63          name: go-1-16
64          go_version: "1.16"
65          run_lint: true
66          # Style and unused/missing packages are only checked against
67          # the latest supported Go version.
68          run_style_and_unused: true
69