gitlab+jenkins環境搭建.md


gitlab+jenkins自動化部署環境搭建

環境說明

系統 主機 IP 安裝軟件
CentOS 7 study-1 192.168.100.51 gitlab、git
CentOS 7 study-2 192.168.100.52 jdk、maven、jenkins、git
CentOS 7 study-3 192.168.100.53 tomcat、mysql、jenkins、git

所有系統的selinux和iptables都已經關閉,同時需要做好時間同步,機器的hosts文件如下:

192.168.100.51 study-1 gitlab.study.com
192.168.100.52 study-2
192.168.100.53 study-3

下面還需要在study-1機器上生成的公鑰和私鑰復制到study-2和study-3主機上。

[root@study-1 ~]# ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
f0:02:05:f7:5c:9c:66:d2:25:42:42:a4:11:dc:27:92 root@study-1
The key's randomart image is:
+--[ RSA 2048]----+
|   .+B*.oooo.    |
|    E=o+oo*.     |
|    o..oo+       |
|     . o         |
|      . S        |
|       .         |
|                 |
|                 |
|                 |
+-----------------+
[root@study-1 ~]# ssh-copy-id root@192.168.100.52
[root@study-1 ~]# scp .ssh/id_rsa* root@192.168.100.52:/root/.ssh
[root@study-1 ~]# ssh-copy-id root@192.168.100.53
[root@study-1 ~]# scp .ssh/id_rsa* root@192.168.100.53:/root/.ssh

gitlab主機配置

下載

下載地址:https://mirror.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/

安裝

[root@study-1 ~]# yum install -y gitlab-ce-8.16.9-ce.0.el7.x86_64.rpm

配置

安裝后修改配置文件中的如下內容:

[root@study-1 ~]# vim /etc/gitlab/gitlab.rb
......
external_url 'http://gitlab.study.com'
......
[root@study-1 ~]# gitlab-ctl reconfigure
[root@study-1 ~]# gitlab-ctl start

啟動后需要登錄:http://gitlab.study.com 然后去設置用戶root的密碼這里不做介紹。之后需要進行密鑰的配置,這個比較簡單就不錯介紹

測試程序配置

這里的測試代碼是用的如下的內容:https://git.oschina.net/zchuanzhao/jeesns.git
下面是在gitlab克隆測試的代碼:


tomcat主機配置

jdk安裝

[root@study-3 ~]# tar xf jdk-7u79-linux-x64.tar.gz -C /usr/local/
[root@study-3 ~]# ln -sv /usr/local/jdk1.7.0_79 /usr/local/java
‘/usr/local/java’ -> ‘/usr/local/jdk1.7.0_79’
[root@study-3 ~]# vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/local/jdk1.7.0_79
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
[root@study-3 ~]# . /etc/profile.d/java.sh
[root@study-3 ~]# java -version
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)

tomcat安裝

[root@study-3 ~]# tar xf apache-tomcat-7.0.72.tar.gz -C /usr/local/
[root@study-3 ~]# ln -sv /usr/local/apache-tomcat-7.0.72 /usr/local/tomcat
‘/usr/local/tomcat’ -> ‘/usr/local/apache-tomcat-7.0.72’
[root@study-3 ~]# vim /etc/profile.d/tocmat.sh
export PATH=$PATH:/usr/local/tomcat/bin
[root@study-3 ~]# . /etc/profile.d/tocmat.sh
[root@study-3 ~]# catalina.sh start

MySQL安裝

