.gitlab-ci.yml
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