jenkins部署記錄

環境規劃

主機分配html

  • 192.168.2.139 : gitlab
  • 192.168.2.141 : jenkins
  • 192.168.2.142 : haproxy01
  • 192.168.2.143 :haproxy02
  • 192.168.2.144 :tomcat01
  • 192.168.2.145 : tomcat02
    各節點環境配置
    安裝一些使用的工具包
[root@ansible ~]# ansible all -m shell -a 'yum install vim gcc gcc-c++ wget net-tools lrzsz iotop lsof iotop bash-completion -y'
[root@ansible ~]# ansible all -m shell -a 'yum install curl policycoreutils openssh-server openssh-clients postfix -y'

安裝epel源java

ansible all -m shell -a 'wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo'

禁用並關閉防火牆linux

[root@ansible ~]# ansible all -m shell -a 'systemctl disable firewalld'
[root@ansible ~]# ansible all -m shell -a 'systemctl stop firewalld'

禁用selinuxnginx

[root@ansible ~]# ansible all -m shell -a 'sed -i 」/SELINUX/s/enforcing/disabled/「 /etc/selinux/config'
[root@ansible ~]# ansible all -m shell -a 'setenforce 0'

安裝gitlab服務

下載gitlab包:百度雲盤下載:https://pan.baidu.com/s/1OrYy3Gx8mXcezH_JDubU-A 密碼:sk73
下載的包文件存放在/usr/local/src目錄下c++

  • 安裝
[root@gitlab src]# yum localinstall gitlab-ce-8.13.5-ce.0.el7.x86_64.rpm -y
  • 修改配置文件/etc/gitlab/gitlab.rb
[root@gitlab src]# vim /etc/gitlab/gitlab.rb
external_url 'http://192.168.2.139' #訪問地址:能夠寫主機名或ip地址
#配置郵件通知(添加帳號通知等,能夠不寫)
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "mail_name@163.com"
gitlab_rails['smtp_password'] = "password"
gitlab_rails['smtp_domain'] = "163.com"
gitlab_rails['smtp_authentication'] = :login
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
gitlab_rails['gitlab_email_from'] = "mail_name@163.com"
user["git_user_email"] = "mail_name@163.com"
  • 修改配置文件後執行重載指令
    重載指令執行須要一段時間
[root@gitlab ~]# gitlab-ctl reconfigure

上面的指令執行完成後能夠使用gitlab-ctl status指令查看git依賴的服務git

[root@gitlab ~]# gitlab-ctl status
run: gitlab-workhorse: (pid 3468) 37s; run: log: (pid 3295) 63s
run: logrotate: (pid 3382) 55s; run: log: (pid 3381) 55s
run: nginx: (pid 3342) 61s; run: log: (pid 3341) 61s
run: postgresql: (pid 3027) 112s; run: log: (pid 3026) 112s
run: redis: (pid 2890) 118s; run: log: (pid 2889) 118s
run: sidekiq: (pid 3250) 69s; run: log: (pid 3249) 69s
run: unicorn: (pid 3195) 71s; run: log: (pid 3194) 71s

此時就能夠使用瀏覽器web界面來訪問git了,使用gitlab主機地址直接訪問便可
登陸前先設置密碼

登陸後,須要將默認的用戶註冊功能取消,由於用戶是由管理員定義分配的。

點擊右上角扳手圖標進入下面的界面,建立用戶設置密碼,用戶組,項目等

建立一個測試項目,用在本地測試
web

本地安裝git客戶端

[root@gitlab ~]# yum install git -y

本地測試版本管理

  • 將測試項目clone到本地的當前目錄下
[root@gitlab testdir]# git clone http://192.168.2.139/myweb/testweb.git
Cloning into 'testweb'...
Username for 'http://192.168.2.139': yufu
Password for 'http://yufu@192.168.2.139':
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
  • 查看內容
[root@gitlab testdir]# ls
testweb
[root@gitlab testdir]# cat testweb/README.md
test111
  • 修改內容後提交
    在原來的文件中添加了一行新內容
    克隆的文件修改後提交前,要將文件添加git add到本地,而且提交git commit聲明操做,而後在將最新文件推送到git服務端上
[root@gitlab testweb]# git add README.md
[root@gitlab testweb]# git commit -m "add new line" #提示錯誤:提示信息給出瞭解決辦法
Run
  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.

根據提示執行指令redis

