企業正規docker+jenkins+gitlab自動化部署(以前被坑了好久,才繞出來)

 

須要安裝三個東西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 PluginGitlab 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,按需求來就好。

相關文章
相關標籤/搜索