##// END OF EJS Templates
Final version plus some cleaning...
Final version plus some cleaning Signed-off-by: Alexis Jeandet <alexis.jeandet@member.fsf.org>

File last commit:

r2:fbb8b7d9e310 master
r2:fbb8b7d9e310 master
Show More
LoOPS_TeamCity.ipynb
517 lines | 14.3 KiB | text/plain | TextLexer
/ LoOPS_TeamCity.ipynb
In [1]:
from traitlets.config.manager import BaseJSONConfigManager
from os.path import expanduser
home = expanduser("~")
path = home+"/.jupyter/nbconfig"
cm = BaseJSONConfigManager(config_dir=path)
cm.update("livereveal", {
              "theme": "solarized",
              "transition": "zoom",
              "start_slideshow_at": "selected"
});

TeamCity

<center> </center>

Alexis Jeandet <alexis.jeandet@lpp.polytechnique.fr>:
Github:jeandet | Gitter:jeandet | IRC@freenode:jeandet

TC quick overview

  • A powerful distributed Continuous Integration tool
  • Rich plugin ecosystem
  • Really customizable system
  • Not so complex...
  • Updates so easy (Compared to redmine...)
  • Mostly written in Java
  • Closed source :(
  • Limited to 100 build cfg & 3 agents

TC Plugins (335 on JetBrains website )

  • Web Hooks plugin
  • AWS S3 Artifact Storage
  • Google Cloud Agents
  • Docker Cloud
  • Debian Package Server
  • Slack Build Notifier

Installation as simple as uploading a zip file!

Vocabulary

  • Agent: where stuff is done
  • Build step: the smallest build task subdivision ( example )
  • Build config: a collection of build steps ( example )
  • VCS root: a mostly a VCS URL + some options ( example )
  • Project: a collection of build configs + VCS + settings ( example )

Vocabulary

  • Build artifact: a file or a folder produced during the build ( example )
  • Meta-Runners: a build config that has been extracted to make a template ( example )

LPP goals (What we want)

  • Being able to build on different OS
  • Build inside a clean environment
  • Produce compatibility matrices
  • Being faster than Travis

LPP goals (What we want)

  • Customize workflow
  • Give users maximum freedom

LPP Setup

<center> </center>

Available build agents

  • Based on Docker cloud plugin
  • Virtually anything that runs either inside Docker or VirtualBox(Vagrant)
  • Spawn on demand
  • For now Windows, Linux(Fedora, Ubuntu), FreeBSD and Mac OSX 10.12.2(Siera)

FreeBSD & Mac

meson@lpp meson@travis

OSX agent FreeBSD agent

  • Vagrant inside Docker
  • Few txt files produces several GB machines
  • Easy to deploy
  • Hard to debug

I want to choose where I get built!

Team city introduce the notion of build requirements.

  • Agents expose parameters(<=> properties). ( sources )

  • For each build config, ones can declare some requirements that the agent has to match to get spawned.

What about reports?

Interactions with other tools

API?

In [38]:
import teamcity
import json

print(json.dumps(teamcity.tc.projects()[0].__dict__, indent=1))
{
 "id": "_Root",
 "name": "<Root project>",
 "description": "Contains all other projects",
 "href": "/app/rest/projects/id:_Root",
 "webUrl": "https://hephaistos.lpp.polytechnique.fr/teamcity/project.html?projectId=_Root"
}

What Next?

  • Improve Rhodecode integration
  • Boost agents startup time
  • Switch to Docker swarm
  • More Meta-Runners

Questions?