[root@gitlab testweb]# git config --global user.email "136423119@qq.com"
[root@gitlab testweb]# git config --global user.name "yufu"

從新提交sql

[root@gitlab testweb]# git commit -m "add new line"
[master c62845d] add new line
 1 file changed, 2 insertions(+), 1 deletion(-)

執行git pushshell

[root@gitlab testweb]# git push
#須要驗證用戶密碼
Username for 'http://192.168.2.139': yufu
Password for 'http://yufu@192.168.2.139':
Counting objects: 5, done.
Writing objects: 100% (3/3), 250 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To http://192.168.2.139/myweb/testweb.git
   cc5ab3e..c62845d master -> master

此時到git上查看文件內容已經發生了更改
本地修改內容執行commit提交後,並無真正條到git服務端,只有執行git push後才真正同步

其餘經常使用git 指令

git config --global user.name 「name「 #設置全局用戶名,能夠非真實帳戶
git config --global user.email xxx@xx.com #設置全局郵箱,能夠非真實郵箱
git config --global –list #列出用戶全局設置
git add index.html #添加文件到暫存區
git commit -m 「11「 #提交文件到工做區
git status #查看工做區的狀態
git push #提交代碼到服務器
git pull #獲取代碼到本地
git log #查看操做日誌
vim .gitignore #定義忽略文件
git reset --hard HEAD^ #git版本回滾, HEAD爲當前版本,加一個^爲上一個,^^爲上上一個版本
git reflog # #獲取每次提交的ID,能夠使用--hard根據提交的ID進行版本回退
git reset --hard 5ae4b06 #回退到指定id的版本
# git branch #查看當前所處的分支
git checkout -- file #從服務器更新某個那文件覆蓋本地的文件

安裝Jenkins

jenkins須要依賴java環境,所以要安裝jdk,從本地上傳安裝包進行安裝,jenkins服務上的jdk能夠直接使用rpm包安裝
jenkins:https://pan.baidu.com/s/1lEBWD9OKZEZiOAjn4ZM57A 密碼:up81
JDK:https://pan.baidu.com/s/1KA99fCN7e7Sx9IfBq8c7aA 密碼:3r3e

[root@jenkins ~]# yum install jenkins-2.27-1.1.noarch.rpm jdk-8u111-linux-x64.rpm -y

jenkins安裝後的配置文件在/etc/sysconfig/jenkins

- 啓動jenkins

[root@jenkins ~]# systemctl start jenkins

jenkins啓動時會建立一個用戶和密碼,在日誌中能夠找到,用戶使用該信息登陸

  • 查看日誌中的信息以下:
