brpaz
2/16/2019 - 7:08 PM

GitLab and Docker Hub

#gitlab #docker

image: golang:1.11

variables:
    TEST_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA
    RELEASE_CI_REGISTRY: registry.hub.docker.com
    RELEASE_IMAGE: $RELEASE_CI_REGISTRY/brpaz/gitlab-mr-commenter:$CI_COMMIT_TAG
    RELEASE_IMAGE_LATEST: $RELEASE_CI_REGISTRY/brpaz/gitlab-mr-commenter:latest

stages:
    - test
    - build
    - release

lint_code:
    stage: test
    script:
        - go get golang.org/x/lint/golint
        - make lint
    only:
        - branches

unit_tests:
    stage: test
    script:
        - make dep
    only:
        - branches

build-image:
    stage: build
    image: docker:latest
    services:
        - docker:dind
    script:
        # push the test image to GitLab CI registry
        - echo $CI_JOB_TOKEN | docker login --username gitlab-ci-token --password-stdin $CI_REGISTRY
        - docker build -t $TEST_IMAGE .
        - docker push $TEST_IMAGE
    only:
        - branches

release:
    stage: release
    image: docker:latest
    services:
        - docker:dind
    script:
        # Push the final tagged image to Docker Hub.
        - echo $CI_JOB_TOKEN | docker login --username gitlab-ci-token --password-stdin $CI_REGISTRY
        - docker pull ${TEST_IMAGE}
        - echo $DOCKERHUB_PASSWORD | docker login --username $DOCKERHUB_USER --password-stdin $RELEASE_CI_REGISTRY
        - docker tag ${TEST_IMAGE} ${RELEASE_IMAGE}
        - docker push ${RELEASE_IMAGE}
        - docker tag ${TEST_IMAGE} ${RELEASE_IMAGE_LATEST}
        - docker push ${RELEASE_IMAGE_LATEST}
    only:
        - tags