[root@study-3 ~]# yum install -y perl-Data-Dumper
[root@study-3 ~]# tar xf mysql-5.6.31-linux-glibc2.5-x86_64.tar.gz -C /usr/local/
[root@study-3 ~]# ln -sv /usr/local/mysql-5.6.31-linux-glibc2.5-x86_64 /usr/local/mysql
‘/usr/local/mysql’ -> ‘/usr/local/mysql-5.6.31-linux-glibc2.5-x86_64’
[root@study-3 ~]# vim /etc/profile.d/mysql.sh
export PATH=$PATH:/usr/local/mysql/bin
[root@study-3 ~]# . /etc/profile.d/mysql.sh
[root@study-3 ~]# cd /usr/local/mysql
[root@study-3 mysql]# groupadd -r mysql
[root@study-3 mysql]# useradd -r -g mysql -M -s /sbin/nologin mysql
[root@study-3 mysql]# vim /etc/my.cnf
[mysqld]
datadir=/data/mydata
socket=/tmp/mysql.sock
symbolic-links=0
[mysqld_safe]
log-error=/data/mydata/err.log
pid-file=/var/run/mysql/mariadb.pid
!includedir /etc/my.cnf.d
[root@study-3 mysql]# mkdir -pv /data/mydata
[root@study-3 scripts]# ./scripts/mysql_install_db --datadir=/data/mydata/ --basedir=/usr/local/mysql --user=mysql
[root@study-3 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@study-3 mysql]# chmod +x /etc/init.d/mysqld
[root@study-3 mysql]# /etc/init.d/mysqld start
Starting MySQL.. SUCCESS! 

導入sql語句:
[root@study-3 ~]# mysql
mysql> create database jeesns character set utf8;
Query OK, 1 row affected (0.00 sec)
mysql> use jeesns
Database changed
mysql> source /root/jeesns.sql;

sql文件請在:http://git.oschina.net/zchuanzhao/jeesns 上面進行下載。

jenkins主機配置

下載路徑:https://pkg.jenkins.io/redhat-stable/

jdk安裝

[root@study-2 ~]# tar xf jdk-7u79-linux-x64.tar.gz -C /usr/local/
[root@study-2 ~]# ln -sv /usr/local/jdk1.7.0_79 /usr/local/java
‘/usr/local/java’ -> ‘/usr/local/jdk1.7.0_79’
[root@study-2 ~]# vim /etc/profile.d/java.sh
[root@study-2 ~]# . /etc/profile.d/java.sh
[root@study-2 ~]# chown -R root.root /usr/local/java/
[root@study-2 ~]# java -version
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)

maven安裝

[root@study-2 ~]# tar xf apache-maven-3.5.0-bin.tar.gz -C /usr/local/
[root@study-2 ~]# ln -sv /usr/local/apache-maven-3.5.0 /usr/local/maven
‘/usr/local/maven’ -> ‘/usr/local/apache-maven-3.5.0’
[root@study-2 ~]# vim /etc/profile.d/maven.sh
[root@study-2 ~]# . /etc/profile.d/maven.sh
[root@study-2 ~]# chown -R root.root /usr/local/maven/
[root@study-2 ~]# mvn -version
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-04T03:39:06+08:00)
Maven home: /usr/local/maven
Java version: 1.7.0_79, vendor: Oracle Corporation
Java home: /usr/local/jdk1.7.0_79/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-327.el7.x86_64", arch: "amd64", family: "unix"

jenkins 安裝

[root@study-2 ~]# yum install -y jenkins-2.46.2-1.1.noarch.rpm
[root@study-2 ~]# vim /etc/init.d/jenkins
···
candidates="
/usr/local/jdk1.7.0_79/bin/java  #需要添加jdk的路徑
/etc/alternatives/java
/usr/lib/jvm/java-1.8.0/bin/java
/usr/lib/jvm/jre-1.8.0/bin/java
/usr/lib/jvm/java-1.7.0/bin/java
/usr/lib/jvm/jre-1.7.0/bin/java
/usr/bin/java
"
···
[root@study-2 ~]# systemctl daemon-reload
[root@study-2 ~]# /etc/init.d/jenkins start
Starting jenkins (via systemctl):                          [  OK  ]

在瀏覽器輸入:http://192.168.100.52:8080,會提示需要登錄密碼:


第一次登錄需要的密碼是安裝自動生成的,路徑已經說明在/var/lib/jenkins/secrets/initialAdminPassword文件中。

插件安裝

