stages: - test - build - release .go_template: image: golang:latest dependencies: extends: .go_template stage: test script: - make check/dependencies format: extends: .go_template stage: test script: - make check/fmt test: extends: .go_template stage: test script: - make test build: extends: .go_template stage: build script: - make build artifacts: paths: - fail2ban_exporter expire_in: 1 day release: stage: release image: docker:stable services: - docker:dind variables: DOCKER_REGISTRY: $CI_REGISTRY DOCKER_USERNAME: $CI_REGISTRY_USER DOCKER_PASSWORD: $CI_REGISTRY_PASSWORD GIT_DEPTH: 0 rules: - if: $CI_COMMIT_TAG =~ /^v.*$/ script: | # GITLAB_TOKEN is needed to create GitLab releases. # DOCKER_* are needed to push Docker images. docker run --rm --privileged \ -v $PWD:/go/src/gitlab.com/hectorjsmith/fail2ban-prometheus-exporter \ -w /go/src/gitlab.com/hectorjsmith/fail2ban-prometheus-exporter \ -v /var/run/docker.sock:/var/run/docker.sock \ -e DOCKER_USERNAME -e DOCKER_PASSWORD -e DOCKER_REGISTRY \ -e GITLAB_TOKEN \ goreleaser/goreleaser release --clean