gitlab+jenkins+tomcat war包部署(此文有新版本)

對本文進行格式整理,url:html

https://www.cnblogs.com/huandada/p/9969234.htmllinux

 

整個項目的框架爲:git

1.gitlab的安裝(Centos7)web

新建/etc/yum.repos.d/gitlab-ce.repo,添加如下內容:vim

[gitlab-ce]
name=gitlab-ce
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key瀏覽器

安裝步驟:tomcat

# 安裝依賴包 bash

yum install curl openssh-server openssh-clients postfix cronie服務器

# 啓動 postfix 郵件服務app

service postfix start

# 檢查 postfix

chkconfig postfix on

# 安裝 GitLab 社區版 ,安裝git,使其支持git命令

yum install gitlab-ce git

# 初始化 GitLab 

gitlab-ctl reconfigure

修改 host

添加訪問的 host,修改/etc/gitlab/gitlab.rb的external_url

external_url 'http://git.home.com'

vi /etc/hosts,添加 host 映射

127.0.0.1 git.home.com

每次修改/etc/gitlab/gitlab.rb,都要運行如下命令,讓配置生效

   gitlab-ctl reconfigure

啓動gitlab

   gitlab-ctl start

配置本機的 host,如:192.168.113.59 git.home.com。最後,在瀏覽器打開網址http://git.home.com,登錄。默認管理員:
  用戶名: root
  密碼: xxxxxx

安裝中文語言包(漢化)

對於英文還過得去的同窗,能夠不用漢化,下載最新的漢化包,並查看版本,漢化包版本要與gitlab-ce包版本一致:

  git clone https://gitlab.com/xhang/gitlab.git 

     cat gitlab/VERSION

            10.6.1

也可指定版本下載,對於剛出來的一些新版本的gitlab-ce包,可能沒有同版本漢化包,過一段時間就會有了:

    git clone https://gitlab.com/xhang/gitlab.git  -b  v10.6.1-zh

先關閉gitlab:

gitlab-ctl stop

下載的文件夾內容複製到gitlab目錄下

cp -r -f ./gitlab/* /opt/gitlab/embedded/service/gitlab-rails/

複製過程當中會出現如下提示,不用管

cp: cannot overwrite non-directory ‘/opt/gitlab/embedded/service/gitlab-rails/log’ with directory ‘./gitlab/log’
cp: cannot overwrite non-directory ‘/opt/gitlab/embedded/service/gitlab-rails/tmp’ with directory ‘./gitlab/tmp’

從新加載配置,啓動gitlab

gitlab-ctl reconfigure   

gitlab-ctl restart

再次訪問gitlabweb界面即變爲中文。

gitlab的使用:

接下來配置密鑰,實現本地工做機git pull/push gitlab的項目:
在本地工做機上生成密鑰,將公鑰複製到gitlab
 ssh-key
 cat ~/.ssh/id_rsa.pub 

回到剛纔gitlab新建項目裏,複製該項目地址

 

在本地工做機上,配置域名解析  /etc/hosts,將gitlab裏的test 1項目克隆到本地:

172.19.0.111 gitlab.home.com

mkdir test_repo
cd test_repo/
git init        #初始化倉庫
git clone git@gitlab.home.com:root/test1.git

因爲我以前本地hosts中配置的是另外一臺gitlab的相同域名不一樣ip,在known_hosts 文件中有屬於 該hostname 的密鑰,git clone會報錯

在該項目中建立新的文件aaa,並同步到gitlab,可在gitlab的web界面查看

cd  test1

echo aaa>aaa
git add ./*
git commit -m "提交代碼"
git push

刪除該項目中的文件aaa,並同步到gitlab

git rm -r --cached aaa
git commit -m 'delete'
git push  

git pull 能夠從gitlab中將文件拉到本地

2.jenkins的安裝 (version 2.73.3)

安裝好jdk8與tomcat,下載jenkins.war包,放在tomcat的webapp下,重啓tomcat服務。配置好防火牆和selinux。訪問jenkins的web界面 http://ip:8080/jenkins,cat該passwd文件,填寫到下面的框中。

jenkins ssh-keygen生成密鑰,將公鑰添加到gitlabssh key中。
安裝插件,install suggested plugins,後邊還有額外安裝一些插件.添加用戶名密碼,管理員爲admin

安裝插件 Maven Integration , Publish Over SSH,Gitlab

此時沒有maven項目,須要安裝插件Maven Integration ,同時安裝Gitlab與遠程鏈接tomcat服務器 的插件Publish Over SSH

系統管理 ---> 管理插件 ---> 可選插件 ---> 過濾選中直接安裝

 

jenkins安裝jdk與maven,安裝完在server命令行/root/.jenkins/tools/目錄下能夠看到jdk與maven的兩個安裝目錄

 

 

 

jenkinsweb界面報錯Your container doesn’t use UTF-8 to decode URLs. If you use non-ASCII ....
tomcat的字符問題,在tomcat配置文件server.xml中添加URIEncoding="UTF-8",並重啓tomcat。有些版本的tomcat不會報錯。

 

配置jenkins獲取gitlab的密鑰

jenkins服務器生成密鑰

ssh-keygen

cat   ~/.ssh/id_rsa.pub

複製公鑰粘貼到gtilab 的SSH keys中

gitlab的域名解析加到jenkins的/etc/hosts中。若後邊的url涉及到域名時,改成ip,也能夠不加該域名的解析。

 

配置Gitlab插件
打開gitlab右上角綠色圖標設置 ---> 右邊圖標access tokens --->建立我的訪問令牌

複製訪問令牌待用

 

jenkins 添加gitlab的訪問令牌

 

 

Connection name 隨便起名 ---> Gitlab host URL gitlab的ip --->  Credentials 選擇Gitlab API token ---> Add ---> jenkins配置加下第二圖

最後測試鏈接一下,是否成功

 

配置publish over SSH 插件,remote directory爲war包在tomcat服務器中須要放置的路徑,廣泛是放在tomcat的webapp下,我這裏放到自定義的目錄下,後邊會配置腳本進行後續操做。

 

Passphrase:密碼(key的密碼,若是你設置了,不然不填)

 

Path to key:key文件(私鑰)的路徑 

 

Key:將私鑰複製到這個框中

 

Disable exec:禁止運行命令

 

 

 配置jenkins免密登陸tomcat服務器

tomcat服務器:

ssh-keygen

將~/.ssh/id_rsa.pub放到jenkins的~/.ssh/下,並更名爲authorized_keys

 

下面咱們就新建一個maven項目,點擊左下角ok

 

點進這個test項目 ---> 配置

gitlab中該項目的地址粘貼過來到 Repository URL

這裏中間出現紅色字體的報錯,排錯思路:

1.先測試jenkins與gitlab連通沒,在jenkins命令git clone 項目url 是否成功

2.確認訪問令牌配好沒

3.域名解析有沒有

此處我把域名改成ip就行了,這裏的認證方式咱們選用gitlab用戶名密碼的方式,也有填密鑰路徑的方式,此處就很少介紹了。下面的*/master默認對master分支進行構建。

