1. 程式人生 > >gitlab+jenkins+ansible集成持續發布

gitlab+jenkins+ansible集成持續發布

持續集成

1.Gitlab安裝

gitlab 10.0.1安裝使用

內存最少2G否則系統安裝完會502報錯

安裝

如想使用Postfix來發送郵件,在安裝期間請選擇’Internet Site’. 您也可以用sendmai或者 配置SMTP服務 使用SMTP發送郵件.

Centos 6 系統上, 下面的命令將在系統防火墻裏面開放HTTP和SSH端口.

sudo yum install curl openssh-server openssh-clients postfix cronie policycoreutils-python git -y

sudo service postfix start

sudo chkconfig postfix on

sudo lokkit -s http -s ssh

添加GitLab倉庫,並安裝到服務器上(相對慢)

curl -sS http://packages.gitlab.cc/install/gitlab-ce/script.rpm.sh | sudo bash

sudo yum install gitlab-ce

直接下載rpm包

安裝包地址

centos 6xx

https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6/

centos7xx

https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/

漢化地址

https://gitlab.com/xhang

rpm -ivh gitlab-ce-10.0.1-ce.0.el6.x86_64.rpm

gitlab-ctl reconfigure

gitlab本身采用80端口,如安裝前服務器有啟用80,安裝完訪問會報錯。需更改gitlab的默認端口。

修改vim /etc/gitlab/gitlab.rb:

external_url 'http://localhost:90'

unicorn本身采用8080端口,如果你那裏沒有8080使用,可以後邊不用修改了。如安裝前服務器有啟用8080,安裝完訪問會報錯。需更改unicorn的默認端口:

修改 /etc/gitlab/gitlab.rb:

unicorn['listen'] = '127.0.0.1'

unicorn['port'] = 3000

gitlab中文漢化

git clone https://gitlab.com/xhang/gitlab.git(下載有時候超級慢)下載相應的漢化程序

git diff v10.0.1 v10.0.1-zh > ../10.0.1-zh.diff

若以前下載的gitlab程序可以執行git pull更新到最新在執行

git diff v10.0.1 v10.0.1-zh > ../10.0.1-zh.diff

yum install patch

sudo patch -d /opt/gitlab/embedded/service/gitlab-rails -p1 < ../10.0.1-zh.diff

sudo gitlab-ctl start

sudo gitlab-ctl reconfigure

如果漢化中出現問題,請重新安裝 GitLab(註意備份數據)。

2.Ansible安裝

ansible

yum install epel-release -y

yum install ansible -y

創建公私鑰

ssh-keygen -t rsa

導出公鑰到指定控制端

ssh-copy-id -i [email protected]

編輯指定控制端,服務

vi/etc/ansible/hosts

Ansible內置了一些關於連接主機的變量,設置以下變量控制ansible與遠程主機:

hosts文件內部支持的一些特定指令(inventory參數):

ansible_ssh_host:指定主機別名對應的真實IP,如:

ansible_ssh_host=183.60.41.251,隨後連接該主機無須指定完整IP,只需指定251就行

ansible_ssh_port:指定連接到這個主機的ssh端口,默認22

ansible_ssh_user:連接到該主機的ssh用戶

ansible_ssh_pass:連接到該主機的ssh密碼(連-k選項都省了),安全考慮還是建議使用私鑰或在命令行指定-k選項輸入

ansible_sudo_pass:sudo密碼

ansible_sudo_exe(v1.8+的新特性):sudo命令路徑

ansible_connection:連接類型,可以是local、ssh或paramiko,ansible1.2之前默認為paramiko

ansible_ssh_private_key_file:私鑰文件路徑

ansible_shell_type:目標系統的shell類型,默認為sh,如果設置csh/fish,那麽命令需要遵循它們語法

ansible_python_interpreter:python解釋器路徑,默認是/usr/bin/python,但是如要要連*BSD系統的話,就需要該指令修改python路徑

ansible_*_interpreter:這裏的"*"可以是ruby或perl或其他語言的解釋器,作用和ansible_python_interpreter類似

配置例子

技術分享圖片

3.Jenkins安裝

Tomcat把jenkins.war放進Tomcat web目錄 執行http://192.168.253.154:8080

Jenkins安裝插件Ansible pluginGit pluginGitLab PluginGitlab Hook PluginBuild Authorization Token Root Plugin 。

4.配置

配置jenkins鏈接gitlab服務的賬號 此處用證書

技術分享圖片技術分享圖片

新建一個自由風格的test項目

技術分享圖片

填寫gitlab項目托管地址

技術分享圖片

生成隨機token:openssl rand -hex 12

技術分享圖片

構建執行腳本

或遠程執行腳本結合ansible

ansible 192.168.253.154 -m shell -a "sh /var/xxx.sh"

技術分享圖片技術分享圖片

配置gitlab

鉤子地址

http://jenkins服務器地址:8080/buildByToken/build?job=項目名&token=token值

技術分享圖片

測試顯示值201為正確

技術分享圖片

Jenkins生成出構建信息

技術分享圖片技術分享圖片


gitlab+jenkins+ansible集成持續發布