github.com/go-kivik/kivik/v4@v4.3.2/.gitlab-ci.yml (about)

     1  stages:
     2    - test
     3    - release
     4  
     5  variables:
     6    COUCHDB_USER: admin
     7    COUCHDB_PASSWORD: abc123
     8  
     9  test-x-sqlite:
    10    parallel:
    11      matrix:
    12        - GOVER: ["1.22", "1.23rc2"]
    13    stage: test
    14    image: golang:$GOVER
    15    script:
    16      - cd x/sqlite
    17      - go mod download
    18      - go test -race -shuffle=on ./...
    19  
    20  linter-x-sqlite:
    21    stage: test
    22    image: golangci/golangci-lint:v1.57.2
    23    script:
    24      - cd x/sqlite
    25      - go mod download
    26      - golangci-lint run ./...
    27      - go mod tidy && git diff --exit-code
    28  
    29  test:
    30    parallel:
    31      matrix:
    32        - COUCHVER: ["2.2.0", "2.3.1", "3.0.1", "3.1.2", "3.2.3", "3.3.3"]
    33          GOVER: ["1.17", "1.18", "1.19", "1.20", "1.21", "1.22", "1.23rc2"]
    34    stage: test
    35    image: golang:$GOVER
    36    services:
    37      - name: couchdb:$COUCHVER
    38        alias: couch$COUCHVER
    39    before_script:
    40      - |
    41        case $COUCHVER in
    42          "2.2.0")
    43            export KIVIK_TEST_DSN_COUCH22=http://$COUCHDB_USER:$COUCHDB_PASSWORD@couch2.2.0:5984/
    44            ./script/complete_couch2.sh ${KIVIK_TEST_DSN_COUCH22}
    45            ;;
    46          "2.3.1")
    47            export KIVIK_TEST_DSN_COUCH23=http://$COUCHDB_USER:$COUCHDB_PASSWORD@couch2.3.1:5984/
    48            ./script/complete_couch2.sh ${KIVIK_TEST_DSN_COUCH23}
    49            ;;
    50          "3.0.1")
    51            export KIVIK_TEST_DSN_COUCH30=http://$COUCHDB_USER:$COUCHDB_PASSWORD@couch3.0.1:5984/
    52            ./script/complete_couch2.sh ${KIVIK_TEST_DSN_COUCH30}
    53            ;;
    54          "3.1.2")
    55            export KIVIK_TEST_DSN_COUCH31=http://$COUCHDB_USER:$COUCHDB_PASSWORD@couch3.1.2:5984/
    56            ./script/complete_couch2.sh ${KIVIK_TEST_DSN_COUCH31}
    57            ;;
    58          "3.2.3")
    59            export KIVIK_TEST_DSN_COUCH32=http://$COUCHDB_USER:$COUCHDB_PASSWORD@couch3.2.3:5984/
    60            ./script/complete_couch2.sh ${KIVIK_TEST_DSN_COUCH32}
    61            ;;
    62          "3.3.3")
    63            export KIVIK_TEST_DSN_COUCH33=http://$COUCHDB_USER:$COUCHDB_PASSWORD@couch3.3.3:5984/
    64            ./script/complete_couch2.sh ${KIVIK_TEST_DSN_COUCH33}
    65            ;;
    66        esac
    67    script:
    68      - go mod download
    69      - go test -race -shuffle=on ./...
    70  
    71  linter:
    72    stage: test
    73    image: golangci/golangci-lint:v1.57.2
    74    script:
    75      - go mod download
    76      - golangci-lint run ./...
    77      - go mod tidy -compat=1.17 && git diff --exit-code
    78      - go generate ./...
    79      - git diff --exit-code
    80  
    81  coverage:
    82    stage: test
    83    image: golang:1.22
    84    services: []
    85    before_script:
    86      - ""
    87    script:
    88      - go mod download
    89      - ./script/coverage.sh
    90  
    91  .gopherjs_test: &gopherjs_test_template
    92    image: golang:1.19
    93    services:
    94      - name: couchdb:3.3.3
    95        alias: couch33
    96    before_script:
    97      - ./script/complete_couch2.sh ${KIVIK_TEST_DSN_COUCH33}
    98      - curl -sL https://deb.nodesource.com/setup_${NODE_VER}.x | sed -e '/sleep/d' | bash -
    99      - apt-get update -qq && apt-get install -y nodejs
   100    script:
   101      - cp "$NPM_PROFILE" package.json
   102      - npm install -g npm@7.5.2 && npm update
   103      - npm install
   104      - npm install source-map-support
   105      - mkdir -p /tmp/src
   106      - ( cd /tmp && go install github.com/gopherjs/gopherjs@${GOPHERJS_TAG} )
   107      - npm list
   108      - gopherjs test `go list ./... | grep -v /cmd/`
   109  
   110  gopherjs1.17-pouchdb7:
   111    <<: *gopherjs_test_template
   112    image: golang:1.17
   113    variables:
   114      NODE_VER: 14
   115      NPM_PROFILE: pouchdb/pouchdb7-package.json
   116      KIVIK_TEST_DSN_COUCH33: http://admin:abc123@couch33:5984/
   117      GOPHERJS_TAG: v1.17.2
   118    script:
   119      - cp "$NPM_PROFILE" package.json
   120      - npm install -g npm@7.5.2 && npm update
   121      - npm install
   122      - npm install source-map-support
   123      - mkdir -p /tmp/src
   124      - ( cd /tmp && go install github.com/gopherjs/gopherjs@${GOPHERJS_TAG} )
   125      - npm install --force https://github.com/gopherjs/gopherjs#${GOPHERJS_TAG}
   126      - npm list
   127      - node --require syscall
   128      - gopherjs test `go list ./... | grep -v /cmd/`
   129  
   130  gopherjs1.17-pouchdb8:
   131    <<: *gopherjs_test_template
   132    image: golang:1.17
   133    variables:
   134      NODE_VER: 14
   135      NPM_PROFILE: pouchdb/pouchdb8-package.json
   136      KIVIK_TEST_DSN_COUCH33: http://admin:abc123@couch33:5984/
   137      GOPHERJS_TAG: v1.17.2
   138    script:
   139      - cp "$NPM_PROFILE" package.json
   140      - npm install -g npm@7.5.2 && npm update
   141      - npm install
   142      - npm install source-map-support
   143      - mkdir -p /tmp/src
   144      - ( cd /tmp && go install github.com/gopherjs/gopherjs@${GOPHERJS_TAG} )
   145      - npm install --force https://github.com/gopherjs/gopherjs#${GOPHERJS_TAG}
   146      - npm list
   147      - node --require syscall
   148      - gopherjs test `go list ./... | grep -v /cmd/`
   149  
   150  gopherjs1.17-pouchdb9:
   151    <<: *gopherjs_test_template
   152    image: golang:1.17
   153    variables:
   154      NODE_VER: 14
   155      NPM_PROFILE: pouchdb/pouchdb9-package.json
   156      KIVIK_TEST_DSN_COUCH33: http://admin:abc123@couch33:5984/
   157      GOPHERJS_TAG: v1.17.2
   158    script:
   159      - cp "$NPM_PROFILE" package.json
   160      - npm install -g npm@7.5.2 && npm update
   161      - npm install
   162      - npm install source-map-support
   163      - mkdir -p /tmp/src
   164      - ( cd /tmp && go install github.com/gopherjs/gopherjs@${GOPHERJS_TAG} )
   165      - npm install --force https://github.com/gopherjs/gopherjs#${GOPHERJS_TAG}
   166      - npm list
   167      - node --require syscall
   168      - gopherjs test `go list ./... | grep -v /cmd/`
   169  
   170  gopherjs1.18-pouchdb7:
   171    <<: *gopherjs_test_template
   172    image: golang:1.18
   173    variables:
   174      NODE_VER: 18
   175      NPM_PROFILE: pouchdb/pouchdb7-package.json
   176      KIVIK_TEST_DSN_COUCH33: http://admin:abc123@couch33:5984/
   177      GOPHERJS_TAG: v1.18.0-beta3
   178  
   179  gopherjs1.18-pouchdb8:
   180    <<: *gopherjs_test_template
   181    image: golang:1.18
   182    variables:
   183      NODE_VER: 18
   184      NPM_PROFILE: pouchdb/pouchdb8-package.json
   185      KIVIK_TEST_DSN_COUCH33: http://admin:abc123@couch33:5984/
   186      GOPHERJS_TAG: v1.18.0-beta3
   187  
   188  gopherjs1.18-pouchdb9:
   189    <<: *gopherjs_test_template
   190    image: golang:1.18
   191    variables:
   192      NODE_VER: 18
   193      NPM_PROFILE: pouchdb/pouchdb9-package.json
   194      KIVIK_TEST_DSN_COUCH33: http://admin:abc123@couch33:5984/
   195      GOPHERJS_TAG: v1.18.0-beta3
   196  
   197  gopherjs1.19-pouchdb7:
   198    <<: *gopherjs_test_template
   199    variables:
   200      NODE_VER: 18
   201      NPM_PROFILE: pouchdb/pouchdb7-package.json
   202      KIVIK_TEST_DSN_COUCH33: http://admin:abc123@couch33:5984/
   203      GOPHERJS_TAG: v1.19.0-beta1
   204  
   205  gopherjs1.19-pouchdb8:
   206    <<: *gopherjs_test_template
   207    variables:
   208      NODE_VER: 18
   209      NPM_PROFILE: pouchdb/pouchdb8-package.json
   210      KIVIK_TEST_DSN_COUCH33: http://admin:abc123@couch33:5984/
   211      GOPHERJS_TAG: v1.19.0-beta1
   212  
   213  gopherjs1.19-pouchdb9:
   214    <<: *gopherjs_test_template
   215    variables:
   216      NODE_VER: 18
   217      NPM_PROFILE: pouchdb/pouchdb9-package.json
   218      KIVIK_TEST_DSN_COUCH33: http://admin:abc123@couch33:5984/
   219      GOPHERJS_TAG: v1.19.0-beta1
   220  
   221  .releaser: &release_template
   222    image:
   223      name: goreleaser/goreleaser:v1.25.1
   224      entrypoint: [""]
   225    variables:
   226      GIT_DEPTH: 0
   227  
   228  release-test:
   229    <<: *release_template
   230    stage: test
   231    script:
   232      - goreleaser check
   233  
   234  release:
   235    <<: *release_template
   236    stage: release
   237    script:
   238      - goreleaser
   239    only:
   240      - /^v\d+\.\d+\.\d+/