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.15: <<: *golang image: golang:1.15 # Version in Debian stable. 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 --name test1 chasquid-test make test after_script: - docker cp test1:/go/src/blitiri.com.ar/go/chasquid docker-out/ artifacts: when: always expire_in: 1 hour paths: - docker-out/ # 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 --name test1 chasquid-test make test after_script: - docker cp test1:/go/src/blitiri.com.ar/go/chasquid docker-out/ artifacts: when: always expire_in: 1 hour paths: - docker-out/ # Build docker image, upload to gitlab registry. gitlab: stage: image rules: - if: '$CI_REGISTRY_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_COMMIT_REF_NAME -f docker/Dockerfile . - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME - | if [ $CI_COMMIT_REF_NAME == master ]; then docker tag $CI_REGISTRY_IMAGE:master $CI_REGISTRY_IMAGE:latest docker push $CI_REGISTRY_IMAGE:latest fi # Build docker image, upload to dockerhub registry. dockerhub: stage: image rules: - if: '$DOCKER_REGISTRY_USER' 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_COMMIT_REF_NAME -f docker/Dockerfile . - docker push index.docker.io/albertito/chasquid:$CI_COMMIT_REF_NAME - | if [ $CI_COMMIT_REF_NAME == master ]; then docker tag index.docker.io/albertito/chasquid:master index.docker.io/albertito/chasquid:latest docker push index.docker.io/albertito/chasquid:latest fi