Newer
Older
variables:
# Package version can only contain numbers (0-9), and dots (.).
# Must be in the format of X.Y.Z, i.e. should match /\A\d+\.\d+\.\d+\z/ regular expresion.
# See https://docs.gitlab.com/ee/user/packages/generic_packages/#publish-a-package-file
PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/boilr/"
format:
stage: build
script:
- test -z "$(gofmt -l ./)"
except:
- tags # do not run for releases
vet:
stage: build
script:
- go vet -json ./... | tee vet-report.json
artifacts:
when: always
paths:
- vet-report.json
expire_in: 1 hour
except:
- tags # do not run for releases
test:
stage: build
script:
- go test -coverprofile=coverage.out -json ./... | tee test-report.json
artifacts:
when: always
paths:
- test-report.json
- coverage.out
expire_in: 1 hour
except:
- tags # do not run for releases
staticcheck:
stage: build
script:
- go install honnef.co/go/tools/cmd/staticcheck@latest # ideally we should version pin
- staticcheck ./...
except:
- tags # do not run for releases
golint:
stage: build
script:
- go install golang.org/x/lint/golint@latest # ideally we should version pin
- golint -set_exit_status ./...
except:
- tags # do not run for releases
build:
stage: build
script:
- go build ./...
artifacts:
# instead of manually adding i.e. the built binaries, we can instead just
# grab anything not tracked in Git
untracked: true
expire_in: 1 hour
except:
- tags # do not run for releases
# sonar instance needs to be running on localhost:9000 for this to work!
sonarcloud-check:
stage: build
needs:
- job: test
artifacts: true
- job: vet
artifacts: true
image:
name: sonarsource/sonar-scanner-cli:latest
entrypoint: [""]
variables:
SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar"
GIT_DEPTH: "0"
cache:
key: "${CI_JOB_NAME}"
paths:
- .sonar/cache
script:
- sonar-scanner
except:
- tags # do not run for releases
# to create a new release, do a release
generate_executables:
- if: $CI_COMMIT_TAG # Run this job when a tag is created
script:
- ./go-executable-build.sh boilr boilr.go
artifacts:
paths:
- builds/boilr-darwin-amd64
- builds/boilr-darwin-arm64
- builds/boilr-linux-amd64
- builds/boilr-linux-386
- builds/boilr-windows-386.exe
- builds/boilr-windows-amd64.exe
upload:
stage: release
image: curlimages/curl:latest
rules:
- if: $CI_COMMIT_TAG # Run this job when a tag is created
needs:
- job: generate_executables
artifacts: true
script:
- 'curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file builds/boilr-darwin-amd64 "${PACKAGE_REGISTRY_URL}${CI_COMMIT_TAG}/boilr-darwin-amd64"'
- 'curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file builds/boilr-darwin-arm64 "${PACKAGE_REGISTRY_URL}${CI_COMMIT_TAG}/boilr-darwin-arm64"'
- 'curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file builds/boilr-linux-amd64 "${PACKAGE_REGISTRY_URL}${CI_COMMIT_TAG}/boilr-linux-amd64"'
- 'curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file builds/boilr-linux-386 "${PACKAGE_REGISTRY_URL}${CI_COMMIT_TAG}/boilr-linux-386"'
- 'curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file builds/boilr-windows-386.exe "${PACKAGE_REGISTRY_URL}${CI_COMMIT_TAG}/boilr-windows-386.exe"'
- 'curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file builds/boilr-windows-amd64.exe "${PACKAGE_REGISTRY_URL}${CI_COMMIT_TAG}/boilr-windows-amd64.exe"'
release_job:
stage: release
image: registry.gitlab.com/gitlab-org/release-cli:latest
rules:
- if: $CI_COMMIT_TAG # Run this job when a tag is created
needs:
script:
- echo "running release_job"
- echo "creating release $CI_COMMIT_TAG"
release: # See https://docs.gitlab.com/ee/ci/yaml/#release for available properties
tag_name: '$CI_COMMIT_TAG'
description: '$CI_COMMIT_TAG'
- name: '${CI_COMMIT_TAG}/boilr-darwin-amd64'
url: '${PACKAGE_REGISTRY_URL}${CI_COMMIT_TAG}/boilr-darwin-amd64'
- name: '${CI_COMMIT_TAG}/boilr-darwin-arm64'
url: '${PACKAGE_REGISTRY_URL}${CI_COMMIT_TAG}/boilr-darwin-arm64'
- name: '${CI_COMMIT_TAG}/boilr-linux-amd64'
url: '${PACKAGE_REGISTRY_URL}${CI_COMMIT_TAG}/boilr-linux-amd64'
- name: '${CI_COMMIT_TAG}/boilr-linux-386'
url: '${PACKAGE_REGISTRY_URL}${CI_COMMIT_TAG}/boilr-linux-386'
- name: '${CI_COMMIT_TAG}/boilr-windows-386.exe'
url: '${PACKAGE_REGISTRY_URL}${CI_COMMIT_TAG}/boilr-windows-386.exe'
- name: '${CI_COMMIT_TAG}/boilr-windows-amd64.exe'
url: '${PACKAGE_REGISTRY_URL}${CI_COMMIT_TAG}/boilr-windows-amd64.exe'