LoOPS_TeamCity.ipynb
359 lines
| 8.4 KiB
| text/plain
|
TextLexer
r0 | { | |||
"cells": [ | ||||
{ | ||||
"cell_type": "code", | ||||
"execution_count": 1, | ||||
"metadata": { | ||||
"ExecuteTime": { | ||||
"end_time": "2018-01-08T23:20:39.306357Z", | ||||
"start_time": "2018-01-08T23:20:39.297432Z" | ||||
}, | ||||
"init_cell": true | ||||
}, | ||||
"outputs": [], | ||||
"source": [ | ||||
"from traitlets.config.manager import BaseJSONConfigManager\n", | ||||
"from traitlets.config.manager import BaseJSONConfigManager\n", | ||||
"path = \"/home/jeandet/.jupyter/nbconfig\"\n", | ||||
"cm = BaseJSONConfigManager(config_dir=path)\n", | ||||
"cm.update(\"livereveal\", {\n", | ||||
" \"theme\": \"solarized\",\n", | ||||
" \"transition\": \"zoom\",\n", | ||||
" \"start_slideshow_at\": \"selected\"\n", | ||||
"});\n" | ||||
] | ||||
}, | ||||
{ | ||||
"cell_type": "markdown", | ||||
"metadata": { | ||||
"slideshow": { | ||||
"slide_type": "slide" | ||||
} | ||||
}, | ||||
"source": [ | ||||
"# TeamCity\n", | ||||
"\n", | ||||
"<center>\n", | ||||
"<img src=\"resources/teamcity-logo.svg\" width=\"300px\" align=\"center\">\n", | ||||
"</center>" | ||||
] | ||||
}, | ||||
{ | ||||
"cell_type": "markdown", | ||||
"metadata": { | ||||
"slideshow": { | ||||
"slide_type": "slide" | ||||
} | ||||
}, | ||||
"source": [ | ||||
"# TC Overview\n", | ||||
"\n", | ||||
"* A powerful distributed Continuous Integration tool\n", | ||||
"* Rich plugin ecosystem\n", | ||||
"* Really customizable system\n", | ||||
"* Not so complex...\n", | ||||
"* Mostly written in Java\n", | ||||
"* Closed source :(" | ||||
] | ||||
}, | ||||
{ | ||||
"cell_type": "markdown", | ||||
"metadata": { | ||||
"slideshow": { | ||||
"slide_type": "slide" | ||||
} | ||||
}, | ||||
"source": [ | ||||
"# TC Plugins (335 on [JetBrains website](https://plugins.jetbrains.com/teamcity) )\n", | ||||
"\n", | ||||
"* Web Hooks plugin \n", | ||||
"* AWS S3 Artifact Storage \n", | ||||
"* Google Cloud Agents \n", | ||||
"* Docker Cloud \n", | ||||
"* Debian Package Server \n", | ||||
"* Slack Build Notifier\n", | ||||
"\n", | ||||
"\n", | ||||
"** Installation as simple as uploading a zip file! **\n", | ||||
"\n" | ||||
] | ||||
}, | ||||
{ | ||||
"cell_type": "markdown", | ||||
"metadata": { | ||||
"ExecuteTime": { | ||||
"end_time": "2018-01-02T20:14:04.757140Z", | ||||
"start_time": "2018-01-02T20:14:04.749828Z" | ||||
}, | ||||
"slideshow": { | ||||
"slide_type": "slide" | ||||
} | ||||
}, | ||||
"source": [ | ||||
"# Vocabulary\n", | ||||
"\n", | ||||
"* **Agent**: <span style=\"color:blue\">where stuff is done</span>" | ||||
] | ||||
}, | ||||
{ | ||||
"cell_type": "markdown", | ||||
"metadata": { | ||||
"slideshow": { | ||||
"slide_type": "fragment" | ||||
} | ||||
}, | ||||
"source": [ | ||||
"* **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) ) " | ||||
] | ||||
}, | ||||
{ | ||||
"cell_type": "markdown", | ||||
"metadata": { | ||||
"slideshow": { | ||||
"slide_type": "fragment" | ||||
} | ||||
}, | ||||
"source": [ | ||||
"* **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) )" | ||||
] | ||||
}, | ||||
{ | ||||
"cell_type": "markdown", | ||||
"metadata": { | ||||
"slideshow": { | ||||
"slide_type": "fragment" | ||||
} | ||||
}, | ||||
"source": [ | ||||
"* **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) )" | ||||
] | ||||
}, | ||||
{ | ||||
"cell_type": "markdown", | ||||
"metadata": { | ||||
"slideshow": { | ||||
"slide_type": "fragment" | ||||
} | ||||
}, | ||||
"source": [ | ||||
"* **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) )" | ||||
] | ||||
}, | ||||
{ | ||||
"cell_type": "markdown", | ||||
"metadata": { | ||||
"slideshow": { | ||||
"slide_type": "fragment" | ||||
} | ||||
}, | ||||
"source": [ | ||||
"* **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) )" | ||||
] | ||||
}, | ||||
{ | ||||
"cell_type": "markdown", | ||||
"metadata": { | ||||
"slideshow": { | ||||
"slide_type": "slide" | ||||
} | ||||
}, | ||||
"source": [ | ||||
"# LPP goals (What we want)\n", | ||||
"\n", | ||||
"\n", | ||||
"* Being able to build on different OS" | ||||
] | ||||
}, | ||||
{ | ||||
"cell_type": "markdown", | ||||
"metadata": { | ||||
"ExecuteTime": { | ||||
"end_time": "2018-01-08T19:36:05.070215Z", | ||||
"start_time": "2018-01-08T19:36:05.066706Z" | ||||
}, | ||||
"slideshow": { | ||||
"slide_type": "fragment" | ||||
} | ||||
}, | ||||
"source": [ | ||||
"* Build inside a clean environment" | ||||
] | ||||
}, | ||||
{ | ||||
"cell_type": "markdown", | ||||
"metadata": { | ||||
"ExecuteTime": { | ||||
"end_time": "2018-01-08T19:36:05.399625Z", | ||||
"start_time": "2018-01-08T19:36:05.394453Z" | ||||
}, | ||||
"slideshow": { | ||||
"slide_type": "fragment" | ||||
} | ||||
}, | ||||
"source": [ | ||||
"* Produce compatibility matrices" | ||||
] | ||||
}, | ||||
{ | ||||
"cell_type": "markdown", | ||||
"metadata": { | ||||
"slideshow": { | ||||
"slide_type": "fragment" | ||||
} | ||||
}, | ||||
"source": [ | ||||
"* Being faster than Travis" | ||||
] | ||||
}, | ||||
{ | ||||
"cell_type": "markdown", | ||||
"metadata": { | ||||
"slideshow": { | ||||
"slide_type": "fragment" | ||||
} | ||||
}, | ||||
"source": [ | ||||
"* Customize workflow" | ||||
] | ||||
}, | ||||
{ | ||||
"cell_type": "markdown", | ||||
"metadata": { | ||||
"slideshow": { | ||||
"slide_type": "slide" | ||||
} | ||||
}, | ||||
"source": [ | ||||
"# LPP Setup\n", | ||||
"<center>\n", | ||||
"<img src=\"resources/Setup LPP.png\" width=\"60%\" align=\"center\">\n", | ||||
"</center>" | ||||
] | ||||
}, | ||||
{ | ||||
"cell_type": "markdown", | ||||
"metadata": {}, | ||||
"source": [ | ||||
"# Available build agents\n", | ||||
"\n", | ||||
"* Based on Docker cloud plugin\n", | ||||
"* Virtually anything that runs either inside **Docker** or **VirtualBox**(Vagrant)\n", | ||||
"* Spawn on demand\n", | ||||
"* For now **Windows**, **Linux**(Fedora, Ubuntu), **FreeBSD** and **Mac OSX** 10.12.2(Siera)\n" | ||||
] | ||||
}, | ||||
{ | ||||
"cell_type": "markdown", | ||||
"metadata": { | ||||
"slideshow": { | ||||
"slide_type": "slide" | ||||
} | ||||
}, | ||||
"source": [ | ||||
"# I want to choose where I get built!\n", | ||||
"\n", | ||||
"**Team city introduce the notion of build requirements.**\n", | ||||
"\n", | ||||
"- 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", | ||||
"\n", | ||||
"- So 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." | ||||
] | ||||
}, | ||||
{ | ||||
"cell_type": "markdown", | ||||
"metadata": { | ||||
"slideshow": { | ||||
"slide_type": "slide" | ||||
} | ||||
}, | ||||
"source": [ | ||||
"# What about reports?\n" | ||||
] | ||||
}, | ||||
{ | ||||
"cell_type": "markdown", | ||||
"metadata": { | ||||
"slideshow": { | ||||
"slide_type": "slide" | ||||
} | ||||
}, | ||||
"source": [ | ||||
"# API?" | ||||
] | ||||
}, | ||||
{ | ||||
"cell_type": "markdown", | ||||
"metadata": { | ||||
"slideshow": { | ||||
"slide_type": "slide" | ||||
} | ||||
}, | ||||
"source": [ | ||||
"# Time to play!" | ||||
] | ||||
} | ||||
], | ||||
"metadata": { | ||||
"celltoolbar": "Slideshow", | ||||
"kernelspec": { | ||||
"display_name": "Python 3", | ||||
"language": "python", | ||||
"name": "python3" | ||||
}, | ||||
"language_info": { | ||||
"codemirror_mode": { | ||||
"name": "ipython", | ||||
"version": 3 | ||||
}, | ||||
"file_extension": ".py", | ||||
"mimetype": "text/x-python", | ||||
"name": "python", | ||||
"nbconvert_exporter": "python", | ||||
"pygments_lexer": "ipython3", | ||||
"version": "3.6.3" | ||||
}, | ||||
"toc": { | ||||
"nav_menu": {}, | ||||
"number_sections": true, | ||||
"sideBar": true, | ||||
"skip_h1_title": false, | ||||
"title_cell": "Table of Contents", | ||||
"title_sidebar": "Contents", | ||||
"toc_cell": false, | ||||
"toc_position": {}, | ||||
"toc_section_display": true, | ||||
"toc_window_display": false | ||||
}, | ||||
"varInspector": { | ||||
"cols": { | ||||
"lenName": 16, | ||||
"lenType": 16, | ||||
"lenVar": 40 | ||||
}, | ||||
"kernels_config": { | ||||
"python": { | ||||
"delete_cmd_postfix": "", | ||||
"delete_cmd_prefix": "del ", | ||||
"library": "var_list.py", | ||||
"varRefreshCmd": "print(var_dic_list())" | ||||
}, | ||||
"r": { | ||||
"delete_cmd_postfix": ") ", | ||||
"delete_cmd_prefix": "rm(", | ||||
"library": "var_list.r", | ||||
"varRefreshCmd": "cat(var_dic_list()) " | ||||
} | ||||
}, | ||||
"types_to_exclude": [ | ||||
"module", | ||||
"function", | ||||
"builtin_function_or_method", | ||||
"instance", | ||||
"_Feature" | ||||
], | ||||
"window_display": false | ||||
} | ||||
}, | ||||
"nbformat": 4, | ||||
"nbformat_minor": 2 | ||||
} | ||||