[持续集成]搭建CI环境gitolite-jenkins
搭建CI环境gitolite-jenkins
一、搭建gitolite
?
0. 环境:
192.168.0.104 gitolite服务器/ssh server 余文简称之:#gito#
192.168.0.105 jenkins服务器/ssh client 余文简称之:#jenk#
---- ? ?----
1. #gito#和#jenk#的网络配置
sudo gedit /etc/network/interfaces
?
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.0.104
gateway 192.168.0.1
netmask 255.255.255.0
#network 192.168.1.0
broadcast 192.168.0.255
?
?
sudo ifconfig eth0 up
sudo /etc/init.d/networking restart
---- ? ?----
2. #gito#的ssh安装
han-gitolite 192.168.0.104
sudo apt-get install openssh-server
?
3. 使用ssh从#jenk#连接#gito#
han-jenkins 192.168.0.105
ssh han@192.168.0.104
安装git并增加一个git帐号为gitolite专用
sudo apt-get install git
sudo adduser git
为git帐号生成ssh密钥
su git
cd ~
ssh-keygen -f ~/.ssh/git
下载gitolite并安装
git clone git://github.com/sitaramc/gitolite
mkdir -p $HOME/bin
gitolite/install -to $HOME/bin
$HOME/bin/gitolite setup -pk ~/.ssh/git.pub
添加gitolite到环境变量
nano .bashrc
PATH=/home/git/bin:$PATH
ctrl+o
退出git帐号,回到han,为使git环境变量生效
exit
su git
cd ~
?
4. 在#jenk#生成公钥私钥对 拷贝到#gito#的临时目录
ssh-keygen -f ~/.ssh/jenkins
sudo scp ~/.ssh/jenkins.pub han@192.168.0.104:/tmp/jenkins_han.pub
?
5. 在#gito#继续第3步,在git帐号下:
gitolite setup -pk /tmp/jenkins_han.pub
配置git参数
git config --global user.name "han"
git config --global user.email ?"feuyeux@gmail.com"
管理gitolite-admin
cd ~
git clone git@localhost:gitolite-admin
cd gitolite-admin/
nano conf/gitolite.conf
repo gitolite-admin
? ? RW+ ? ? = ? git
? ? RW+ ? ? = ? jenkins_han
repo testing
? ? RW+ ? ? = ? @all
?
git commit -a -m "change permission"
git push
?
6. 在#jenk#管理gitolite-admin并增加一个air-factory项目
clear
sudo apt-get install git
cd ~
git clone git@192.168.0.104:gitolite-admin
cd gitolite-admin/
nano conf/gitolite.conf
repo gitolite-admin
? ? RW+ ? ? = ? git
? ? RW+ ? ? ? ?= ? jenkins_han
repo air-factory
? ? RW+ ? ? = ? @all
git commit -a -m "add air-factory project"
git push
?
7. 在#jenk#克隆并初始化air-factory项目
cd ~
git clone git@192.168.0.106:air-factory
touch README
git commit -a -m "initial air-factory"
git push -u origin master
---- ? ?----
配置ssh无密码登录
sudo gedit ~/.ssh/config
host gito
user han
hostname 192.168.0.104
port 22
IdentityFile ~/.ssh/jenkins
?
测试ssh:
ssh gito
退出:
exit
---- ? ?----
二、搭建jenkins
0. 共享目录
建立vmware虚拟机的共享目录
?
cd /media/hanl/VMware Tools
sudo tar -xzvf VMwareTools-9.2.2-893683.tar.gz -C ~
cd ~/vmware-tools-distrib/sudo ./vmware-install.pl??
?
sudo apt-get install open-vm-dkms
?
sudo mount -t vmhgfs .host:/ /home/hanl/share/
?
----?
建立virtual-box虚拟机的共享目录
mkdir sharespace
sudo mount -t vboxsf share sharespace
将公钥拷贝给gitolite服务器
cp .ssh/jenkins.pub sharespace/
----
1.?在#jenk#安装和配置JDK
sudo cp?~/share/-leo/linux/jdk-6u37-linux-x64.bin /opt
sudo chmod u+x /opt/jdk-6u37-linux-x64.bin
cd /opt
sudo?./jdk-6u37-linux-x64.bin
sudo nano ~/.bashrc
export?JAVA_HOME=/opt/jdk1.6.0_37
export PATH=$JAVA_HOME/bin:$PATH
source .bashrcjava -version?
?
2. 在#jenk#安装和配置maven
?
cd ~
wget http://labs.mop.com/apache-mirror/maven/maven-3/3.0.4/binaries/apache-maven-3.0.4-bin.tar.gz
sudo tar -xzvf apache-maven-3.0.4-bin.tar.gz -C /opt/
sudo nano ~/.bashrc
export M2_HOME=/opt/apache-maven-3.0.4
export M2=$M2_HOME/bin
export M2_OPTS="-Xms256m -Xmx512m"
export PATH=$M2:$PATH
source .bashrc
?
mvn -v
?
?
3.?在#jenk#安装jenkins
wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add - deb http://pkg.jenkins-ci.org/debian binary/
?
sudo apt-get update
sudo apt-get install jenkins
启动jenkins
sudo /etc/init.d/jenkins start
http://192.168.0.105:8080/
---
使用一个现有github的工程测试gitolite-jenkins
git clone git://github.com/feuyeux/tinylibrary.git
?
通过网页在jenkins中配置tinylibrary项目
http://192.168.0.105:8080/job/tinyLibrary/configure
---- ? ?----
三、安装 git server 辅助工具
1. 安装daemon
sudo apt-get install git-daemon-run
sudo gedit /etc/sv/git-daemon/run
?
#!/bin/sh
exec 2>&1
echo 'git-daemon starting.'
exec chpst -ugitdaemon:gitolite \
? "$(git --exec-path)"/git-daemon --verbose --base-path=/home/han/repositories /home/han/repositories
?
sudo sv restart git-daemon
---
2. 安装Gitweb
sudo apt-get install highlight gitweb
[sudo] password for hanl:?
Reading package lists... Done
Building dependency tree ? ? ??
Reading state information... Done
The following extra packages will be installed:
? apache2 apache2-mpm-worker apache2-utils apache2.2-bin apache2.2-common
? highlight-common libapr1 libaprutil1 libaprutil1-dbd-sqlite3
? libaprutil1-ldap
Suggested packages:
? apache2-doc apache2-suexec apache2-suexec-custom httpd-cgi libcgi-fast-perl
? git-doc
The following NEW packages will be installed:
? apache2 apache2-mpm-worker apache2-utils apache2.2-bin apache2.2-common
? gitweb highlight highlight-common libapr1 libaprutil1
? libaprutil1-dbd-sqlite3 libaprutil1-ldap
0 upgraded, 12 newly installed, 0 to remove and 0 not upgraded.
Need to get 4,167 kB of archives.
After this operation, 12.9 MB of additional disk space will be used.
Do you want to continue [Y/n]? y
----
sudo gedit /etc/gitweb.conf 追加:$feature{'highlight'}{'default'} = [1];
sudo gedit /etc/hosts
127.0.0.1 localhost han-gitolite
----
sudo usermod -a -G git www-data
sudo chmod g+r /home/git/projects.list
sudo chmod -R g+rx /home/git/repositories
sudo service apache2 restart
----
sudo gedit /home/git/gitolite-admin/conf/gitolite.conf?
repo gitolite-admin
? ? RW+ ? ? = ? git
? ? RW+ ? ?= ? jenkins_han
repo air-factory
? ? RW+ ? ? = ? @all
repo gitweb
? ? RW+ ? ? = ? @all
?
git clone git@192.168.0.104:gitolite-admin
http://192.168.0.109/gitweb/
---- ? ?----
获取gitolite服务器信任
ssh-copy-id -i ~/.ssh/jenkins.pub han@192.168.0.104
==
参考:
hooks
http://sitaramc.github.com/gitolite/g2/hooks.html
----
https://github.com/sitaramc/gitolite
http://cisight.com/how-to-setup-git-server-using-gitolite-in-ubuntu-11-10-oneiric
http://pkg.jenkins-ci.org/debian
http://www.countableset.ch/blog/blog/2012/04/29/ubuntu-12-dot-04-installing-gitolite-and-gitweb/
http://blog.airmio.com/2012/05/install-git-server-on-ubuntu-12/
?