gitlab+jenkins的搭建

搭建環境:兩臺centos6.7 64位

一 gitlab的安裝

  gitlab代碼管理倉庫:

  1、按照gitlab 官方提供的文檔,安裝如下包:

[root@node02 ~ 10:13:35]#yum install curl policycoreutils openssh-server openssh-clients postfix


2、啓動postfix 和sshd 服務:

[root@node02 ~ 10:50:18]#service postfix start 


[root@node02 ~ 10:50:37]#service sshd start



3、受長城防火牆的影響,我們去清華大學提供的源上下載gitlab-8.6.5 的 rpm 包:

[root@node02 ~ 10:52:26]#wget -O /usr/local/src/gitlab-ce-8.6.5-ce.0.el7.x86_64.rpm https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-8.6.5-ce.0.el7.x86_64.rpm



4、安裝下載好的包:

[root@node02 ~ 10:53:27]#rpm -ivh /usr/local/src/gitlab-ce-8.6.5-ce.0.el7.x86_64.rpm 

Preparing...                    ################################# [100%]

Updating / installing...

1:gitlab-ce-8.6.5-ce.0.el7        ################################# [100%]

gitlab: Thank you for installing GitLab!

gitlab: To configure and start GitLab, RUN THE FOLLOWING COMMAND:

sudo gitlab-ctl reconfigure

gitlab: GitLab should be reachable at http://node02.com

gitlab: Otherwise configure GitLab for your system by editing /etc/gitlab/gitlab.rb file

gitlab: And running reconfigure again.

gitlab: 

gitlab: For a comprehensive list of configuration options please see the Omnibus GitLab readme

gitlab: https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md

gitlab: 

It looks like GitLab has not been configured yet; skipping the upgrade script.



5、在執行初始化配置之前,建議修改gitlab 倉庫路徑,否則後期修改比較麻煩:

[root@node02 ~ 10:54:47]#vim /etc/gitlab/gitlab.rb

git_data_dir "/data/gitlab"

external_url 'http://ip'

gitlab_rails['gravatar_plain_url'] = 'http://www.gravatar.com/avatar/%{hash}?s=%{size}&d=identicon'

6、執行gitlab-ctl reconfig初始化gitlab:

[root@node02 ~ 10:55:48]#gitlab-ctl reconfigure

Running handlers:

Running handlers complete

Chef Client finished, 220/307 resources updated in 02 minutes 03 seconds

gitlab Reconfigured!


在windows 的瀏覽器使用gitlab 服務器的IP 訪問測試,是否能打開gitlab 主頁:
153437qz89j1tczgo1gjjz.jpg 

初次訪問,要求更改管理員 root 的登錄密碼(gitlab-7.x 不同),更改後登陸:
153437bjoj5jrlcu1qs45c.jpg 

登陸後什麼都沒有,默認進入當前用戶的項目頁面:
153531gt8y88u4s6qe8aus.jpg





二 Jenkins:持續集成最關鍵的服務。

1、從官方下載jdk-8 到 /usr/local/src 目錄下:

[root@node03 ~ 11:07:00]#wget -O /usr/local/src/server-jre-8u77-linux-x64.tar.gz http://download.oracle.com/otn-pub/java/jdk/8u77-b03/server-jre-8u77-linux-x64.tar.gz?AuthParam=1460646516_dc62b6fbccd46c5f5a038f6bfd7ef428



2、解壓到/usr/local/目錄下:

[root@node03 ~ 11:07:49]#tar -zxf /usr/local/src/server-jre-8u77-linux-x64.tar.gz -C /usr/local/

下載Maven 到本地的/usr/loca/src 目錄,並解壓。

[root@node03 ~ 18:08:53]#wget -O /usr/local/src/apache-maven-3.3.9.tar.gz http://www.linuser.com/share/soft/apache-maven-3.3.9-bin.tar.gz


[root@node03 ~ 18:10:14]#tar -zxf /usr/local/src/apache-maven-3.3.9.tar.gz -C /usr/local/src/

將maven 解壓目錄移動到 /usr/local 目錄下並重命名爲maven:

[root@node03 ~ 18:10:28]#mv /usr/local/src/apache-maven-3.3.9 /usr/local/maven