[root@jenkins ~]# cat /var/log/jenkins/jenkins.log
Jenkins initial setup is required. An admin user has been created and a password gen![](http://gudaoyufu.com/wp-content/uploads/2018/08/clonetest.png)erated.
Please use the following password to proceed to installation:
ea02cbe6a0364330942bed70e7d8198f
This may also be found at: /var/lib/jenkins/secrets/initialAdminPassword

jenkins服務啓動後就能夠訪問web頁面了,使用剛纔日誌裏面的密碼進行登陸 使用ip:8080 進行登陸

確認後會進入聯網狀態,jenkins是基於插件方式工做的,安裝時要安裝不少插件,有兩種安裝方式:一種是自定義插件安裝,一種是使用默認插件安裝,這裏選擇使用默認的安裝方式,一般在安裝插件過程當中會有不少插件安裝失敗,能夠在後面將安裝失敗的插件導入進來,或者安裝後進行選擇安裝插件也能夠。

安裝插件的過程比較長,耐心等待
【注意:若是界面一直停留在上圖中,那麼是卡住了,從新開個頁面再訪問便可,從新訪問後選擇跳過繼續下面的操做】
從新訪問後的頁面以下:選擇跳過繼續配置


設置管理員用戶名密碼等信息

其餘信息先能夠跳過,就能夠進入到配置界面了

解決插件安裝失敗問題

有不少插件沒有安裝成功,能夠將相應的插件下載到本地,而後導入到jenkins插件目錄
jenkins安裝插件的目錄在/var/lib/jenkins/plugins下;
下載插件:https://pan.baidu.com/s/1_pMrHzThiqZ93x9K6z5_Fw 密碼:sxcu
將插件壓縮包傳到jenkins的插件目錄解壓,並修改屬主屬組

[root@jenkins plugins]# tar xvf jenkins_plugin.tar.gz
[root@jenkins plugins]# chown -R jenkins:jenkins ./
[root@jenkins plugins]# mv jenkins_plugin.tar.gz /opt/ #移走壓縮包
  • 重啓jenkins服務
[root@jenkins plugins]# systemctl restart jenkins

導入插件後可能還會有少數插件不可用,若是使用不到相應功能能夠不用安裝,若是未來須要使用新的插件能夠經過從網上下載後導入的方式進行,也能夠在線安裝。
插件下載地址:http://updates.jenkins-ci.org/download/plugins/

gitlab和gitlab Hook Plugin插件

  • 確認gitlab和gitlab Hook Plugin兩個關鍵插件是否安裝,沒有安裝則能夠在線安裝
    這兩個插件很重要,gitlab是從gitlab服務器端獲取代碼的插件,gitlab Hook Plugin 是觸發jenkins構建項目的插件,若是沒有這個插件,那麼未經測試的代碼直接就發佈到生產環境中去了

配置jenkins和gitlab關聯

jenkins要從gitlab上獲取代碼,所以二者之間要基於key認證,將jenkins生成的公鑰配置在gitlab中,gitalb指定某個用戶對某個項目有操做權限。

  • 在gitlab上新建一個用戶xiaoming,他屬於myweb組

    後面在jenkins上要使用xiaoming這個用戶來進行測試發佈
  • jenkins上生成祕鑰,將公鑰複製到gitlab中的myweb項目中
[root@jenkins ~]# cat ~/.ssh/id_rsa.pub
#複製不要有空格,不要有轉行符,要寫在一行,用記事本編輯
ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQCjcEidAzdo3tdOXzVFyhLz2OH8q5WnIA3Rp1tWq/EGWHTcyxfw2orL+hRI3iJ41UoGZ2rvu/giglexL1uFyfIDxrSEarqTpnB6dfD6eT+n5sBRRDxdhHmmLxdCocpKeTYa/HaqTxibxiCgo1J9806SSVECAs0PJrjeLEETTpGAhbiyrpOkk1eWDfHa3U/qyaghyIaWNY0nSr5Q61/7OQ53XkYdQmCo5Q6ITmZvV0jCNvpeDNK+yvF83N2sdy/tV7b1hnMi7W0OLzFlrwOcuWQdDZEYdWRqO8R0XUZKBZTyp9hLivqBkbaaFzsPCubjDD/fPYelrznFmAH/4WxGOocn root@jenkins
  • 在gitlab的project中,找到Deploy keys,將上面jenkins的公鑰加入到上面
  • jenkins測試用ssh的方式向gitlab拉取文件
[root@jenkins mnt]# git clone git@192.168.2.139:myweb/testweb.git
Cloning into 'testweb'...
The authenticity of host '192.168.2.139 (192.168.2.139)' can't be established.
ECDSA key fingerprint is SHA256:KEONIDsIh3vnCDC9A8xDVvqr6QvSEdfCSEal1qaP95s.
ECDSA key fingerprint is MD5:f7:bc:00:eb:6e:fe:9e:c2:8b:0a:98:d3:47:1c:9b:4c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.2.139' (ECDSA) to the list of known hosts.
remote: Counting objects: 12, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 12 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (12/12), done.
[root@jenkins mnt]# ls
testweb
#測試正常後將該目錄刪除了

jenkins經過配置用戶拉取代碼默認會保存在/var/lib/jenkins/workspace/目錄下

  • 將jenkins私鑰配置到jenkins的web服務中,(gitlab放公鑰,jenkins放私鑰)

    進入以後點擊「Add Credentials」添加私鑰:以下圖,點擊OK保存(私鑰太長不貼出來了)

    至此jenkins與gitlab關聯和配置就作好了,接下來就能夠在jenkins中構建項目了,一般咱們構建一個自由風格的項目

    項目的構建工做主要就在這裏配置,有不少配置項
    配置源碼管理,指定從哪裏拉取代碼

    保存後返回首頁就能夠看到剛纔建立的項目,能夠構建項目測試看一下

    構建完後能夠查看構建過程當中的信息狀態,看看是構建成功仍是失敗

    能夠看到輸出信息中最後一行提示爲seccess

    在jenkins服務端查看拉取的內容
[root@jenkins ~]# cd /var/lib/jenkins/workspace/test-demo
[root@jenkins test-demo]# ls
README.md
相關文章
相關標籤/搜索