-
Notifications
You must be signed in to change notification settings - Fork 19
/
Copy path.gitlab-ci.yml
128 lines (119 loc) · 4.72 KB
/
.gitlab-ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
stages:
- build
- publish
## Templates
.runners: &runners
tags:
- private
- docker
- kubernetes
- amd64
.publish_container_image: &publish_container_image
<<: *runners
image:
name: gcr.io/kaniko-project/executor:debug
entrypoint: [""]
script:
- REGISTRY_AUTH=$(echo -n ${REGISTRY_USER}:${REGISTRY_PASSWORD} | base64)
- echo "{\"auths\":{\"${REGISTRY}\":{\"auth\":\"${REGISTRY_AUTH}\"}}}" > /kaniko/.docker/config.json
- /kaniko/executor
--context ${CI_PROJECT_DIR}
--dockerfile ${CI_PROJECT_DIR}/${CONTAINER_DOCKERFILE:-Dockerfile}
--destination ${CONTAINER_IMAGE_NAME}
${KANIKO_EXTRA_ARG}
.github_release: &github_release
<<: *runners
image:
name: angelbarrera92/plugins-github-release:latest
entrypoint: [""]
script:
- /bin/drone-github-release
--api-key "${GITHUB_RELEASE_GITHUB_ACCESS_TOKEN}"
--prerelease="${GITHUB_RELEASE_IS_PRE_RELEASE}"
--repo.name="${GITHUB_RELEASE_REPOSITORY_NAME}"
--repo.owner="${GITHUB_RELEASE_REPOSITORY_OWNER}"
--overwrite
--build.event="tag"
--title="${GITHUB_RELEASE_TITLE}"
--commit.ref="${CI_COMMIT_TAG}"
--files "${GITHUB_RELEASE_FILES}"
build:
stage: build
<<: *runners
image: golang:1.12.7
before_script:
- go mod download
- mkdir binaries
script:
- cd cmd/loki-multi-tenant-proxy
- GOOS=darwin GOARCH=amd64 go build -o loki-multi-tenant-proxy -ldflags="-X 'main.version=${CI_COMMIT_TAG:-${CI_COMMIT_SHORT_SHA}}' -X 'main.commit=${CI_COMMIT_SHORT_SHA}'"
- mv loki-multi-tenant-proxy ../../binaries/loki-multi-tenant-proxy-darwing-amd64
- GOOS=linux GOARCH=amd64 go build -o loki-multi-tenant-proxy -ldflags="-X 'main.version=${CI_COMMIT_TAG:-${CI_COMMIT_SHORT_SHA}}' -X 'main.commit=${CI_COMMIT_SHORT_SHA}'"
- mv loki-multi-tenant-proxy ../../binaries/loki-multi-tenant-proxy-linux-amd64
artifacts:
paths:
- binaries/
## Gitlab: builds every commit publishing the container image in the gitlab registry
gitlab_unstable:
stage: publish
<<: *publish_container_image
variables:
REGISTRY: ${CI_REGISTRY}
REGISTRY_USER: ${CI_REGISTRY_USER}
REGISTRY_PASSWORD: ${CI_REGISTRY_PASSWORD}
CONTAINER_IMAGE_NAME: ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHORT_SHA}
CONTAINER_DOCKERFILE: build/package/Dockerfile
KANIKO_EXTRA_ARG: "--build-arg VERSION=${CI_COMMIT_SHORT_SHA} --build-arg COMMIT=${CI_COMMIT_SHORT_SHA}"
except:
- /^v([0-9]+)\.([0-9]+)\.([0-9]+)-rc([0-9]+)$/
- /^v([0-9]+)\.([0-9]+)\.([0-9]+)$/
## Dockerhub: publish the image if is a release candidate or a final release
dockerhub_release_cadidate:
stage: publish
<<: *publish_container_image
variables:
REGISTRY: ${DOCKERHUB_REGISTRY}
REGISTRY_USER: ${DOCKERHUB_REGISTRY_USER}
REGISTRY_PASSWORD: ${DOCKERHUB_REGISTRY_PASSWORD}
CONTAINER_IMAGE_NAME: ${DOCKERHUB_REGISTRY_USER}/${CI_PROJECT_NAME}:${CI_COMMIT_TAG}
CONTAINER_DOCKERFILE: build/package/Dockerfile
KANIKO_EXTRA_ARG: "--build-arg VERSION=${CI_COMMIT_TAG} --build-arg COMMIT=${CI_COMMIT_SHORT_SHA}"
only:
- /^v([0-9]+)\.([0-9]+)\.([0-9]+)-rc([0-9]+)$/
dockerhub_stable:
stage: publish
<<: *publish_container_image
variables:
REGISTRY: ${DOCKERHUB_REGISTRY}
REGISTRY_USER: ${DOCKERHUB_REGISTRY_USER}
REGISTRY_PASSWORD: ${DOCKERHUB_REGISTRY_PASSWORD}
CONTAINER_IMAGE_NAME: ${DOCKERHUB_REGISTRY_USER}/${CI_PROJECT_NAME}:${CI_COMMIT_TAG}
CONTAINER_DOCKERFILE: build/package/Dockerfile
KANIKO_EXTRA_ARG: "--destination ${DOCKERHUB_REGISTRY_USER}/${CI_PROJECT_NAME}:latest --build-arg VERSION=${CI_COMMIT_TAG} --build-arg COMMIT=${CI_COMMIT_SHORT_SHA}"
only:
- /^v([0-9]+)\.([0-9]+)\.([0-9]+)$/
## Github: Releases only on release candidate or final release
github_release_candidate:
<<: *github_release
stage: publish
variables:
GITHUB_RELEASE_IS_PRE_RELEASE: "true"
GITHUB_RELEASE_REPOSITORY_OWNER: "k8spin"
GITHUB_RELEASE_REPOSITORY_NAME: "loki-multi-tenant-proxy"
GITHUB_RELEASE_TITLE: "Release candidate ${CI_COMMIT_TAG}"
GITHUB_RELEASE_GITHUB_ACCESS_TOKEN: ${GITHUB_TOKEN}
GITHUB_RELEASE_FILES: "binaries/loki-multi-tenant-proxy-darwing-amd64,binaries/loki-multi-tenant-proxy-linux-amd64"
only:
- /^v([0-9]+)\.([0-9]+)\.([0-9]+)-rc([0-9]+)$/
github_release:
<<: *github_release
stage: publish
variables:
GITHUB_RELEASE_IS_PRE_RELEASE: "false"
GITHUB_RELEASE_REPOSITORY_OWNER: "k8spin"
GITHUB_RELEASE_REPOSITORY_NAME: "loki-multi-tenant-proxy"
GITHUB_RELEASE_TITLE: "Release ${CI_COMMIT_TAG}"
GITHUB_RELEASE_GITHUB_ACCESS_TOKEN: ${GITHUB_TOKEN}
GITHUB_RELEASE_FILES: "binaries/loki-multi-tenant-proxy-darwing-amd64,binaries/loki-multi-tenant-proxy-linux-amd64"
only:
- /^v([0-9]+)\.([0-9]+)\.([0-9]+)$/