3、同時,配置其系統環境變量:

[root@node03 ~ 18:11:59]#vim  /etc/profile

JRE_HOME=/usr/local/jdk1.8.0_77/jre

JAVA_HOME=/usr/local/jdk1.8.0_77

CLASSPATH=/usr/local/jdk1.8.0_77/jre/lib:/usr/local/jdk1.8.0_77/lib:/usr/local/jdk1.8.0_77/lib/tools.jar

MAVEN_HOME=/usr/local/maven

PATH=$PATH:/usr/local/jdk1.8.0_77/bin:/usr/local/jdk1.8.0_77/jre/bin:/usr/local/maven/bin


[root@node03 ~ 18:11:59]#source /etc/profile

驗證:

[root@node03 ~ 18:17:13]#mvn -version

Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T11:41:47-05:00)

Maven home: /usr/local/maven

Java version: 1.8.0_77, vendor: Oracle Corporation

4、下載jenkins 官方提供的穩定版的源:

[root@node03 ~ 11:08:33]#wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo


5、導入官方key:

[root@node03 ~ 11:09:27]#rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key


6、安裝jenkins:

[root@node03 ~ 11:09:45]#yum install -y jenkins


7、編輯jenkins 的主配置文件,修改jenkins 家目錄及配置使用內存:

[root@node03 ~ 11:13:30]#vim /etc/sysconfig/jenkins

JENKINS_HOME="/data/jenkins"


8、編輯jenkins 啓動腳本文件,在腳本文件的candidates 中定義java 的路徑:

[root@node03 ~ 11:16:59]#vim /etc/init.d/jenkins

candidates="

/usr/local/jdk1.8.0_77/bin/java   #自定義的java 路徑

/etc/alternatives/java

/usr/lib/jvm/java-1.6.0/bin/java

/usr/lib/jvm/jre-1.6.0/bin/java

/usr/lib/jvm/java-1.7.0/bin/java

/usr/lib/jvm/jre-1.7.0/bin/java

/usr/lib/jvm/java-1.8.0/bin/java

/usr/lib/jvm/jre-1.8.0/bin/java

/usr/bin/java”


9、創建jenkins 的家目錄:

[root@node03 ~ 11:15:44]#mkdir -p /data/jenkins


10、修改家目錄的所屬主和組都爲jenkins

[root@node03 ~ 11:15:57]#chown -R jenkins:jenkins /data/jenkins


11、要真正修改jenkins 家目錄,必須執行usermod:

[root@node03 ~ 11:16:11]#usermod -d /data/jenkins jenkins


12、啓動jenkins:

[root@node03 ~ 11:18:45]# service  jenkins start

13、利用Jenkins IP+8080 端口訪問Jenkins 首頁:
154258a89on6r689o6czz9.png






三  windows git客戶端的安裝及生成密鑰對


因爲前面已經使用了gitlab 來做代碼託管,那麼我們研發就需要使用git 客戶端工具來pull |push 代碼,又因大部分程序員都是在windows 下,所以這裏我們使用GIT GUI 來做客戶端(當然,首推git 烏龜工具):

1、電腦安裝git-base 工具,下載地址https://git-scm.com/download/ ,安裝步驟如下:
155031ywn19bb18bwvbki3.jpg 

155031rbuva69nf9qbzb91.jpg 

155031ynpretazteoqiojr.jpg 

155031dwhpzw5vpppwauuh.jpg 

155031l3bd5v323ku5xve1.jpg 

155032ql8sdh67csdd8r7d.jpg 

155032f9rxoqxzqkyq7qdm.jpg 

155032us5usujf5yujutsu.jpg 

155032ess6spiu83u2xix5.jpg 

155032f7st7zkt97me3f3q.jpg 

2、運行git 後,執行ssh-keygen:
155155w68kc5ysook8qb75.jpg 

3、查看生成的密鑰對公鑰的內容,後面再創建項目的時候會用上:

$ cat ~/.ssh/id_rsa.pub

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC4z4hBu5pUWQIYu+AU1Hsr3yPlT08L+Xyw3kUnC1bYg1TvHfy6B8lzKD9vCBPoJAa01iYp868PeMcojuXBfg7x0+6ZZaI/x7kJnaU4kClPf3hwPVNppdl+mTmoghotA5NbTo9eZs68qj8MIsyWnsX0ev/TqgfzwfXCXLNDHYUnKdZEIdK9zfmCIpJq5rJZ/4rVChQSXombtH/GNZtzNkbkhUZj7daj1/KlQTW2RZHH0YNTIreHJnbM715Ay8I7WdEIVATBto19OjtKJY9wfOxgqcbMjI7WhmOF554iDuDJE2NJIUpMbjV26c8uAJV92rCkemHQvg94On2ScJ9FeiFj Linuser@DESKTOP-K8HE3J4




四 Jenkins 安全配置

    

1、 點擊jenkins web 頁的Manage Jenkins,然後點擊 Configre Global Security,進行安全配置:

161825ye7ksjnb8jb8vjjl.jpg



2、啓用安全設置,使用Jenkins 自帶數據庫,只允許登錄用戶做任何操作:

161819ahzmffwv8fpfuphz.jpg


3、點擊保存後,要求設置管理員賬號信息:

161825yh8le1ej8if821l1.jpg



4、點擊註冊後,會自動跳轉登入Jenkins:

161825vioo3swvt5q1ma81.jpg




五 Jenkins 插件升級及安裝

      1、Jenkins 主頁,點擊Manager Jenkins---Manage Plugins:
162626f6o2110x0444n4pa.jpg 

2、進入後,我們可以看到有很多插件可以升級,點擊最下面的all,全部選中,然後點擊Download now and install after restart:

選中前:
162626mt6xcs04x64va6tk.jpg 

選中後:
162627eoji7dqyoe7ozjjp.jpg 

進入安裝插件頁面(這裏因爲Jenkins 默認是ping 谷歌來檢測你的網絡連通性,所以纔會有上面的提醒):
162628maix5tanjyjyixnf.jpg 

3、所有的插件都下載完成,先別急着勾選Restart Jenkins when installation is complete and no jobs are running。點擊左側的Manage Pluagins---Manage Plugins,回到插件管理頁面,點擊Available,在Filter 中輸入如下插件並選中:GitLab Plugin、Git client plugin、GitLab Hook Plugin、Git plugin、SonarQube Plugin、Pubish Over SSH(批量發佈登錄插件)。最後點擊 Download now and install after restart:
162628a9xblxejz9p82vsd.jpg 

4、此時可以看到回到了上面升級插件的頁面繼續下載剛剛選中要安裝的插件,這一次,我們就勾選 Restart Jenkins when installation is complete and no jobs are running:
162628ohh4phhbk4zhdz2h.jpg 

等所有插件都下載完成,Jenkins 將會自動重啓!



六 系統基礎配置

      1、回到系統Jenkins 管理頁,點擊Manage Jenkins---Global Tool Configuration,進入系統配置屬性頁:
163100z3kybjhhg2rhg3hr.jpg 

2、找到Maven Configuration 配置項,在默認配置項中選擇 Setting file in filesystem,在 file path 中輸入Maven 所在的路徑:
163100xg1kajgdkxked05o.jpg 

3、JDK 屬性配置:
163101zkcthncyklxkqa1l.jpg 

4、在配置git 前,請先登錄服務器,使用yum 命令安裝git 工具:

[root@node03 ~ 18:17:46]#yum install -y git



安裝完成,找到git 可執行命令所在的路徑:

[root@node03 ~ 10:24:21]#whereis git

git: /usr/bin/git /usr/share/man/man1/git.1.gz


Git 屬性配置:
163101kpvw6zvxymc7ddfm.jpg 

5、找到下面的Git plugin,配置git 客戶端全局配置。點擊最下面的Save 保存上面的配置:
193218ll3o93fo9wmc5toz.jpg





七 創建第一個gitlab 倉庫 

     

1、由於是新裝的GitLab,所以登錄後就直接在歡迎頁面,直接點擊+New Project ,開始創建第一個項目:
171741cuc66xyccv5ksovy.jpg 

2、自定義項目名稱,這裏以project-test 爲名,創建一個私有項目。然後點擊下面的Create project:
171741acwgskn7bn7gqzqc.jpg 

