須要安裝三個東西docker、jenkins、gitlabhtml
規劃:java
IP | 安裝軟件 | 配置 |
192.168.15.100 | docker+jenkins | 最少2核8g、4核16g最好 |
192.168.15.101 | docker+gitlab | 至少2核4g、2核8g最好(gitlab很佔內存,配置低了每次部署會很慢) |
下面就是安裝流程git
第一步:在192.168.15.100和192.168.15.101安裝dockerweb
docker安裝這裏就不說了,請參考以下地址進行安裝:docker
http://www.javashuo.com/article/p-aptrhsrk-dp.html瀏覽器
第二步:192.168.15.100中安裝jenkinsbash
注意:首先jenkins進行的大改,請使用https://hub.docker.com/r/jenkins/jenkins這個地址的響應標籤服務器
這個地址是docker已經棄用了的https://hub.docker.com/_/jenkins,請不要使用這個地址app
版本參考地址:https://hub.docker.com/r/jenkins/jenkins docker pull jenkins/jenkins:lts docker run -itd -p 9998:8080 -p 9997:50000 --name jenkins --privileged=true -v /app/docker/jenkins:/var/jenkins_home jjenkins/jenkins:lts docker ps #發現沒有啓動起來 docker ps -a
查看日誌: docker logs 容器名稱或容器id,我這裏容器的名稱叫jenkinsless
docker logs jenkins
出現錯誤
網上查找了不少資料
以下解決方案
建立jenkins用戶,默認建立jenkins組 useradd jenkins 設置掛載文件用戶名和組均爲jenkins sudo chown -R jenkins:jenkins /app/docker/jenkins 移除以前的容器 docker rm jenkins 從新建立容器 docker run -itd -p 9998:8080 -p 9997:50000 --name jenkins --privileged=true -v /app/docker/jenkins:/var/jenkins_home jenkins/jenkins:lts
瀏覽器訪問:192.168.15.100:9998
而後輸入密碼,密碼查看
docker logs -f jenkins
而後就一直等,安裝插件,安裝完成後再進行以下配置
二、 Jenkins全局工具配置 本項目使用Jenkins須要配置Jdk1.八、Git、maven
一、Maven安裝: 能夠採用「自動安裝」,在上圖中勾選自動安裝,選擇maven版本便可。 本教程將maven程序目錄拷貝到宿主機/home下,在上圖配置便可。
二、Jdk安裝配置 與maven安裝相同,也能夠採用自動安裝或手動安裝的方法。(進入到jenkins容器中 echo $JAVA_HOME 獲取java環境安裝地址)
三、Git安裝方法同上 git安裝完成配置以下圖:
3 SSH Remote Hosts
remote hosts是Jenkins提供的一種遠程訪問ssh服務器的方法,經過以下步驟測試此功能:
一、安裝插件SSH plugin 從可選插件中選擇SSH Plugin進行安裝
安裝成功可在已安裝插件中查詢:
二、配置憑證 配置遠程SSH服務的帳號和密碼:
三、配置SSH sites 配置遠程ssh服務器的ip和端口,並選擇第2步設置憑證
四、在任務構建中編寫腳本 選擇第3步定義的SSH site,並在command輸入腳本。 配置完成能夠測試是否能夠遠程執行SSH指令
第三步:在192.168.15.101中安裝gitlab
普及知識:gitlab分爲ee、ce,分別指企業版、社區版,推薦使用企業版,緣由,企業版能使用社區版的所有功能,若是之後大家公司須要使用企業版,直接支付錢就能夠開通了,其餘都不變,若是是使用社區版就要遷移到企業版,因此推薦使用
啓動並安裝容器
docker run -d -p 9443:443 -p 9999:80 -p 9022:22 --name gitlab --restart=unless-stopped -v /var/lib/docker/volumes/gitlab-data/etc:/etc/gitlab -v /var/lib/docker/volumes/gitlab-data/log:/var/log/gitlab -v /var/lib/docker/volumes/gitlab-data/data:/var/opt/gitlab gitlab/gitlab-ee:11.11.1-ee.0
修改host文件(這個必須修host,否則拉取項目拉取不到,會提示一串數字不能解析host)
vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
將host改爲ip地址192.168.15.101
而後訪問:192.168.15.101:9999,能正常訪問說明成功了(第一次訪問須要設置密碼,那個設置密碼就是設置root用戶的密碼,默認會有root這個帳戶)
第四步:也是最重要的一步
一、在Jenkins上安裝好GitLab Plugin和Gitlab Hook Plugin
二、在gitLab上加上ssh public key
在裝Jenkins的機器上,用jenkins用戶或者root用戶生成ssh密鑰對。若是jenkins是分master和slave的,那就在master上生成密鑰對,若是jenkins是運行在docker裏的,那就在docker裏的jenkins master上生成密鑰對。
生成密鑰對:ssh-keygen -t rsa (記得先切換到相用戶下root or jenkins,具體操做百度or Google不少),生成的密鑰對在對用用戶下的.ssh文件夾下,好比root用戶,路徑就是/root/.ssh
進入jenkins容器中 docker exec -it jenkins /bin/bash 生產密鑰對 ssh-keygen -t rsa -C "1010621868@qq.com" 查看公鑰內容 cat ~/.ssh/id_rsa.pub
而後將文件id_rsa.pub裏面的內容copy到gitLab上, gitLab-->setting-->SSH Keys
3.jenkins中 配置Job觸發
在Job裏的configuration裏面,勾選Build when a change is pushed to GitLab. GitLab CI Service URL: http://147.128.64.212:8080/project/TEST_RC13_AA_TRIGGER,具體裏面的配置都採用默認的,後面按需修改。
配置Job
四、在GitLab添加Webhood
步驟3中,紅框框起來的url地址copy出來,而後Paste到GitLab上的對應項目上,GitLab-->project-->NSI-Ansible-->Settings-->Integrations
配置GitLab
把url複製到GitLab上,而後點擊Add webhook按鈕。生成webhook後點擊test能夠測試,返回Hook executed successfully: HTTP 200就表示成功了,同時Jenkins job也會build起來。
test webhook
若是是這樣基本完成了,但test的時候有可能返回的是Hook executed successfully but returned HTTP 403,這是沒有權限,須要把Jenkins-->Jenkins Manages-->Configure System,找到GitLab配置,去掉勾選。
去掉勾選
五、配置branch
這樣子,只有有人push code到GitLab上,我Jenkins的job都會Run,但這有一個問題,這裏沒能區分Branch,不管提交到哪一個branch的code都會觸發Jenkins Job,這確定不是咱們但願的,因此還須要在Jenkins上配置。Jenkins-->Job-->configure-->Build Triggers,而後點擊圖中的紅框,配置更多選項。
點擊Advance
配置Branch
而後在Allowed branches中,選擇filter branches by name,在include中填寫你要的branch名稱,這樣就能夠按branch觸發。固然還能看到能夠用正則來匹配branch,按需求來就好。