-
Notifications
You must be signed in to change notification settings - Fork 0
/
.gitlab-ci.yml
126 lines (114 loc) · 2.61 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
---
default:
cache:
paths:
- vendor/ruby
stages:
- lint
- test
- build
- release
- pages
rubocop:
stage: lint
image: ruby:${VERSION}
before_script:
- gem install bundler --no-document
- bundle install --path=vendor/ruby
script:
- bundle exec rubocop -P -E .
parallel:
matrix:
- VERSION: ['2.7', '3.0', '3.1']
spec:
stage: test
image: ruby:${VERSION}
script:
- bundle exec rspec
before_script:
- gem install bundler --no-document
- bundle install --path=vendor/ruby
parallel:
matrix:
- VERSION: ['2.7', '3.0', '3.1']
coverage: '/\(\d+\.\d+%\) covered/'
artifacts:
reports:
coverage_report:
coverage_format: cobertura
path: coverage/coverage.xml
.helm:
image:
name: alpine/helm:3.9.0
entrypoint: ['']
# Use Harbord registry
.docker:
stage: build
image:
name: gcr.io/kaniko-project/executor:debug
entrypoint: [""]
variables:
DOCKER_TAG_NAME: $CI_COMMIT_SHORT_SHA
script:
- mkdir -p /kaniko/.docker
- echo "{\"auths\":{\"${HARBOR_HOST}\":{\"auth\":\"$(echo -n ${HARBOR_USERNAME}:${HARBOR_PASSWORD} | base64)\"}}}" > /kaniko/.docker/config.json
- >-
/kaniko/executor
--context "${CI_PROJECT_DIR}"
--dockerfile "${CI_PROJECT_DIR}/Dockerfile"
--destination "${HARBOR_HOST}/${HARBOR_PROJECT}/${CI_PROJECT_NAME}:${DOCKER_TAG_NAME}-ruby"
docker-manual:
extends: .docker
when: manual
docker-tags:
extends: .docker
variables:
DOCKER_TAG_NAME: $CI_COMMIT_TAG
rules:
- if: $CI_COMMIT_TAG
docker-commit:
extends: .docker
variables:
DOCKER_TAG_NAME: $CI_COMMIT_SHORT_SHA
rules:
- if: $CI_COMMIT_MESSAGE =~ /\[docker\]/
helm-lint:
extends: .helm
stage: lint
script:
- helm lint helm-charts/*
helm-build:
extends: .helm
stage: build
script:
- helm registry login ${HARBOR_URL} -u "${HARBOR_USERNAME}" -p "${HARBOR_PASSWORD}"
- cd helm-charts
- helm packageHarbord registrytroclapi
- helm push troclapi-*.tgz ${HARBOR_OCI}/${HARBOR_PROJECT}
rules:
- if: $CI_COMMIT_MESSAGE =~ /\[helm\]/
release_job:
stage: release
image: registry.gitlab.com/gitlab-org/release-cli:latest
before_script: []
script:
- echo "Running the release job."
release:
tag_name: $CI_COMMIT_TAG
name: Release $CI_COMMIT_TAG
description: Troclapi release $CI_COMMIT_TAG
rules:
- if: $CI_COMMIT_TAG
pages:
stage: pages
image: ruby:3.0
script:
- gem install yard yard-sinatra
- yard doc --plugin yard-sinatra
- mv doc public
artifacts:
expire_in: 300 seconds
paths:
- public
only:
- master