api-clients 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +190 -13
- data/Rakefile +1 -5
- data/gitlab-ci-includes.yml +50 -0
- data/lib/api/clients/cortex.rb +5 -5
- data/lib/api/clients/version.rb +1 -1
- data/scripts/cortex.rb +13 -0
- data/scripts/mend.rb +12 -0
- data/scripts/sonarqube.rb +11 -0
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2d616c505ee1bc25f860ef1a86d70cbb3baf409bc22ce13c75c70029bd818501
|
4
|
+
data.tar.gz: 7e391a9af590565ae767849c76856b4af26c205b96ae7a917914b73a228baddf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5801e1db200707dcddace32ea0f5e9e0562bda0b59adbb37f05b2e43e03326d9a140d045b3d8e71407f2a767bb12e269b9fa2af2c42840516ea11153ecfb849b
|
7
|
+
data.tar.gz: f2d1b64e4fed0c5820cf7e9bec9c93f4a575f901576453ca5cbe6919815f5eeb5e28fedade8b9510e125b128ef13e322a6f5e0867a50b4fcc0a50ae814da828c
|
data/README.md
CHANGED
@@ -1,30 +1,207 @@
|
|
1
|
-
#
|
1
|
+
# CI jobs to tag projects in code tools
|
2
2
|
|
3
|
-
|
3
|
+
Adds jobs for cortex, mend and sonarqube to the pipelines, the jobs add the gitlab url of the hosting repository as a project tag on Mend, a project link in Sonarqube or open-api info in Cortex so that reporting can correlate tools by use of the gitlab url as the key.
|
4
4
|
|
5
|
-
|
5
|
+
## Use jobs in your pipelines
|
6
6
|
|
7
|
-
|
7
|
+
Add the following lines to your .gitlab-ci.yml file:
|
8
8
|
|
9
|
-
|
9
|
+
```
|
10
|
+
include: # add to your includes
|
11
|
+
- project: j.rivera/api-tools
|
12
|
+
file: gitlab-ci-includes.yml
|
13
|
+
ref: 53444d03851ffed62f457b8ad2aa6950f894d3aa
|
10
14
|
|
11
|
-
|
15
|
+
stages:
|
16
|
+
- code_tools # add to your stages
|
17
|
+
```
|
12
18
|
|
13
|
-
|
19
|
+
That will add under the stage `code_tools` the jobs for Cortex (`cortex_project`), Mend (`mend_project`) and Sonarqube (`sonarqube_project`) to decorate those tools' projects with the url of the gitlab repository.
|
14
20
|
|
15
|
-
|
21
|
+
Next add environment variables needed by the jobs. Ask for help on it on slack channel #bet-tribe-odds-devops:
|
16
22
|
|
17
|
-
|
23
|
+
- `APICLIENTS_TOKEN` a gitlab access token for the repository [Api Clients](https://gitlab.sportradar.ag/j.rivera/api-tools)
|
24
|
+
- `CORTEX_API_KEY` Cortex API key
|
25
|
+
- `MEND_ORG_TOKEN` Mend organization token. Defaults to value of variable `WHITESOURCE_ORG_TOKEN`
|
26
|
+
- `MEND_PRODUCT` Mend product name. Defaults to value of `WHITESOURCE_PRODUCT`
|
27
|
+
- `MEND_PROJECT` Mend project name. Defaults to value of `WHITESOURCE_PROJECT_NAME`
|
28
|
+
- `MEND_USER_KEY` Mend user key. Defaults to value of `WHITESOURCE_USER_KEY`
|
29
|
+
- `SQ_PROJECT` Sonarqube project key. Defaults to value of `SONAR_PROJECT_KEY`
|
30
|
+
- `SQ_TOKEN` Sonarqube token
|
31
|
+
- `SQ_USER` Sonarqube user
|
18
32
|
|
19
|
-
|
33
|
+
### Adjust jobs to your pipeline
|
20
34
|
|
21
|
-
|
35
|
+
To override the jobs declare them in your `.gitlab-ci.yml`, in the examples below other variables' values are passed to the jobs:
|
36
|
+
|
37
|
+
```
|
38
|
+
cortex-project:
|
39
|
+
extends: .cortex-project-decoration
|
40
|
+
variables:
|
41
|
+
CORTEX_API_KEY: $CORTEX_TOKEN
|
42
|
+
|
43
|
+
mend-project:
|
44
|
+
extends: .mend-project-decoration
|
45
|
+
variables:
|
46
|
+
MEND_ORG_TOKEN: $MEND_ORG_TOKEN
|
47
|
+
MEND_PRODUCT: $MEND_PRODUCT
|
48
|
+
MEND_PROJECT: $MEND_PROJECT_NAME
|
49
|
+
MEND_USER_KEY: $MEND_USER_KEY
|
50
|
+
|
51
|
+
sq-project:
|
52
|
+
extends: .sq-project-decoration
|
53
|
+
variables:
|
54
|
+
SQ_PROJECT: $SONARQUBE_PROJECT_KEY
|
55
|
+
SQ_TOKEN: $SONARQUBE_TOKEN
|
56
|
+
SQ_USER: $SONARQUBE_USER
|
57
|
+
```
|
58
|
+
|
59
|
+
## Ruby gem installation
|
60
|
+
|
61
|
+
Install the ruby gem with:
|
62
|
+
|
63
|
+
```
|
64
|
+
$ gem install api-clients
|
65
|
+
```
|
66
|
+
|
67
|
+
Or add to your application's Gemfile by executing:
|
68
|
+
|
69
|
+
```
|
70
|
+
$ bundle add api-clients
|
71
|
+
$ bundle install
|
72
|
+
```
|
73
|
+
|
74
|
+
Or install it from code, for that read below.
|
75
|
+
|
76
|
+
## Ruby code usage
|
77
|
+
|
78
|
+
To play with the ruby code first install the gem.
|
79
|
+
|
80
|
+
### For Cortex
|
81
|
+
|
82
|
+
To use cortex:
|
83
|
+
|
84
|
+
```
|
85
|
+
$ bundle exec bin/console
|
86
|
+
|
87
|
+
irb > cortex = Api::Clients::Cortex.new gitlab_url: "https://gitlab.example.com/j.rivera/my-test-service"
|
88
|
+
=>
|
89
|
+
#<Api::Clients::Cortex:0x00005629f898d488
|
90
|
+
...
|
91
|
+
|
92
|
+
irb > cortex.update_service!
|
93
|
+
=> nil
|
94
|
+
|
95
|
+
irb > cortex.service_info
|
96
|
+
=>
|
97
|
+
{"info"=>
|
98
|
+
{"title"=>"odds-devops-test-service",
|
99
|
+
"description"=>"Test service for Odds devops tasks",
|
100
|
+
"x-cortex-git"=>
|
101
|
+
{"gitlab"=>
|
102
|
+
{"repository"=>"j.rivera/my-test-service"}},
|
103
|
+
"x-cortex-tag"=>
|
104
|
+
"oddsdevops_jrivera-my-test-service"},
|
105
|
+
"openapi"=>"3.0.1",
|
106
|
+
"servers"=>[{"url"=>"/"}]}
|
107
|
+
```
|
108
|
+
|
109
|
+
## Mend
|
110
|
+
|
111
|
+
To use Mend:
|
112
|
+
|
113
|
+
```
|
114
|
+
export MEND_ORG_TOKEN=...
|
115
|
+
export MEND_USER_KEY=...
|
116
|
+
|
117
|
+
$ bundle exec bin/console
|
118
|
+
|
119
|
+
irb > mend = Api::Clients::Mend.new gitlab_url: "https://gitlab.example.com/j.rivera/my-test-service", product: "devops", project: "jrivera_my-test-service"
|
120
|
+
=>
|
121
|
+
#<Api::Clients::Mend:0x00005629f897ca48
|
122
|
+
...
|
123
|
+
|
124
|
+
irb(main):010:0> mend.tag_project!
|
125
|
+
=>
|
126
|
+
{"projectTagsInfo"=>
|
127
|
+
{"name"=>"jrivera_my-test-service",
|
128
|
+
"token"=>
|
129
|
+
"1da9c170adeb421a89a9c4157acba3b30fe5856c02114536990eee8f17c87c7d",
|
130
|
+
"tags"=>
|
131
|
+
{"gitlab-url"=>
|
132
|
+
"https://gitlab.example.com/j.rivera/my-test-service"}}}
|
133
|
+
|
134
|
+
irb > mend.project_tags
|
135
|
+
=>
|
136
|
+
{"gitlab-url"=>
|
137
|
+
["https://gitlab.example.com/j.rivera/my-test-service"]}
|
138
|
+
```
|
139
|
+
|
140
|
+
## Sonarqube
|
141
|
+
|
142
|
+
To use Sonarqube:
|
143
|
+
|
144
|
+
```
|
145
|
+
export SQ_TOKEN=...
|
146
|
+
export SQ_USER=...
|
147
|
+
|
148
|
+
$ bundle exec bin/console
|
149
|
+
|
150
|
+
irb > sq = Api::Clients::Sonarqube.new gitlab_url: "https://gitlab.example.com/j.rivera/my-test-service", project: "jrivera_my-test-service"
|
151
|
+
=>
|
152
|
+
#<Api::Clients::Sonarqube:0x00005629f8248830
|
153
|
+
...
|
154
|
+
|
155
|
+
irb > sq.link_project!
|
156
|
+
=> nil
|
157
|
+
|
158
|
+
irb > sq.project
|
159
|
+
=> "jrivera_my-test-service"
|
160
|
+
|
161
|
+
irb(main):005:0> sq.project_links
|
162
|
+
=>
|
163
|
+
[...
|
164
|
+
{"id"=>"AYmrhzwtxhyS1ZWWXNJ5",
|
165
|
+
"name"=>"gitlab-url",
|
166
|
+
"type"=>"gitlab-url",
|
167
|
+
"url"=>
|
168
|
+
"https://gitlab.example.com/j.rivera/my-test-service"}]
|
169
|
+
```
|
22
170
|
|
23
171
|
## Development
|
24
172
|
|
25
|
-
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
173
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bundle exec bin/console` for an interactive prompt that will allow you to experiment.
|
174
|
+
|
175
|
+
TODO test instructions
|
176
|
+
To install this gem onto your local machine, run `bundle exec rake install`.
|
177
|
+
|
178
|
+
To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
179
|
+
|
180
|
+
Update ruby code in directory `lib/api/`, in file `lib/api/clients/version.rb` increase version (0.0.1 in the example), then build it with:
|
181
|
+
|
182
|
+
```
|
183
|
+
bundle
|
184
|
+
gem build api-clients.gemspec
|
185
|
+
```
|
186
|
+
|
187
|
+
Install it locally to test:
|
188
|
+
|
189
|
+
```
|
190
|
+
sudo gem install --local api-clients-0.0.1.gem
|
191
|
+
```
|
192
|
+
|
193
|
+
Push it to rubygems for usage in pipelines:
|
194
|
+
|
195
|
+
```
|
196
|
+
gem push api-clients-0.0.1.gem
|
197
|
+
```
|
198
|
+
|
199
|
+
Tag the version:
|
26
200
|
|
27
|
-
|
201
|
+
```
|
202
|
+
git tag 0.0.1
|
203
|
+
git push --tags
|
204
|
+
``
|
28
205
|
|
29
206
|
## Contributing
|
30
207
|
|
data/Rakefile
CHANGED
@@ -0,0 +1,50 @@
|
|
1
|
+
# Pipeline jobs to add gitlab-url to cortex, mend and sonarqube
|
2
|
+
|
3
|
+
.cortex-project-decoration:
|
4
|
+
image: ruby:latest
|
5
|
+
script:
|
6
|
+
- gem install api-clients
|
7
|
+
- git clone https://dummy:$APICLIENTS_TOKEN@gitlab.sportradar.ag/j.rivera/api-tools.git api-clients
|
8
|
+
- api-clients/scripts/cortex.rb
|
9
|
+
|
10
|
+
cortex-project:
|
11
|
+
extends: .cortex-project-decoration
|
12
|
+
stage: code_tools
|
13
|
+
variables:
|
14
|
+
CORTEX_API_KEY: $CORTEX_API_KEY
|
15
|
+
GITLAB_URL: $CI_PROJECT_URL
|
16
|
+
|
17
|
+
|
18
|
+
.mend-project-decoration:
|
19
|
+
image: ruby:latest
|
20
|
+
script:
|
21
|
+
- gem install api-clients
|
22
|
+
- git clone https://dummy:$APICLIENTS_TOKEN@gitlab.sportradar.ag/j.rivera/api-tools.git api-clients
|
23
|
+
- api-clients/scripts/mend.rb
|
24
|
+
|
25
|
+
mend-project:
|
26
|
+
extends: .mend-project-decoration
|
27
|
+
stage: code_tools
|
28
|
+
variables:
|
29
|
+
GITLAB_URL: $CI_PROJECT_URL
|
30
|
+
MEND_ORG_TOKEN: $WHITESOURCE_ORG_TOKEN
|
31
|
+
MEND_PRODUCT: $WHITESOURCE_PRODUCT
|
32
|
+
MEND_PROJECT: $WHITESOURCE_PROJECT_NAME
|
33
|
+
MEND_USER_KEY: $WHITESOURCE_USER_KEY
|
34
|
+
|
35
|
+
|
36
|
+
.sq-project-decoration:
|
37
|
+
image: ruby:latest
|
38
|
+
script:
|
39
|
+
- gem install api-clients
|
40
|
+
- git clone https://dummy:$APICLIENTS_TOKEN@gitlab.sportradar.ag/j.rivera/api-tools.git api-clients
|
41
|
+
- api-clients/scripts/sonarqube.rb
|
42
|
+
|
43
|
+
sq-project:
|
44
|
+
extends: .sq-project-decoration
|
45
|
+
stage: code_tools
|
46
|
+
variables:
|
47
|
+
GITLAB_URL: $CI_PROJECT_URL
|
48
|
+
SQ_PROJECT: $SONAR_PROJECT_KEY
|
49
|
+
SQ_TOKEN: $SQ_TOKEN
|
50
|
+
SQ_USER: $SQ_USER
|
data/lib/api/clients/cortex.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
# Public:
|
3
|
+
# Public: Will check whether gitlab path is added as info.x-cortex-tag to Cortex service
|
4
4
|
|
5
5
|
require 'httparty'
|
6
6
|
require 'json'
|
@@ -32,10 +32,10 @@ module Api
|
|
32
32
|
@service_info ||= get_call(get_service_url)
|
33
33
|
end
|
34
34
|
|
35
|
-
# Public:
|
36
|
-
def
|
37
|
-
|
38
|
-
post_call post_service_url, post_body
|
35
|
+
# Public: check gitlab info in cortex service
|
36
|
+
def check_service
|
37
|
+
service_has_gitlab_info?
|
38
|
+
# post_call post_service_url, post_body
|
39
39
|
end
|
40
40
|
|
41
41
|
private
|
data/lib/api/clients/version.rb
CHANGED
data/scripts/cortex.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# Public: Add gitlab path as info.x-cortex-tag to Cortex service
|
4
|
+
|
5
|
+
require 'api/clients/cortex'
|
6
|
+
cortex = Api::Clients::Cortex.new(gitlab_url: ENV["GITLAB_URL"])
|
7
|
+
puts cortex.service_info
|
8
|
+
if cortex.check_service
|
9
|
+
puts "Cortex service has correct gitlab path"
|
10
|
+
else
|
11
|
+
puts "Cortex service has incorrect gitlab path! Please update your cortex.yaml with the gitlab path"
|
12
|
+
exit 1
|
13
|
+
end
|
data/scripts/mend.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# Public: Add gitlab url as tags to Mend project
|
4
|
+
|
5
|
+
require 'api/clients/mend'
|
6
|
+
mend = Api::Clients::Mend.new(product: ENV["MEND_PRODUCT"],
|
7
|
+
project: ENV["MEND_PROJECT"],
|
8
|
+
gitlab_url: ENV["GITLAB_URL"])
|
9
|
+
mend.tag_project!
|
10
|
+
puts "Project: #{mend.project}"
|
11
|
+
puts "Project tags:"
|
12
|
+
puts mend.project_tags
|
@@ -0,0 +1,11 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# Public: Add gitlab url as link to Sonarqube project
|
4
|
+
|
5
|
+
require 'api/clients/sonarqube'
|
6
|
+
sq = Api::Clients::Sonarqube.new(project: ENV["SQ_PROJECT"],
|
7
|
+
gitlab_url: ENV["GITLAB_URL"])
|
8
|
+
sq.link_project!
|
9
|
+
puts "Project: #{sq.project}"
|
10
|
+
puts "Project links:"
|
11
|
+
puts sq.project_links
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: api-clients
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joaquin Rivera Padron
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-08-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -39,11 +39,15 @@ files:
|
|
39
39
|
- README.md
|
40
40
|
- Rakefile
|
41
41
|
- api-clients.gemspec
|
42
|
+
- gitlab-ci-includes.yml
|
42
43
|
- lib/api/clients.rb
|
43
44
|
- lib/api/clients/cortex.rb
|
44
45
|
- lib/api/clients/mend.rb
|
45
46
|
- lib/api/clients/sonarqube.rb
|
46
47
|
- lib/api/clients/version.rb
|
48
|
+
- scripts/cortex.rb
|
49
|
+
- scripts/mend.rb
|
50
|
+
- scripts/sonarqube.rb
|
47
51
|
- sig/api/clients.rbs
|
48
52
|
homepage:
|
49
53
|
licenses:
|