zephinzer/dev

View on GitHub
.gitlab-ci.yml

Summary

Maintainability
Test Coverage
image: golang:1.14
stages:
  - init
  - test & build
  - release
  - package
  - publish
variables:
  BIN_NAME: dev

.default_script:
  script: ["entrypoint"]
.go_linux:
  variables:
    GOOS: linux
    GOARCH: amd64
.go_macos:
  variables:
    GOOS: darwin
    GOARCH: amd64
.go_windows:
  variables:
    BIN_EXT: .exe
    GOOS: windows
    GOARCH: "386"

init:
  stage: init
  image: usvc/ci:go-dependencies
  extends: [.default_script]
  cache:
    key: ${CI_COMMIT_REF_NAME}
    paths: ["./vendor"]
  artifacts:
    paths: ["./vendor"]

unit test:
  stage: test & build
  image: usvc/ci:go-test
  extends: [.default_script]
  dependencies: ["init"]
  artifacts:
    paths: ["./c.out"]

.build:
  stage: test & build
  image: usvc/ci:go-build-production
  extends: [.default_script]
  dependencies: ["init"]
  artifacts:
    paths: ["./bin/*"]
  before_script:
    - make setup_build
    - git fetch
build linux (test):
  extends: [.build, .go_linux]
  only: [master]
build linux:
  extends: [.build, .go_linux]
  only: [tags]
build macos (test):
  extends: [.build, .go_macos]
  only: [master]
build macos:
  extends: [.build, .go_macos]
  only: [tags]
build windows (test):
  extends: [.build, .go_windows]
  only: [master]
build windows:
  extends: [.build, .go_windows]
  only: [tags]

coverage report:
  stage: release
  image: usvc/ci:go-coverage-code-climate
  extends: [.default_script]
  dependencies: ["unit test"]
  allow_failure: true

version bump:
  stage: release
  image: usvc/ci:version-bump-gitlab
  extends: [.default_script]
  only: [master]

.compress:
  stage: package
  image: usvc/ci:compress
  extends: [.default_script]
  only: [tags]
  artifacts:
    paths: ["./bin/*"]
  allow_failure: true
compress linux:
  extends: [.compress, .go_linux]
  dependencies: ["build linux"]
  variables:
    BIN_NAME: dev_linux_amd64
compress macos:
  extends: [.compress, .go_macos]
  dependencies: ["build macos"]
  variables:
    BIN_NAME: dev_darwin_amd64
compress windows:
  extends: [.compress, .go_windows]
  dependencies: ["build windows"]
  variables:
    BIN_NAME: dev_windows_386

dockerize:
  stage: package
  image: usvc/ci:docker-build
  extends: [.default_script]
  only: [tags]
  services: ["docker:19.03.1-dind"]
  artifacts:
    paths: ["./build/*"]
  variables:
    DOCKER_IMAGE_URL: zephinzer/dev
  allow_failure: true

dockerhub:
  stage: publish
  image: usvc/ci:docker-publish-1ad4294f
  extends: [.default_script]
  only: [tags]
  services: ["docker:19.03.1-dind"]
  dependencies: ["dockerize"]
  variables:
    DOCKER_IMAGE_URL: zephinzer/dev
  allow_failure: true