root / docs / src / ci.rst @ 972820a2
History | View | Annotate | Download (4.2 kB)
1 | 5bde09a4 | Georgios Gousios | Continuous integration with Jenkins |
---|---|---|---|
2 | 972820a2 | Kostas Papadimitriou | ----------------------------------- |
3 | 948121ee | Georgios Gousios | |
4 | 948121ee | Georgios Gousios | Preparing a GIT mirror |
5 | 972820a2 | Kostas Papadimitriou | ********************** |
6 | 948121ee | Georgios Gousios | |
7 | 271baf11 | Nikos Skalkotos | Jenkins cannot currently work with Git over encrypted HTTP. To solve this |
8 | 271baf11 | Nikos Skalkotos | problem we currently mirror the central Git repository locally on the jenkins |
9 | 271baf11 | Nikos Skalkotos | installation machine. To setup such a mirror do the following: |
10 | 948121ee | Georgios Gousios | |
11 | c469ca86 | Kostas Papadimitriou | edit .netrc:: |
12 | 948121ee | Georgios Gousios | |
13 | c469ca86 | Kostas Papadimitriou | machine code.grnet.gr |
14 | c469ca86 | Kostas Papadimitriou | login accountname |
15 | c469ca86 | Kostas Papadimitriou | password accountpasswd |
16 | 948121ee | Georgios Gousios | |
17 | c469ca86 | Kostas Papadimitriou | Create the mirror:: |
18 | 948121ee | Georgios Gousios | |
19 | c469ca86 | Kostas Papadimitriou | git clone --mirror https://code.grnet.gr/git/synnefo synnefo |
20 | 948121ee | Georgios Gousios | |
21 | c469ca86 | Kostas Papadimitriou | Setup cron to pull from the mirror periodically. Ideally, Git mirror updates |
22 | c469ca86 | Kostas Papadimitriou | should run just before Jenkins jobs check the mirror for changes:: |
23 | 948121ee | Georgios Gousios | |
24 | c469ca86 | Kostas Papadimitriou | 4,14,24,34,44,54 * * * * cd /path/to/mirror && git fetch && git remote prune origin |
25 | 948121ee | Georgios Gousios | |
26 | 948121ee | Georgios Gousios | Jenkins setup |
27 | 972820a2 | Kostas Papadimitriou | ************* |
28 | 5bde09a4 | Georgios Gousios | |
29 | 271baf11 | Nikos Skalkotos | The following instructions will setup Jenkins to run synnefo tests with the |
30 | 271baf11 | Nikos Skalkotos | SQLite database. To run the tests on MySQL and/or Postgres, step 5 must be |
31 | 271baf11 | Nikos Skalkotos | replicated. Also, the correct configuration file must be copied (line 6 of the |
32 | 271baf11 | Nikos Skalkotos | build script). |
33 | 5bde09a4 | Georgios Gousios | |
34 | 6940515d | Georgios Gousios | 1. Install and start Jenkins. On Debian Squeeze: |
35 | 5bde09a4 | Georgios Gousios | |
36 | 6940515d | Georgios Gousios | wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | apt-key add - |
37 | 5bde09a4 | Georgios Gousios | echo "deb http://pkg.jenkins-ci.org/debian binary/" >>/etc/apt/sources.list |
38 | 6940515d | Georgios Gousios | echo "deb http://ppa.launchpad.net/chris-lea/zeromq/ubuntu lucid main" >> /etc/apt/sources.list |
39 | 6940515d | Georgios Gousios | sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C7917B12 |
40 | 5bde09a4 | Georgios Gousios | sudo apt-get update |
41 | 5bde09a4 | Georgios Gousios | sudo apt-get install jenkins |
42 | 5bde09a4 | Georgios Gousios | |
43 | 75aae73a | Georgios Gousios | Also install the following packages: |
44 | 75aae73a | Georgios Gousios | |
45 | 75aae73a | Georgios Gousios | apt-get install python-virtualenv libcurl3-gnutls libcurl3-gnutls-dev |
46 | 75aae73a | Georgios Gousios | uuid-dev libmysqlclient-dev libpq-dev libsqlite-dev |
47 | 6940515d | Georgios Gousios | python-dev libzmq-dev |
48 | 75aae73a | Georgios Gousios | |
49 | 5bde09a4 | Georgios Gousios | 2. After Jenkins starts, go to |
50 | 5bde09a4 | Georgios Gousios | |
51 | 5bde09a4 | Georgios Gousios | http://$HOST:8080/pluginManager/ |
52 | 5bde09a4 | Georgios Gousios | |
53 | 5bde09a4 | Georgios Gousios | and install the following plug-ins at |
54 | 5bde09a4 | Georgios Gousios | |
55 | 5bde09a4 | Georgios Gousios | -Jenkins Cobertura Plugin |
56 | 5bde09a4 | Georgios Gousios | -Jenkins Email Extension Plugin |
57 | 5bde09a4 | Georgios Gousios | -Jenkins GIT plugin |
58 | 5bde09a4 | Georgios Gousios | -Jenkins SLOCCount Plug-in |
59 | 5bde09a4 | Georgios Gousios | -Hudson/Jenkins Violations plugin |
60 | 5bde09a4 | Georgios Gousios | |
61 | 75aae73a | Georgios Gousios | 3. Configure the Jenkins user's Git details: |
62 | 75aae73a | Georgios Gousios | su jenkins |
63 | 75aae73a | Georgios Gousios | git config --global user.email "buildbot@lists.grnet.gr" |
64 | 75aae73a | Georgios Gousios | git config --global user.name "Buildbot" |
65 | 75aae73a | Georgios Gousios | |
66 | 75aae73a | Georgios Gousios | 4. Make sure that all system-level dependencies specified in README.develop |
67 | 5bde09a4 | Georgios Gousios | are correctly installed |
68 | 5bde09a4 | Georgios Gousios | |
69 | c469ca86 | Kostas Papadimitriou | 5. Create a new "free-style software" job and set the following values:: |
70 | c469ca86 | Kostas Papadimitriou | |
71 | c469ca86 | Kostas Papadimitriou | Project name: synnefo |
72 | c469ca86 | Kostas Papadimitriou | Source Code Management: Git |
73 | c469ca86 | Kostas Papadimitriou | URL of repository: Jenkins Git does not support HTTPS for checking out directly |
74 | c469ca86 | Kostas Papadimitriou | from the repository. The temporary solution is to checkout |
75 | c469ca86 | Kostas Papadimitriou | with a cron script in a directory and set the checkout path |
76 | c469ca86 | Kostas Papadimitriou | in this field |
77 | c469ca86 | Kostas Papadimitriou | Branches to build: master and perhaps others |
78 | c469ca86 | Kostas Papadimitriou | Git->Advanced->Local subdirectory for repo (optional): synnefo |
79 | c469ca86 | Kostas Papadimitriou | Git->Advanced->Prune remote branches before build: check |
80 | c469ca86 | Kostas Papadimitriou | Repository browser: redmineweb, |
81 | c469ca86 | Kostas Papadimitriou | URL: https://code.grnet.gr/projects/synnefo/repository/ |
82 | c469ca86 | Kostas Papadimitriou | Build Triggers->Poll SCM: check |
83 | c469ca86 | Kostas Papadimitriou | Schedule: # every five minutes |
84 | c469ca86 | Kostas Papadimitriou | 0,5,10,15,20,25,30,35,40,45,50,55 * * * * |
85 | c469ca86 | Kostas Papadimitriou | |
86 | c469ca86 | Kostas Papadimitriou | Build -> Add build step-> Execute shell |
87 | c469ca86 | Kostas Papadimitriou | |
88 | c469ca86 | Kostas Papadimitriou | Command:: |
89 | c469ca86 | Kostas Papadimitriou | |
90 | c469ca86 | Kostas Papadimitriou | #!/bin/bash -ex |
91 | c469ca86 | Kostas Papadimitriou | cd synnefo |
92 | c469ca86 | Kostas Papadimitriou | mkdir -p reports |
93 | c469ca86 | Kostas Papadimitriou | /usr/bin/sloccount --duplicates --wide --details api util ui logic auth > reports/sloccount.sc |
94 | c469ca86 | Kostas Papadimitriou | cp conf/ci/manage.py . |
95 | c469ca86 | Kostas Papadimitriou | if [ ! -e requirements.pip ]; then cp conf/ci/pip-1.2.conf requirements.pip; fi |
96 | c469ca86 | Kostas Papadimitriou | cat settings.py.dist conf/ci/settings.py.sqlite > settings.py |
97 | c469ca86 | Kostas Papadimitriou | python manage.py update_ve |
98 | c469ca86 | Kostas Papadimitriou | python manage.py hudson api db logic |
99 | c469ca86 | Kostas Papadimitriou | |
100 | c469ca86 | Kostas Papadimitriou | Post-build Actions->Publish JUnit test result report: check |
101 | c469ca86 | Kostas Papadimitriou | Test report XMLs: synnefo/reports/TEST-*.xml |
102 | c469ca86 | Kostas Papadimitriou | |
103 | c469ca86 | Kostas Papadimitriou | Post-build Actions->Publish Cobertura Coverage Report: check |
104 | c469ca86 | Kostas Papadimitriou | Cobertura xml report pattern: synnefo/reports/coverage.xml |
105 | c469ca86 | Kostas Papadimitriou | |
106 | c469ca86 | Kostas Papadimitriou | Post-build Actions->Report Violations: check |
107 | c469ca86 | Kostas Papadimitriou | pylint[XML filename pattern]: synnefo/reports/pylint.report |
108 | c469ca86 | Kostas Papadimitriou | |
109 | c469ca86 | Kostas Papadimitriou | Post-build Actions->Publish SLOCCount analysis results |
110 | c469ca86 | Kostas Papadimitriou | SLOCCount reports: synnefo/reports/sloccount.sc |
111 | c469ca86 | Kostas Papadimitriou | (also, remember to install sloccount at /usr/bin) |
112 | c469ca86 | Kostas Papadimitriou | |
113 | c469ca86 | Kostas Papadimitriou | .. seealso:: |
114 | c469ca86 | Kostas Papadimitriou | http://sites.google.com/site/kmmbvnr/home/django-hudson-tutorial |