##// END OF EJS Templates
Final version plus some cleaning...
jeandet -
r2:fbb8b7d9e310 master
parent child
Show More
1 NO CONTENT: new file 100644, binary diff hidden
NO CONTENT: new file 100644, binary diff hidden
@@ -1,491 +1,517
1 {
1 {
2 "cells": [
2 "cells": [
3 {
3 {
4 "cell_type": "code",
4 "cell_type": "code",
5 "execution_count": 21,
5 "execution_count": 1,
6 "metadata": {
6 "metadata": {
7 "ExecuteTime": {
7 "ExecuteTime": {
8 "end_time": "2018-01-09T08:09:49.457463Z",
8 "end_time": "2018-01-10T22:15:31.021568Z",
9 "start_time": "2018-01-09T08:09:49.451783Z"
9 "start_time": "2018-01-10T22:15:31.010972Z"
10 },
10 },
11 "init_cell": true
11 "init_cell": true
12 },
12 },
13 "outputs": [],
13 "outputs": [],
14 "source": [
14 "source": [
15 "from traitlets.config.manager import BaseJSONConfigManager\n",
15 "from traitlets.config.manager import BaseJSONConfigManager\n",
16 "from traitlets.config.manager import BaseJSONConfigManager\n",
16 "from os.path import expanduser\n",
17 "path = \"/home/jeandet/.jupyter/nbconfig\"\n",
17 "home = expanduser(\"~\")\n",
18 "path = home+\"/.jupyter/nbconfig\"\n",
18 "cm = BaseJSONConfigManager(config_dir=path)\n",
19 "cm = BaseJSONConfigManager(config_dir=path)\n",
19 "cm.update(\"livereveal\", {\n",
20 "cm.update(\"livereveal\", {\n",
20 " \"theme\": \"solarized\",\n",
21 " \"theme\": \"solarized\",\n",
21 " \"transition\": \"zoom\",\n",
22 " \"transition\": \"zoom\",\n",
22 " \"start_slideshow_at\": \"selected\"\n",
23 " \"start_slideshow_at\": \"selected\"\n",
23 "});\n"
24 "});\n"
24 ]
25 ]
25 },
26 },
26 {
27 {
27 "cell_type": "markdown",
28 "cell_type": "markdown",
28 "metadata": {
29 "metadata": {
29 "slideshow": {
30 "slideshow": {
30 "slide_type": "slide"
31 "slide_type": "slide"
31 }
32 }
32 },
33 },
33 "source": [
34 "source": [
34 "# TeamCity\n",
35 "# TeamCity\n",
35 "\n",
36 "\n",
37 "<div>\n",
36 "<center>\n",
38 "<center>\n",
37 "<img src=\"resources/teamcity-logo.svg\" width=\"300px\" align=\"center\">\n",
39 "<img src=\"resources/teamcity-logo.png\" width=\"300px\" align=\"center\">\n",
38 "</center>"
40 "</center>\n",
41 "</div>\n",
42 "\n",
43 "\n",
44 "\n",
45 "<p align=\"center\">\n",
46 " <b>Alexis Jeandet <alexis.jeandet@lpp.polytechnique.fr>:</b><br>\n",
47 " <a href=\"https://github.com/jeandet\">Github:jeandet</a> |\n",
48 " <a href=\"https://gitter.im/jeandet\">Gitter:jeandet</a> |\n",
49 " <a href=\"https://freenode.net/\">IRC@freenode:jeandet</a>\n",
50 " <br>\n",
51 "</p>\n",
52 "\n",
53 "\n",
54 "\n"
39 ]
55 ]
40 },
56 },
41 {
57 {
42 "cell_type": "markdown",
58 "cell_type": "markdown",
43 "metadata": {
59 "metadata": {
44 "slideshow": {
60 "slideshow": {
45 "slide_type": "slide"
61 "slide_type": "slide"
46 }
62 }
47 },
63 },
48 "source": [
64 "source": [
49 "# TC Overview\n",
65 "# TC quick overview\n",
50 "\n",
66 "\n",
51 "* A powerful distributed Continuous Integration tool\n",
67 "* A powerful distributed Continuous Integration tool\n",
52 "* Rich plugin ecosystem\n",
68 "* Rich plugin ecosystem\n",
53 "* Really customizable system\n",
69 "* Really customizable system\n",
54 "* Not so complex...\n",
70 "* Not so complex...\n",
55 "* Updates so easy (Compared to redmine...)\n",
71 "* Updates so easy (Compared to redmine...)\n",
56 "* Mostly written in Java\n",
72 "* Mostly written in Java\n",
57 "* Closed source :(\n",
73 "* Closed source :(\n",
58 "* Limited to 100 build cfg & 3 agents "
74 "* Limited to 100 build cfg & 3 agents "
59 ]
75 ]
60 },
76 },
61 {
77 {
62 "cell_type": "markdown",
78 "cell_type": "markdown",
63 "metadata": {
79 "metadata": {
64 "slideshow": {
80 "slideshow": {
65 "slide_type": "slide"
81 "slide_type": "slide"
66 }
82 }
67 },
83 },
68 "source": [
84 "source": [
69 "# TC Plugins (335 on [JetBrains website](https://plugins.jetbrains.com/teamcity) )\n",
85 "# TC Plugins (335 on [JetBrains website](https://plugins.jetbrains.com/teamcity) )\n",
70 "\n",
86 "\n",
71 "* Web Hooks plugin \n",
87 "* Web Hooks plugin \n",
72 "* AWS S3 Artifact Storage \n",
88 "* AWS S3 Artifact Storage \n",
73 "* Google Cloud Agents \n",
89 "* Google Cloud Agents \n",
74 "* Docker Cloud \n",
90 "* Docker Cloud \n",
75 "* Debian Package Server \n",
91 "* Debian Package Server \n",
76 "* Slack Build Notifier\n",
92 "* Slack Build Notifier\n",
77 "\n",
93 "\n",
78 "\n",
94 "\n",
79 "** Installation as simple as uploading a zip file! **\n",
95 "** Installation as simple as uploading a zip file! **\n",
80 "\n"
96 "\n"
81 ]
97 ]
82 },
98 },
83 {
99 {
84 "cell_type": "markdown",
100 "cell_type": "markdown",
85 "metadata": {
101 "metadata": {
86 "ExecuteTime": {
102 "ExecuteTime": {
87 "end_time": "2018-01-02T20:14:04.757140Z",
103 "end_time": "2018-01-02T20:14:04.757140Z",
88 "start_time": "2018-01-02T20:14:04.749828Z"
104 "start_time": "2018-01-02T20:14:04.749828Z"
89 },
105 },
90 "slideshow": {
106 "slideshow": {
91 "slide_type": "slide"
107 "slide_type": "slide"
92 }
108 }
93 },
109 },
94 "source": [
110 "source": [
95 "# Vocabulary\n",
111 "# Vocabulary\n",
96 "\n",
112 "\n",
97 "* **Agent**: <span style=\"color:blue\">where stuff is done</span>"
113 "* **Agent**: <span style=\"color:blue\">where stuff is done</span>"
98 ]
114 ]
99 },
115 },
100 {
116 {
101 "cell_type": "markdown",
117 "cell_type": "markdown",
102 "metadata": {
118 "metadata": {
103 "slideshow": {
119 "slideshow": {
104 "slide_type": "fragment"
120 "slide_type": "fragment"
105 }
121 }
106 },
122 },
107 "source": [
123 "source": [
108 "* **Build step**: <span style=\"color:blue\">the smallest build task subdivision</span> ( [example](https://hephaistos.lpp.polytechnique.fr/teamcity/admin/editBuildRunners.html?id=buildType:SciQLop_UnitTests) ) "
124 "* **Build step**: <span style=\"color:blue\">the smallest build task subdivision</span> ( [example](https://hephaistos.lpp.polytechnique.fr/teamcity/admin/editBuildRunners.html?id=buildType:SciQLop_UnitTests) ) "
109 ]
125 ]
110 },
126 },
111 {
127 {
112 "cell_type": "markdown",
128 "cell_type": "markdown",
113 "metadata": {
129 "metadata": {
114 "slideshow": {
130 "slideshow": {
115 "slide_type": "fragment"
131 "slide_type": "fragment"
116 }
132 }
117 },
133 },
118 "source": [
134 "source": [
119 "* **Build config**: <span style=\"color:blue\">a collection of build steps </span> ( [example](https://hephaistos.lpp.polytechnique.fr/teamcity/admin/editBuild.html?id=buildType:SciQLop_UnitTests) )"
135 "* **Build config**: <span style=\"color:blue\">a collection of build steps </span> ( [example](https://hephaistos.lpp.polytechnique.fr/teamcity/admin/editBuild.html?id=buildType:SciQLop_UnitTests) )"
120 ]
136 ]
121 },
137 },
122 {
138 {
123 "cell_type": "markdown",
139 "cell_type": "markdown",
124 "metadata": {
140 "metadata": {
125 "slideshow": {
141 "slideshow": {
126 "slide_type": "fragment"
142 "slide_type": "fragment"
127 }
143 }
128 },
144 },
129 "source": [
145 "source": [
130 "* **VCS root**: <span style=\"color:blue\">a mostly a vcs URL + some options </span> ( [example](https://hephaistos.lpp.polytechnique.fr/teamcity/admin/editVcsRoot.html?action=editVcsRoot&vcsRootId=SciQLop_HttpsHephaistosLppPolytechniqueFrRhodecodeHgRepositoriesLppSciQLOPReposS&editingScope=buildType%3ASciQLop_UnitTests&cameFromUrl=%2Fteamcity%2Fadmin%2FeditBuildTypeVcsRoots.html%3Finit%3D1%26id%3DbuildType%253ASciQLop_UnitTests&cameFromTitle=Edit%20Build%20Configuration) )"
146 "* **VCS root**: <span style=\"color:blue\">a mostly a VCS URL + some options </span> ( [example](https://hephaistos.lpp.polytechnique.fr/teamcity/admin/editVcsRoot.html?action=editVcsRoot&vcsRootId=SciQLop_HttpsHephaistosLppPolytechniqueFrRhodecodeHgRepositoriesLppSciQLOPReposS&editingScope=buildType%3ASciQLop_UnitTests&cameFromUrl=%2Fteamcity%2Fadmin%2FeditBuildTypeVcsRoots.html%3Finit%3D1%26id%3DbuildType%253ASciQLop_UnitTests&cameFromTitle=Edit%20Build%20Configuration) )"
131 ]
147 ]
132 },
148 },
133 {
149 {
134 "cell_type": "markdown",
150 "cell_type": "markdown",
135 "metadata": {
151 "metadata": {
136 "slideshow": {
152 "slideshow": {
137 "slide_type": "fragment"
153 "slide_type": "fragment"
138 }
154 }
139 },
155 },
140 "source": [
156 "source": [
141 "* **Project**: <span style=\"color:blue\">a collection of build configs + VCS + settings </span> ( [example](https://hephaistos.lpp.polytechnique.fr/teamcity/admin/editProject.html?projectId=SciQLop) )"
157 "* **Project**: <span style=\"color:blue\">a collection of build configs + VCS + settings </span> ( [example](https://hephaistos.lpp.polytechnique.fr/teamcity/admin/editProject.html?projectId=SciQLop) )"
142 ]
158 ]
143 },
159 },
144 {
160 {
145 "cell_type": "markdown",
161 "cell_type": "markdown",
146 "metadata": {
162 "metadata": {
147 "slideshow": {
163 "slideshow": {
148 "slide_type": "subslide"
164 "slide_type": "subslide"
149 }
165 }
150 },
166 },
151 "source": [
167 "source": [
152 "# Vocabulary\n",
168 "# Vocabulary\n",
153 "\n",
169 "\n",
154 "* **Build artifact**: <span style=\"color:blue\">a file or a folder produced during the build </span> ( [example](https://hephaistos.lpp.polytechnique.fr/teamcity/overview.html) )"
170 "* **Build artifact**: <span style=\"color:blue\">a file or a folder produced during the build </span> ( [example](https://hephaistos.lpp.polytechnique.fr/teamcity/overview.html) )"
155 ]
171 ]
156 },
172 },
157 {
173 {
158 "cell_type": "markdown",
174 "cell_type": "markdown",
159 "metadata": {
175 "metadata": {
160 "slideshow": {
176 "slideshow": {
161 "slide_type": "fragment"
177 "slide_type": "fragment"
162 }
178 }
163 },
179 },
164 "source": [
180 "source": [
165 "\n",
181 "\n",
166 "\n",
182 "\n",
167 "\n",
183 "\n",
168 "\n",
184 "\n",
169 "\n",
185 "\n",
170 "* **Meta-Runners**: <span style=\"color:blue\">a build config that has been extracted to make a template </span> ( [example](https://hephaistos.lpp.polytechnique.fr/teamcity/admin/editProject.html?projectId=_Root&tab=metaRunner) )"
186 "* **Meta-Runners**: <span style=\"color:blue\">a build config that has been extracted to make a template </span> ( [example](https://hephaistos.lpp.polytechnique.fr/teamcity/admin/editProject.html?projectId=_Root&tab=metaRunner) )"
171 ]
187 ]
172 },
188 },
173 {
189 {
174 "cell_type": "markdown",
190 "cell_type": "markdown",
175 "metadata": {
191 "metadata": {
176 "slideshow": {
192 "slideshow": {
177 "slide_type": "slide"
193 "slide_type": "slide"
178 }
194 }
179 },
195 },
180 "source": [
196 "source": [
181 "# LPP goals (What we want)\n",
197 "# LPP goals (What we want)\n",
182 "\n",
198 "\n",
183 "\n",
199 "\n",
184 "* Being able to build on different OS"
200 "* Being able to build on different OS"
185 ]
201 ]
186 },
202 },
187 {
203 {
188 "cell_type": "markdown",
204 "cell_type": "markdown",
189 "metadata": {
205 "metadata": {
190 "ExecuteTime": {
206 "ExecuteTime": {
191 "end_time": "2018-01-08T19:36:05.070215Z",
207 "end_time": "2018-01-08T19:36:05.070215Z",
192 "start_time": "2018-01-08T19:36:05.066706Z"
208 "start_time": "2018-01-08T19:36:05.066706Z"
193 },
209 },
194 "slideshow": {
210 "slideshow": {
195 "slide_type": "fragment"
211 "slide_type": "fragment"
196 }
212 }
197 },
213 },
198 "source": [
214 "source": [
199 "* Build inside a clean environment"
215 "* Build inside a clean environment"
200 ]
216 ]
201 },
217 },
202 {
218 {
203 "cell_type": "markdown",
219 "cell_type": "markdown",
204 "metadata": {
220 "metadata": {
205 "ExecuteTime": {
221 "ExecuteTime": {
206 "end_time": "2018-01-08T19:36:05.399625Z",
222 "end_time": "2018-01-08T19:36:05.399625Z",
207 "start_time": "2018-01-08T19:36:05.394453Z"
223 "start_time": "2018-01-08T19:36:05.394453Z"
208 },
224 },
209 "slideshow": {
225 "slideshow": {
210 "slide_type": "fragment"
226 "slide_type": "fragment"
211 }
227 }
212 },
228 },
213 "source": [
229 "source": [
214 "* Produce compatibility matrices"
230 "* Produce compatibility matrices"
215 ]
231 ]
216 },
232 },
217 {
233 {
218 "cell_type": "markdown",
234 "cell_type": "markdown",
219 "metadata": {
235 "metadata": {
220 "slideshow": {
236 "slideshow": {
221 "slide_type": "fragment"
237 "slide_type": "fragment"
222 }
238 }
223 },
239 },
224 "source": [
240 "source": [
225 "* Being faster than Travis"
241 "* Being faster than Travis"
226 ]
242 ]
227 },
243 },
228 {
244 {
229 "cell_type": "markdown",
245 "cell_type": "markdown",
230 "metadata": {
246 "metadata": {
231 "slideshow": {
247 "slideshow": {
232 "slide_type": "subslide"
248 "slide_type": "subslide"
233 }
249 }
234 },
250 },
235 "source": [
251 "source": [
236 "# LPP goals (What we want)"
252 "# LPP goals (What we want)"
237 ]
253 ]
238 },
254 },
239 {
255 {
240 "cell_type": "markdown",
256 "cell_type": "markdown",
241 "metadata": {
257 "metadata": {
242 "slideshow": {
258 "slideshow": {
243 "slide_type": "fragment"
259 "slide_type": "fragment"
244 }
260 }
245 },
261 },
246 "source": [
262 "source": [
247 "* Customize workflow"
263 "* Customize workflow"
248 ]
264 ]
249 },
265 },
250 {
266 {
251 "cell_type": "markdown",
267 "cell_type": "markdown",
252 "metadata": {
268 "metadata": {
253 "slideshow": {
269 "slideshow": {
254 "slide_type": "fragment"
270 "slide_type": "fragment"
255 }
271 }
256 },
272 },
257 "source": [
273 "source": [
258 "* Give users maximum freedom"
274 "* Give users maximum freedom"
259 ]
275 ]
260 },
276 },
261 {
277 {
262 "cell_type": "markdown",
278 "cell_type": "markdown",
263 "metadata": {
279 "metadata": {
264 "slideshow": {
280 "slideshow": {
265 "slide_type": "slide"
281 "slide_type": "slide"
266 }
282 }
267 },
283 },
268 "source": [
284 "source": [
269 "# LPP Setup\n",
285 "# LPP Setup\n",
270 "<center>\n",
286 "<center>\n",
271 "<img src=\"resources/Setup LPP.png\" width=\"60%\" align=\"center\">\n",
287 "<img src=\"resources/Setup LPP.png\" width=\"60%\" align=\"center\">\n",
272 "</center>"
288 "</center>"
273 ]
289 ]
274 },
290 },
275 {
291 {
276 "cell_type": "markdown",
292 "cell_type": "markdown",
277 "metadata": {
293 "metadata": {
278 "slideshow": {
294 "slideshow": {
279 "slide_type": "slide"
295 "slide_type": "slide"
280 }
296 }
281 },
297 },
282 "source": [
298 "source": [
283 "# Available build agents\n",
299 "# Available build agents\n",
284 "\n",
300 "\n",
285 "* Based on [Docker cloud plugin](https://plugins.jetbrains.com/plugin/9306-docker-cloud)\n",
301 "* Based on [Docker cloud plugin](https://plugins.jetbrains.com/plugin/9306-docker-cloud)\n",
286 "* Virtually anything that runs either inside **Docker** or **VirtualBox**(Vagrant)\n",
302 "* Virtually anything that runs either inside **Docker** or **VirtualBox**(Vagrant)\n",
287 "* Spawn on demand\n",
303 "* Spawn on demand\n",
288 "* For now **Windows**, **Linux**(Fedora, Ubuntu), **FreeBSD** and **Mac OSX** 10.12.2(Siera)\n"
304 "* For now **Windows**, **Linux**(Fedora, Ubuntu), **FreeBSD** and **Mac OSX** 10.12.2(Siera)\n"
289 ]
305 ]
290 },
306 },
291 {
307 {
292 "cell_type": "markdown",
308 "cell_type": "markdown",
293 "metadata": {
309 "metadata": {
294 "slideshow": {
310 "slideshow": {
295 "slide_type": "slide"
311 "slide_type": "slide"
296 }
312 }
297 },
313 },
298 "source": [
314 "source": [
299 "# FreeBSD & Mac \n",
315 "# FreeBSD & Mac \n",
300 "\n",
316 "\n",
301 "[meson@lpp](https://hephaistos.lpp.polytechnique.fr/teamcity/viewLog.html?buildId=6388&tab=buildLog&buildTypeId=mesonbuild_Build_2&logTab=tree&filter=all) [meson@travis](https://travis-ci.org/mesonbuild/meson/builds/325859215?utm_source=github_status&utm_medium=notification)\n",
317 "[meson@lpp](https://hephaistos.lpp.polytechnique.fr/teamcity/viewLog.html?buildId=6388&tab=buildLog&buildTypeId=mesonbuild_Build_2&logTab=tree&filter=all) [meson@travis](https://travis-ci.org/mesonbuild/meson/builds/325859215?utm_source=github_status&utm_medium=notification)\n",
302 "\n",
318 "\n",
303 "[OSX agent](https://github.com/jeandet/teamcity-docker-agent-osx) [FreeBSD agent](https://github.com/jeandet/teamcity-docker-agent-freebsd)\n",
319 "[OSX agent](https://github.com/jeandet/teamcity-docker-agent-osx) [FreeBSD agent](https://github.com/jeandet/teamcity-docker-agent-freebsd)\n",
304 "\n",
320 "\n",
305 "* Vagrant inside Docker\n",
321 "* Vagrant inside Docker\n",
306 "* Few txt files produces several GB machines\n",
322 "* Few txt files produces several GB machines\n",
307 "* Easy to deploy\n",
323 "* Easy to deploy\n",
308 "* Hard to debug\n"
324 "* Hard to debug\n"
309 ]
325 ]
310 },
326 },
311 {
327 {
312 "cell_type": "markdown",
328 "cell_type": "markdown",
313 "metadata": {
329 "metadata": {
314 "slideshow": {
330 "slideshow": {
315 "slide_type": "slide"
331 "slide_type": "slide"
316 }
332 }
317 },
333 },
318 "source": [
334 "source": [
319 "# I want to choose where I get built!\n",
335 "# I want to choose where I get built!\n",
320 "\n",
336 "\n",
321 "**Team city introduce the notion of build requirements.**\n",
337 "**Team city introduce the notion of build requirements.**\n",
322 "\n",
338 "\n",
323 "- Agents expose [parameters](https://hephaistos.lpp.polytechnique.fr/teamcity/agentDetails.html?agentTypeId=72&tab=agentParameters)(<=> properties). ( [sources](https://github.com/jeandet/teamcity-docker-complete-agent/blob/master/Dockerfile#L36) )\n",
339 "- Agents expose [parameters](https://hephaistos.lpp.polytechnique.fr/teamcity/agentDetails.html?agentTypeId=72&tab=agentParameters)(<=> properties). ( [sources](https://github.com/jeandet/teamcity-docker-complete-agent/blob/master/Dockerfile#L36) )\n",
324 "\n",
340 "\n",
325 "- For each build config, ones can declare some [requirements](https://hephaistos.lpp.polytechnique.fr/teamcity/admin/editRequirements.html?id=buildType:Miniphare_Build) that the agent has to match to get spawned."
341 "- For each build config, ones can declare some [requirements](https://hephaistos.lpp.polytechnique.fr/teamcity/admin/editRequirements.html?id=buildType:Miniphare_Build) that the agent has to match to get spawned."
326 ]
342 ]
327 },
343 },
328 {
344 {
329 "cell_type": "markdown",
345 "cell_type": "markdown",
330 "metadata": {
346 "metadata": {
331 "slideshow": {
347 "slideshow": {
332 "slide_type": "slide"
348 "slide_type": "slide"
333 }
349 }
334 },
350 },
335 "source": [
351 "source": [
336 "# What about reports?\n",
352 "# What about reports?\n",
337 "\n",
353 "\n",
338 "* As build artifact ( [LFR](https://hephaistos.lpp.polytechnique.fr/teamcity/viewLog.html?buildId=292&tab=artifacts&buildTypeId=LfrFlightSoftware_Build), [Hephaistos Web](https://hephaistos.lpp.polytechnique.fr/teamcity/project.html?projectId=HephaistosWeb&tab=projectOverview), [LibCDF](https://hephaistos.lpp.polytechnique.fr/teamcity/project.html?projectId=LibCDF&tab=projectOverview) )\n",
354 "* As build artifact ( [LFR](https://hephaistos.lpp.polytechnique.fr/teamcity/viewLog.html?buildId=292&tab=artifacts&buildTypeId=LfrFlightSoftware_Build), [Hephaistos Web](https://hephaistos.lpp.polytechnique.fr/teamcity/project.html?projectId=HephaistosWeb&tab=projectOverview), [LibCDF](https://hephaistos.lpp.polytechnique.fr/teamcity/project.html?projectId=LibCDF&tab=projectOverview) )\n",
339 "* As Mail\n",
355 "* As Mail\n",
340 "* As slack message\n",
356 "* As slack message\n",
341 "* As stdout values ( [GStreamer Ninja](https://hephaistos.lpp.polytechnique.fr/teamcity/admin/editRunType.html?id=buildType:mesonbuild_GStreamerNightly&runnerId=RUNNER_69&cameFromUrl=%2Fteamcity%2Fadmin%2FeditBuildRunners.html%3Fid%3DbuildType%253Amesonbuild_GStreamerNightly%26init%3D1&cameFromTitle=) )\n",
357 "* As stdout values ( [GStreamer Ninja](https://hephaistos.lpp.polytechnique.fr/teamcity/admin/editRunType.html?id=buildType:mesonbuild_GStreamerNightly&runnerId=RUNNER_69&cameFromUrl=%2Fteamcity%2Fadmin%2FeditBuildRunners.html%3Fid%3DbuildType%253Amesonbuild_GStreamerNightly%26init%3D1&cameFromTitle=) )\n",
342 "* As XML File ( [LibCDF GTest](https://hephaistos.lpp.polytechnique.fr/teamcity/admin/editBuildFeatures.html?id=buildType:LibCDF_Build) )"
358 "* As XML File ( [LibCDF GTest](https://hephaistos.lpp.polytechnique.fr/teamcity/admin/editBuildFeatures.html?id=buildType:LibCDF_Build) )"
343 ]
359 ]
344 },
360 },
345 {
361 {
346 "cell_type": "markdown",
362 "cell_type": "markdown",
347 "metadata": {
363 "metadata": {
348 "slideshow": {
364 "slideshow": {
349 "slide_type": "slide"
365 "slide_type": "slide"
350 }
366 }
351 },
367 },
352 "source": [
368 "source": [
353 "# Interactions with other tools\n",
369 "# Interactions with other tools\n",
354 "\n",
370 "\n",
355 "* SonarQube ([example](https://sonarcloud.io/dashboard?id=sciqlop), [config](https://hephaistos.lpp.polytechnique.fr/teamcity/admin/editRunType.html?id=buildType:SciQLop_Build&runnerId=RUNNER_22&cameFromUrl=%2Fteamcity%2Fadmin%2FeditBuildRunners.html%3Fid%3DbuildType%253ASciQLop_Build%26init%3D1&cameFromTitle=))\n",
371 "* SonarQube ([example](https://sonarcloud.io/dashboard?id=sciqlop), [config](https://hephaistos.lpp.polytechnique.fr/teamcity/admin/editRunType.html?id=buildType:SciQLop_Build&runnerId=RUNNER_22&cameFromUrl=%2Fteamcity%2Fadmin%2FeditBuildRunners.html%3Fid%3DbuildType%253ASciQLop_Build%26init%3D1&cameFromTitle=))\n",
356 "* Slack ([example](https://sciqlop.slack.com/messages/C57HU1KBJ/), [config](https://hephaistos.lpp.polytechnique.fr/teamcity/slacknotifications/index.html?projectId=SciQLop))\n",
372 "* Slack ([example](https://sciqlop.slack.com/messages/C57HU1KBJ/), [config](https://hephaistos.lpp.polytechnique.fr/teamcity/slacknotifications/index.html?projectId=SciQLop))\n",
357 "* Github, Bitbucket, VS Team Services...\n",
373 "* Github, Bitbucket, VS Team Services...\n",
358 "* Rhodecode ([Miniphare PR](https://hephaistos.lpp.polytechnique.fr/rhodecode/GIT_REPOSITORIES/LPP/phare/miniphare/miniphare/pull-request/410), [config](https://hephaistos.lpp.polytechnique.fr/teamcity/admin/editRunType.html?id=buildType:Miniphare_Build&runnerId=RUNNER_82&cameFromUrl=%2Fteamcity%2Fadmin%2FeditBuildRunners.html%3Fid%3DbuildType%253AMiniphare_Build%26init%3D1&cameFromTitle=))\n",
374 "* Rhodecode ([Miniphare PR](https://hephaistos.lpp.polytechnique.fr/rhodecode/GIT_REPOSITORIES/LPP/phare/miniphare/miniphare/pull-request/410), [config](https://hephaistos.lpp.polytechnique.fr/teamcity/admin/editRunType.html?id=buildType:Miniphare_Build&runnerId=RUNNER_82&cameFromUrl=%2Fteamcity%2Fadmin%2FeditBuildRunners.html%3Fid%3DbuildType%253AMiniphare_Build%26init%3D1&cameFromTitle=))\n",
359 "* [VS IDE plugin](https://confluence.jetbrains.com/display/TCD10/Visual+Studio+Addin), [Eclipse plugin](https://confluence.jetbrains.com/display/TCD10/Eclipse+Plugin), [IntelliJ-based IDEs](https://blog.jetbrains.com/teamcity/2017/10/teamcity-integration-with-intellij-based-ides/)"
375 "* [VS IDE plugin](https://confluence.jetbrains.com/display/TCD10/Visual+Studio+Addin), [Eclipse plugin](https://confluence.jetbrains.com/display/TCD10/Eclipse+Plugin), [IntelliJ-based IDEs](https://blog.jetbrains.com/teamcity/2017/10/teamcity-integration-with-intellij-based-ides/)"
360 ]
376 ]
361 },
377 },
362 {
378 {
363 "cell_type": "markdown",
379 "cell_type": "markdown",
364 "metadata": {
380 "metadata": {
365 "slideshow": {
381 "slideshow": {
366 "slide_type": "slide"
382 "slide_type": "slide"
367 }
383 }
368 },
384 },
369 "source": [
385 "source": [
370 "# API?\n",
386 "# API?\n",
371 "\n",
387 "\n",
372 "* Quite easy to [understand](https://confluence.jetbrains.com/display/TCD10/REST+API) ( [buildTypes](https://hephaistos.lpp.polytechnique.fr/teamcity/app/rest/buildTypes/), [projects](https://hephaistos.lpp.polytechnique.fr/teamcity/app/rest/projects/) )\n",
388 "* Quite easy to [understand](https://confluence.jetbrains.com/display/TCD10/REST+API) ( [buildTypes](https://hephaistos.lpp.polytechnique.fr/teamcity/app/rest/buildTypes/), [projects](https://hephaistos.lpp.polytechnique.fr/teamcity/app/rest/projects/) )\n",
373 "* Almost everything can be done through API"
389 "* Almost everything can be done through API"
374 ]
390 ]
375 },
391 },
376 {
392 {
377 "cell_type": "code",
393 "cell_type": "code",
378 "execution_count": 31,
394 "execution_count": 38,
379 "metadata": {
395 "metadata": {
380 "ExecuteTime": {
396 "ExecuteTime": {
381 "end_time": "2018-01-09T08:37:54.802150Z",
397 "end_time": "2018-01-10T22:12:48.694242Z",
382 "start_time": "2018-01-09T08:37:54.793474Z"
398 "start_time": "2018-01-10T22:12:48.466252Z"
383 },
399 },
384 "slideshow": {
400 "slideshow": {
385 "slide_type": "slide"
401 "slide_type": "slide"
386 }
402 }
387 },
403 },
388 "outputs": [],
404 "outputs": [
405 {
406 "name": "stdout",
407 "output_type": "stream",
408 "text": [
409 "{\n",
410 " \"id\": \"_Root\",\n",
411 " \"name\": \"<Root project>\",\n",
412 " \"description\": \"Contains all other projects\",\n",
413 " \"href\": \"/app/rest/projects/id:_Root\",\n",
414 " \"webUrl\": \"https://hephaistos.lpp.polytechnique.fr/teamcity/project.html?projectId=_Root\"\n",
415 "}\n"
416 ]
417 }
418 ],
389 "source": [
419 "source": [
390 "import teamcity\n"
420 "import teamcity\n",
421 "import json\n",
422 "\n",
423 "print(json.dumps(teamcity.tc.projects()[0].__dict__, indent=1))"
391 ]
424 ]
392 },
425 },
393 {
426 {
394 "cell_type": "markdown",
427 "cell_type": "markdown",
395 "metadata": {
428 "metadata": {
396 "slideshow": {
429 "slideshow": {
397 "slide_type": "slide"
430 "slide_type": "slide"
398 }
431 }
399 },
432 },
400 "source": [
433 "source": [
401 "# What Next?\n",
434 "# What Next?\n",
402 "\n",
435 "\n",
403 "* Improve Rhodecode integration\n",
436 "* Improve Rhodecode integration\n",
404 "* Boost agents startup time\n",
437 "* Boost agents startup time\n",
405 "* Switch to Docker swarm\n",
438 "* Switch to Docker swarm\n",
406 "* More Meta-Runners"
439 "* More Meta-Runners"
407 ]
440 ]
408 },
441 },
409 {
442 {
410 "cell_type": "markdown",
443 "cell_type": "markdown",
411 "metadata": {
444 "metadata": {
412 "slideshow": {
445 "slideshow": {
413 "slide_type": "slide"
446 "slide_type": "slide"
414 }
447 }
415 },
448 },
416 "source": [
449 "source": [
417 "# Questions?\n"
450 "# Questions?\n"
418 ]
451 ]
419 },
420 {
421 "cell_type": "code",
422 "execution_count": null,
423 "metadata": {},
424 "outputs": [],
425 "source": []
426 }
452 }
427 ],
453 ],
428 "metadata": {
454 "metadata": {
429 "celltoolbar": "Slideshow",
455 "celltoolbar": "Slideshow",
430 "kernelspec": {
456 "kernelspec": {
431 "display_name": "Python 3",
457 "display_name": "Python 3",
432 "language": "python",
458 "language": "python",
433 "name": "python3"
459 "name": "python3"
434 },
460 },
435 "language_info": {
461 "language_info": {
436 "codemirror_mode": {
462 "codemirror_mode": {
437 "name": "ipython",
463 "name": "ipython",
438 "version": 3
464 "version": 3
439 },
465 },
440 "file_extension": ".py",
466 "file_extension": ".py",
441 "mimetype": "text/x-python",
467 "mimetype": "text/x-python",
442 "name": "python",
468 "name": "python",
443 "nbconvert_exporter": "python",
469 "nbconvert_exporter": "python",
444 "pygments_lexer": "ipython3",
470 "pygments_lexer": "ipython3",
445 "version": "3.6.3"
471 "version": "3.6.3"
446 },
472 },
447 "toc": {
473 "toc": {
448 "nav_menu": {},
474 "nav_menu": {},
449 "number_sections": true,
475 "number_sections": true,
450 "sideBar": true,
476 "sideBar": true,
451 "skip_h1_title": false,
477 "skip_h1_title": false,
452 "title_cell": "Table of Contents",
478 "title_cell": "Table of Contents",
453 "title_sidebar": "Contents",
479 "title_sidebar": "Contents",
454 "toc_cell": false,
480 "toc_cell": false,
455 "toc_position": {},
481 "toc_position": {},
456 "toc_section_display": true,
482 "toc_section_display": true,
457 "toc_window_display": false
483 "toc_window_display": false
458 },
484 },
459 "varInspector": {
485 "varInspector": {
460 "cols": {
486 "cols": {
461 "lenName": 16,
487 "lenName": 16,
462 "lenType": 16,
488 "lenType": 16,
463 "lenVar": 40
489 "lenVar": 40
464 },
490 },
465 "kernels_config": {
491 "kernels_config": {
466 "python": {
492 "python": {
467 "delete_cmd_postfix": "",
493 "delete_cmd_postfix": "",
468 "delete_cmd_prefix": "del ",
494 "delete_cmd_prefix": "del ",
469 "library": "var_list.py",
495 "library": "var_list.py",
470 "varRefreshCmd": "print(var_dic_list())"
496 "varRefreshCmd": "print(var_dic_list())"
471 },
497 },
472 "r": {
498 "r": {
473 "delete_cmd_postfix": ") ",
499 "delete_cmd_postfix": ") ",
474 "delete_cmd_prefix": "rm(",
500 "delete_cmd_prefix": "rm(",
475 "library": "var_list.r",
501 "library": "var_list.r",
476 "varRefreshCmd": "cat(var_dic_list()) "
502 "varRefreshCmd": "cat(var_dic_list()) "
477 }
503 }
478 },
504 },
479 "types_to_exclude": [
505 "types_to_exclude": [
480 "module",
506 "module",
481 "function",
507 "function",
482 "builtin_function_or_method",
508 "builtin_function_or_method",
483 "instance",
509 "instance",
484 "_Feature"
510 "_Feature"
485 ],
511 ],
486 "window_display": false
512 "window_display": false
487 }
513 }
488 },
514 },
489 "nbformat": 4,
515 "nbformat": 4,
490 "nbformat_minor": 2
516 "nbformat_minor": 2
491 }
517 }
1 NO CONTENT: file was removed
NO CONTENT: file was removed
General Comments 0
You need to be logged in to leave comments. Login now