stages: - test - build - release .go_template: image: golang:latest sast: stage: test include: - template: Security/SAST.gitlab-ci.yml - template: Security/Dependency-Scanning.gitlab-ci.yml format: extends: .go_template stage: test script: - make check/fmt vet: extends: .go_template stage: test allow_failure: true script: - make vet 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: | 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 tag images: stage: release image: docker:stable services: - docker:dind needs: - release rules: - if: $CI_COMMIT_TAG =~ /^v\d+\.\d+\.\d+$/ variables: IMAGE_NAME: registry.gitlab.com/hectorjsmith/fail2ban-prometheus-exporter script: - ./.gitlab-ci/tagLatestImage.sh