stages: - test - release variables: COUCHDB_USER: admin COUCHDB_PASSWORD: abc123 test-x-sqlite: parallel: matrix: - GOVER: ["1.22", "1.23rc2"] stage: test image: golang:$GOVER script: - cd x/sqlite - go mod download - go test -race -shuffle=on ./... linter-x-sqlite: stage: test image: golangci/golangci-lint:v1.57.2 script: - cd x/sqlite - go mod download - golangci-lint run ./... - go mod tidy && git diff --exit-code test: parallel: matrix: - COUCHVER: ["2.2.0", "2.3.1", "3.0.1", "3.1.2", "3.2.3", "3.3.3"] GOVER: ["1.17", "1.18", "1.19", "1.20", "1.21", "1.22", "1.23rc2"] stage: test image: golang:$GOVER services: - name: couchdb:$COUCHVER alias: couch$COUCHVER before_script: - | case $COUCHVER in "2.2.0") export KIVIK_TEST_DSN_COUCH22=http://$COUCHDB_USER:$COUCHDB_PASSWORD@couch2.2.0:5984/ ./script/complete_couch2.sh ${KIVIK_TEST_DSN_COUCH22} ;; "2.3.1") export KIVIK_TEST_DSN_COUCH23=http://$COUCHDB_USER:$COUCHDB_PASSWORD@couch2.3.1:5984/ ./script/complete_couch2.sh ${KIVIK_TEST_DSN_COUCH23} ;; "3.0.1") export KIVIK_TEST_DSN_COUCH30=http://$COUCHDB_USER:$COUCHDB_PASSWORD@couch3.0.1:5984/ ./script/complete_couch2.sh ${KIVIK_TEST_DSN_COUCH30} ;; "3.1.2") export KIVIK_TEST_DSN_COUCH31=http://$COUCHDB_USER:$COUCHDB_PASSWORD@couch3.1.2:5984/ ./script/complete_couch2.sh ${KIVIK_TEST_DSN_COUCH31} ;; "3.2.3") export KIVIK_TEST_DSN_COUCH32=http://$COUCHDB_USER:$COUCHDB_PASSWORD@couch3.2.3:5984/ ./script/complete_couch2.sh ${KIVIK_TEST_DSN_COUCH32} ;; "3.3.3") export KIVIK_TEST_DSN_COUCH33=http://$COUCHDB_USER:$COUCHDB_PASSWORD@couch3.3.3:5984/ ./script/complete_couch2.sh ${KIVIK_TEST_DSN_COUCH33} ;; esac script: - go mod download - go test -race -shuffle=on ./... linter: stage: test image: golangci/golangci-lint:v1.57.2 script: - go mod download - golangci-lint run ./... - go mod tidy -compat=1.17 && git diff --exit-code - go generate ./... - git diff --exit-code coverage: stage: test image: golang:1.22 services: [] before_script: - "" script: - go mod download - ./script/coverage.sh .gopherjs_test: &gopherjs_test_template image: golang:1.19 services: - name: couchdb:3.3.3 alias: couch33 before_script: - ./script/complete_couch2.sh ${KIVIK_TEST_DSN_COUCH33} - curl -sL https://deb.nodesource.com/setup_${NODE_VER}.x | sed -e '/sleep/d' | bash - - apt-get update -qq && apt-get install -y nodejs script: - cp "$NPM_PROFILE" package.json - npm install -g npm@7.5.2 && npm update - npm install - npm install source-map-support - mkdir -p /tmp/src - ( cd /tmp && go install github.com/gopherjs/gopherjs@${GOPHERJS_TAG} ) - npm list - gopherjs test `go list ./... | grep -v /cmd/` gopherjs1.17-pouchdb7: <<: *gopherjs_test_template image: golang:1.17 variables: NODE_VER: 14 NPM_PROFILE: pouchdb/pouchdb7-package.json KIVIK_TEST_DSN_COUCH33: http://admin:abc123@couch33:5984/ GOPHERJS_TAG: v1.17.2 script: - cp "$NPM_PROFILE" package.json - npm install -g npm@7.5.2 && npm update - npm install - npm install source-map-support - mkdir -p /tmp/src - ( cd /tmp && go install github.com/gopherjs/gopherjs@${GOPHERJS_TAG} ) - npm install --force https://github.com/gopherjs/gopherjs#${GOPHERJS_TAG} - npm list - node --require syscall - gopherjs test `go list ./... | grep -v /cmd/` gopherjs1.17-pouchdb8: <<: *gopherjs_test_template image: golang:1.17 variables: NODE_VER: 14 NPM_PROFILE: pouchdb/pouchdb8-package.json KIVIK_TEST_DSN_COUCH33: http://admin:abc123@couch33:5984/ GOPHERJS_TAG: v1.17.2 script: - cp "$NPM_PROFILE" package.json - npm install -g npm@7.5.2 && npm update - npm install - npm install source-map-support - mkdir -p /tmp/src - ( cd /tmp && go install github.com/gopherjs/gopherjs@${GOPHERJS_TAG} ) - npm install --force https://github.com/gopherjs/gopherjs#${GOPHERJS_TAG} - npm list - node --require syscall - gopherjs test `go list ./... | grep -v /cmd/` gopherjs1.17-pouchdb9: <<: *gopherjs_test_template image: golang:1.17 variables: NODE_VER: 14 NPM_PROFILE: pouchdb/pouchdb9-package.json KIVIK_TEST_DSN_COUCH33: http://admin:abc123@couch33:5984/ GOPHERJS_TAG: v1.17.2 script: - cp "$NPM_PROFILE" package.json - npm install -g npm@7.5.2 && npm update - npm install - npm install source-map-support - mkdir -p /tmp/src - ( cd /tmp && go install github.com/gopherjs/gopherjs@${GOPHERJS_TAG} ) - npm install --force https://github.com/gopherjs/gopherjs#${GOPHERJS_TAG} - npm list - node --require syscall - gopherjs test `go list ./... | grep -v /cmd/` gopherjs1.18-pouchdb7: <<: *gopherjs_test_template image: golang:1.18 variables: NODE_VER: 18 NPM_PROFILE: pouchdb/pouchdb7-package.json KIVIK_TEST_DSN_COUCH33: http://admin:abc123@couch33:5984/ GOPHERJS_TAG: v1.18.0-beta3 gopherjs1.18-pouchdb8: <<: *gopherjs_test_template image: golang:1.18 variables: NODE_VER: 18 NPM_PROFILE: pouchdb/pouchdb8-package.json KIVIK_TEST_DSN_COUCH33: http://admin:abc123@couch33:5984/ GOPHERJS_TAG: v1.18.0-beta3 gopherjs1.18-pouchdb9: <<: *gopherjs_test_template image: golang:1.18 variables: NODE_VER: 18 NPM_PROFILE: pouchdb/pouchdb9-package.json KIVIK_TEST_DSN_COUCH33: http://admin:abc123@couch33:5984/ GOPHERJS_TAG: v1.18.0-beta3 gopherjs1.19-pouchdb7: <<: *gopherjs_test_template variables: NODE_VER: 18 NPM_PROFILE: pouchdb/pouchdb7-package.json KIVIK_TEST_DSN_COUCH33: http://admin:abc123@couch33:5984/ GOPHERJS_TAG: v1.19.0-beta1 gopherjs1.19-pouchdb8: <<: *gopherjs_test_template variables: NODE_VER: 18 NPM_PROFILE: pouchdb/pouchdb8-package.json KIVIK_TEST_DSN_COUCH33: http://admin:abc123@couch33:5984/ GOPHERJS_TAG: v1.19.0-beta1 gopherjs1.19-pouchdb9: <<: *gopherjs_test_template variables: NODE_VER: 18 NPM_PROFILE: pouchdb/pouchdb9-package.json KIVIK_TEST_DSN_COUCH33: http://admin:abc123@couch33:5984/ GOPHERJS_TAG: v1.19.0-beta1 .releaser: &release_template image: name: goreleaser/goreleaser:v1.25.1 entrypoint: [""] variables: GIT_DEPTH: 0 release-test: <<: *release_template stage: test script: - goreleaser check release: <<: *release_template stage: release script: - goreleaser only: - /^v\d+\.\d+\.\d+/