實用插件
iOS專用:Xcode integration
Android專用:Gradle plugin
Gitlab插件:GitLab Plugin 和 Gitlab Hook Plugin
Git插件: Git plugin
GitBuckit插件: GitBuckit plugin
簽名證書管理插件: Credentials Plugin 和Keychains and Provisioning Profiles Management
FTP插件: Publish over FTP
腳本插件: Post-Build Script Plug-in
修改Build名稱/描述(二維碼): build-name-setter / description setter plugin
獲取倉庫提交的commit log: Git Changelog Plugin
自定義全局變量: Environment Injector Plugin
自定義郵件插件: Email Extension Plugin
獲取當前登錄用戶信息: build-user-vars-plugin
顯示代碼測試覆蓋率報表: Cobertura Plugin
來展示生成的單元測試報表,支持一切單測框架,如junit、nosetests等: Junit Plugin
其它: GIT plugin / SSH Credentials Plugin
安裝插件
點擊左側的“系統管理”----"管理插件"------“已安裝”---查找需要安裝的插件:git-client/scm-api/git/publish over SSH//ssh

jenkins設置

密鑰的配置

[root@study-2 opt]# cp /root/.ssh/* /var/lib/jenkins/.ssh/
[root@study-2 opt]# chown -R jenkins.jenkins /var/lib/jenkins/.ssh/

Global Tool Configuration 配置
點擊左側的“系統管理”----"Global Tool Configuration"
下面是jdk和git的配置:


下面是maven的配置:


Credentials 配置
點擊左側“Credentials”-->“System”-->在“Global credentials (unrestricted)”選擇“Add Credentials”-->寫上登錄gitlab上的帳號密碼。


系統設置
配置gitlab主機:


jenkins的訪問地址,自動生成可以不用配置:


Publish over SSH配置:


Configure Global Security 配置
SSH Server 端口的修改,這里使用的是默認端口:


安裝排錯

構建時控制台報錯如下:

Host key verification failed.
lost connection
Build step 'Execute shell' marked build as failure
SSH: Current build result is [FAILURE], not going to run.
Finished: FAILURE

原因:這個是由於ssh密鑰配置的問題,雖然我們在系統配置中配置了私鑰但是還是不行。原先我是用root運行jenkins,而rpm包是用普通用戶運行。所以密鑰需要拷貝至jenkins的家目錄中及:/var/lib/jenkins/.ssh/中才能使用。

構建項目

創建
點擊左側的“新建”然后如下:


源碼管理


構建
點擊“增加構建步驟”-->選擇“Execute shell”:


點擊“增加構建步驟”-->選擇“Invoke top-level Maven targets”:

配置了上面的信息后,maven會將打包的war包放在下面的這個目錄中:
/var/lib/jenkins/jobs/study/workspace/target/
/var/lib/jenkins/:jenkins的工作目錄
jobs/study/:jenkins管理study項目的目錄
workspace:表示maven等插件的工作目錄


點擊“增加構建步驟”-->選擇“Execute shell”:


構建后操作
選擇“增加構建后操作步驟”-->選擇“Send build artifacts over SSH”:


上面圖片來自:http://www.cnblogs.com/horizonli/p/5332515.html 。之后就是保存了。我們還可以在上面中繼續添加server,添加server之前需要提前做好設置。

執行構建的項目
下面就是選擇剛才創建的項目並執行“立即構建”。


構建后我們還可以在“Console Output”中查看構建執行的狀態。

下面是遠程主機執行的腳本,沒有做過多的判斷只能能夠讓其運行起來就行了。

[root@study-3 jeesns]# cat /opt/deploy/deploy.sh 
#!/bin/bash

tomcatPid=`ps aux |grep tomcat |grep -v grep|awk '{print $2}'`
kill $tomcatPid
sleep 5
rm -rf /usr/local/tomcat/webapps/jeesns*
cp /opt/deploy/jeesns/jeesns.war /usr/local/tomcat/webapps/
/usr/local/tomcat/bin/catalina.sh start
echo '部署完畢'


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM