stages: - test - image # Go tests, on various Go versions. .golang_template: &golang stage: test before_script: - useradd --create-home --user-group testing - chown -R testing:testing $GOPATH/ . script: - su testing -c "go mod download" - su testing -c "go get ./..." - su testing -c "make all" - su testing -c "go test ./..." - su testing -c "go test -race ./..." golang_1.11: <<: *golang image: golang:1.11 # Version in Debian stable. variables: GO111MODULE: "on" golang_latest: <<: *golang image: golang:latest # Integration test, using the module versions from the repository. integration_stable: stage: test image: docker:stable services: - docker:dind script: - docker info - docker build -t chasquid-test -f test/Dockerfile . - docker run chasquid-test env - docker run chasquid-test make test # Integration test, using the latest module versions. integration_latest: stage: test image: docker:stable services: - docker:dind script: - docker info - docker build -t chasquid-test --build-arg GO_GET_ARGS="-u=patch" -f test/Dockerfile . - docker run chasquid-test env - docker run chasquid-test make test # Build docker image, upload to gitlab registry. gitlab: stage: image image: docker:stable services: - docker:dind script: - docker info - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - docker build -t $CI_REGISTRY_IMAGE:$CI_BUILD_REF_NAME -f docker/Dockerfile . - docker push $CI_REGISTRY_IMAGE:$CI_BUILD_REF_NAME # Build docker image, upload to dockerhub registry. dockerhub: stage: image image: docker:stable services: - docker:dind script: - docker info - docker login -u $DOCKER_REGISTRY_USER -p $DOCKER_REGISTRY_PASSWORD docker.io - docker build -t index.docker.io/albertito/chasquid:$CI_BUILD_REF_NAME -f docker/Dockerfile . - docker push index.docker.io/albertito/chasquid:$CI_BUILD_REF_NAME