# GDNative-Go Gitlab CI Pipelines image: golang:1.15-buster variables: TAG: $CI_BUILD_REF_NAME # release references .release_refs: &release_refs - "/^master$" - "tags" # Go Mod caching .go-cache: variables: GOPATH: $CI_PROJECT_DIR/.go before_script: - mkdir -p .go cache: paths: - .go/pkg/mod stages: - commits_check - linting - version # ---------------- commits check ---------------- commit_messages_check: stage: commits_check image: registry.gitlab.com/juhani/go-semrel-gitlab:v0.21.1 script: - release test-git allow_failure: false except: *release_refs # ---------------- code checks ---------------- code_linting: extends: .go-cache image: name: golangci/golangci-lint:latest entrypoint: [""] stage: linting script: # get goreturns and add it to the $PATH - go get -u github.com/sqs/goreturns - export PATH="$PATH:$GOPATH/bin" # checkout godot_headers submodule - git submodule update --init # make sure to download and tidy mods - go mod download - go mod tidy # generate bindings and build library - go run build/mage.go generate # run linters - golangci-lint run -v --timeout 5m # run goretuns formating - if [[ $(goreturns -d ./gdnative ./cmd) -eq "" ]]; then echo "goreturns check success"; exit 0; fi - echo "ERROR - goreturn check failed" - goreturns -d ./gdnative ./cmd - exit 1 allow_failure: false except: - tags # ---------------- update version ---------------- version_update: stage: version image: registry.gitlab.com/juhani/go-semrel-gitlab:v0.21.1 script: - release changelog - release commit-and-tag --create-tag-pipeline CHANGELOG.md allow_failure: true when: on_success only: - master