構建觸發器,此處選擇webhook的方式。複製webhook url,待用

將剛複製的url放到gitlab中,點擊下面的 「 增長web鉤子 」

 

此處構建觸發器還有其餘方式Poll SCM    H/1 * * * * 每隔1分鐘覈對一次gitlab是否更新,如有更新就當即構建。

 

構建環境不用管

Goals   maven的打包命令

生成war包須要讀取pom.xml裏的配置,root pom.xml默認爲該項目web界面裏工做空間下的相對路徑,即server裏/root/.jenkins/workspace/項目名/pom.xml。這裏就須要gitlab裏的代碼直接在該項目下,前面沒有多餘的目錄。像這樣:

而不是這樣,項目下還有一層 目錄。在jenkins上配置pom.xml時,把這個目錄加在pom.xml文件前面也是不能識別該路徑的:

 

設置構建後的郵件通知

 構建後須要將war包傳到tomcat服務器

source files爲相對於工做空間的war包位置,構建完默認在target下;

remove prefix 去掉war包以前的路徑

exec command 部署好war包後,在tomcat服務器中要執行的命令,此處我寫成一個腳本在tomcat服務器中。

 

cat  change_war.sh

#! bin/bash

#cd /usr/share/tomcat/bin && ./shutdown.sh
systemctl stop tomcat
cd /usr/share/tomcat/webapps
rm -rf appstore.war appstore
mv /usr/share/war/appstore.war /usr/share/tomcat/webapps/ &&
systemctl start tomcat
#cd /usr/share/tomcat/bin && ./start.sh

 

在jenkins中配置maven的home:

 

 

 在maven的配置文件中修改私服的服務器地址:

vim  /root/.jenkins/tools/hudson.tasks.Maven_MavenInstallation/Maven3/conf/settings.xml

 

配置完就能夠構建了。

通常第一次構建會報錯,查看控制檯輸出,找報錯緣由。

因爲部署很複雜,過程過必定會報錯,慢慢查緣由,必定只有把整個過程理解後,纔會部署成功。這是個人心得。

 

本文參考文章連接:

相關文章
相關標籤/搜索