3、項目創建好了,提示沒有ssh key。點擊add an SSH key,添加公鑰(下面創建)內容:
171741z9t83593nxlzzk3o.jpg 

4、點擊上面的add an SSH key,進入密鑰添加頁。在Key 下面粘貼公鑰的內容(注意:內容必須一致),Titile 隨便自定義,最後點擊Add key:
171741ad10mm4mo197m4c7.jpg 

5、密鑰添加完成,會看到:
171741r60n0v6m0wbwbg4t.jpg 

6、    測試在git 工具中將上面建的項目拉去到本地,看是否需要密碼驗證。現在windows 的E 盤下創建一個test 的文件夾,然後在git 工具中切換到test 目錄:
171742ieax3lf5d7x7wlgw.jpg 

測試前,請確保你電腦有做本地hosts 解析,否則請將下面的域名替換成你gitlab 服務器的IP地址
171742hwzyz1wyoryrhpmz.jpg 

測試將項目克隆到test 目錄:
  1. Linuser@DESKTOP-K8HE3J4 MINGW64 /e/test

  2. $ git clone [email protected]:root/project-test.git

  3. Cloning into 'project-test'...

  4. warning: You appear to have cloned an empty repository.

  5. Checking connectivity... done.


  6. Linuser@DESKTOP-K8HE3J4 MINGW64 /e/test

  7. $ ls

  8. project-test/



八 git 客戶端配置

      1、繼上面,我們進入克隆下來的project-test 目錄:

Linuser@DESKTOP-K8HE3J4 MINGW64 /e/test

$ cd project-test/

2、配置全局用戶及email:

Linuser@DESKTOP-K8HE3J4 MINGW64 /e/test/project-test (master)

$ git config --global user.name "qiuli"


Linuser@DESKTOP-K8HE3J4 MINGW64 /e/test/project-test (master)

$ git config --global user.email "[email protected]"


3、創建測試文件,添加至倉庫,提交併推送至遠程倉庫:

Linuser@DESKTOP-K8HE3J4 MINGW64 /e/test/project-test (master)

$ touch 1.txt


Linuser@DESKTOP-K8HE3J4 MINGW64 /e/test/project-test (master)

$ git add ./


Linuser@DESKTOP-K8HE3J4 MINGW64 /e/test/project-test (master)

$ git commit -m 'add 1.txt'

[master (root-commit) 3fdf410] add 1.txt

1 file changed, 0 insertions(+), 0 deletions(-)

create mode 100644 1.txt


Linuser@DESKTOP-K8HE3J4 MINGW64 /e/test/project-test (master)

$ git push

Counting objects: 3, done.

Writing objects: 100% (3/3), 204 bytes | 0 bytes/s, done.

Total 3 (delta 0), reused 0 (delta 0)

To [email protected]:root/project-test.git

* [new branch]      master -> master


4、登錄GitLab web 端,進入項目,可以看到提交記錄:
172142e4bde5nze4cxwxne.jpg



九 Jenkins 創建一個自由軟件項目

      1、回到Jenkins 主頁,點擊New Item,進入項目創建屬性頁。在Item name 自定義項目名稱,在項目類型中選擇Freestyle project:
172643duywz7bn556gsn7u.jpg 

2、點擊Ok 後,會進入項目詳細配置頁。Description 描述信息無所謂。在Source Code Management 中選中Git,配置GitLab 中的項目地址:
172643xyxzlzhjjhhjjyty.jpg 

同時點擊Credentials 配置gitlab 項目倉庫所屬主登錄用戶及密碼: 
172644z24tne0tyxuwv97n.jpg 

3、配置觸發條件。這裏選擇當有更新就自動構建,如下:
172644whjkzuonuiukuico.jpg 

4、配置構建後的操作,這裏選擇發送郵件。最後點擊保存:
172644wri4tcaiq49a2re6.jpg 

5、登錄gitlab ,進入構建的項目中,點擊右側的編輯項目:
172644szakl32521zffaka.jpg 

6、在編輯屬性頁中點擊左側的webhooks 標籤,將上面Jenkins 的地址填入到URL中,最後點擊Add Webhook:
172644p020ibq3bbizm8bc.jpg 

7、由上面的gitlab 可知,我們的倉庫中已經有了1.txt 這個文件,現在,我們來編輯該文件,添加一些內容:

Linuser@DESKTOP-K8HE3J4 MINGW64 /e/test/project-test (master)

$ echo 'Test Jenkins auto build' > 1.txt



現在我們來提交併推送到gitlab , 看jenkins 會不會自動構建:

Linuser@DESKTOP-K8HE3J4 MINGW64 /e/test/project-test (master)

$ git add .

warning: LF will be replaced by CRLF in 1.txt.

The file will have its original line endings in your working directory.


Linuser@DESKTOP-K8HE3J4 MINGW64 /e/test/project-test (master)

$ git commit -m 'change 1.txt'

[master warning: LF will be replaced by CRLF in 1.txt.

The file will have its original line endings in your working directory.

907b4b9] change 1.txt

warning: LF will be replaced by CRLF in 1.txt.

The file will have its original line endings in your working directory.

1 file changed, 1 insertion(+), 1 deletion(-)


Linuser@DESKTOP-K8HE3J4 MINGW64 /e/test/project-test (master)

$ git push

Counting objects: 3, done.

Delta compression using up to 8 threads.

Compressing objects: 100% (2/2), done.

Writing objects: 100% (3/3), 281 bytes | 0 bytes/s, done.

Total 3 (delta 0), reused 0 (delta 0)

To [email protected]:root/project-test.git

   d109723..907b4b9  master -> master



同時在Jenkins 的項目中可以看到有構建了:
172644gi4vvvnzoiufmueb.jpg 

點擊構建歷史,進入看下構建日誌(沒發郵件,是因爲上面勾選了Send e-mail for every unstable build):
172644eidkh7kl2i2ee4ge.jpg 

登錄Jenkins 服務器,查看工作目錄下的的1.txt 的內容;

[root@node03 ~ 11:01:48]#cat /data/jenkins/workspace/project-test/1.txt

Test Jenkins auto build



8、更改變更自動構建爲定時構建,就是多長時間它自動去構建一次,如下(我們在上面這個項目的基礎上將之前的uild when a change is pushed to GitLab 去掉,改選Build periodically,然後做定時):
172645si6i0oopf6p61ols.jpg 

爲了區分構建,這裏我把構建後操作發送的郵件取消,這樣一旦構建就會發送郵件了
172645t5rnmcmhdm6nn10r.jpg 

下面,我們在windows 上的倉庫目錄中1.txt 文件中新增一點內容,然後推送到服務器端:

Linuser@DESKTOP-K8HE3J4 MINGW64 /e/test/project-test (master)

$ echo '10 minute auto build' >> 1.txt


Linuser@DESKTOP-K8HE3J4 MINGW64 /e/test/project-test (master)

$ git add .

warning: LF will be replaced by CRLF in 1.txt.

The file will have its original line endings in your working directory.


Linuser@DESKTOP-K8HE3J4 MINGW64 /e/test/project-test (master)

$ git commit -m 'change'

[master warning: LF will be replaced by CRLF in 1.txt.

The file will have its original line endings in your working directory.

3d86eb7] change

warning: LF will be replaced by CRLF in 1.txt.

The file will have its original line endings in your working directory.

1 file changed, 1 insertion(+)


Linuser@DESKTOP-K8HE3J4 MINGW64 /e/test/project-test (master)

$ git push

Counting objects: 3, done.

Delta compression using up to 8 threads.

Compressing objects: 100% (2/2), done.

Writing objects: 100% (3/3), 298 bytes | 0 bytes/s, done.

Total 3 (delta 0), reused 0 (delta 0)

To [email protected]:root/project-test.git

   0e5337b..3d86eb7  master -> master


代碼推送後,很明顯沒有自動構建了:
172645rccbntvellotvbzx.jpg 

等待幾分鐘,會發現:
172645nlr1f7vh6s1v17xv.jpg 

再次看服務器上的1.txt 文件:

[root@node03 ~ 13:28:21]#cat /data/jenkins/workspace/project-test/1.txt

Test Jenkins auto build

10 minute auto build


如果需要發佈代碼只要在系統配置裏面的管理節點裏新建節點,這裏就不詳細介紹了,java發佈的話需要安裝私服(maven)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章