Jnekins和gitlab建立對接 構建jenkins+gitlab+docker綜合專案
Jekins和gitlab建立交接:
安裝部署:
為了8080埠不衝突我們佈置了兩臺虛擬機器通過url-API Token SSH HTTPS等多種方式建立連線
Server1-------->gitlab實體記憶體2G
Server2--------->jenkins實體記憶體1G
1 Gitlab:安裝
GitLab 是一個用於倉庫管理系統的開源專案,使用Git作為程式碼管理工具,並在此基礎上搭建起來的web服務。安裝方法是參考GitLab在GitHub上的Wiki頁面。
yum install mailx #傳送郵件 yum install net-tools #檢視埠新增閘道器 netstat -antlp #郵件埠25 yum install gitlab-ce-11.2.0-ce.0.el7.x86_64.rpm systemctl status postfix vi /etc/gitlab/gitlab.rb #修改ip external_url 'http://172.25.64.2' gitlab-ctl reconfigure #重新編譯 gitlab-ctl restart #編輯配置檔案要重啟服務:
修改密碼:
登陸預設root使用者:
建立專案demo通過ssh和jenkins建立連線:
[[email protected] ~]# git clone [email protected]:demo/demo.git #最初我們用的是ssh建立對接因此clone程式碼是不需要密碼的
Cloning into 'demo'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done
[ [email protected] ~]# cd demo/
[[email protected] demo]# ls
README.md
[[email protected] demo]# vim README.md
# DEMO
# HELLO WORLD
[[email protected] demo]# git add README.md
[[email protected] demo]# git commit -m " update README.md "
[master 89c67ec] update README.md
1 file changed, 1 insertion(+)
[ [email protected] demo]# git remote add origin [email protected]:root/demo.git #本地上傳
[[email protected] demo]# git remote -v
origin [email protected]:demo/demo.git (fetch)
origin [email protected]:demo/demo.git (push)
[[email protected] demo]# git push origin master
Counting objects: 5, done.
Writing objects: 100% (3/3), 264 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To [email protected]:demo/demo.git
23fe147..89c67ec master -> master
2 Jenkins安裝
Jenkins是一個開源軟體專案,是基於Java開發的一種持續整合工具,用於監控持續重複的工作,旨在提供一個開放易用的軟體平臺,使軟體的持續整合變成可能。
Jenkins功能包括:
1、持續的軟體版本釋出/測試專案。
2、監控外部呼叫執行的工作。
yum install jdk-8u171-linux-x64.rpm jenkins-2.121.3-1.1.noarch.rpm
yum install git -y #安裝git
systemctl start jenkins
cat /var/lib/jenkins/secrets/initialAdminPassword #檢視初始密碼
4bc8abd16b8a46a3a3817a8770c05936
登陸jenkins:
線上安裝外掛:
建立使用者:
安裝gitlab外掛:
在控制檯建立專案test:
3 配置工程:
1>原始碼管理 git
URL:[email protected]:demo/demo.git
Credentials:root;將id_rsa公鑰貼上在認證資訊裡面
[[email protected] ~]# cd .ssh
[[email protected] .ssh]# ls
authorized_keys id_rsa id_rsa.pub known_hosts
[[email protected] .ssh]# cat id_rsa
-----BEGIN RSA PRIVATE KEY-----
2>構建觸發器輪詢SCM---->日程表 * * * * *每分鐘檢視檢測一次
步驟:
shell---->ls -a 應用儲存
在真機推送檔案到控制檯
[[email protected] .ssh]# cd
[[email protected] ~]# cd demo/
[[email protected] demo]# ls
README.md
[[email protected] demo]# vim test.txt
[[email protected] demo]# git add test.txt
[[email protected] demo]# git commit -m "add test.txt"
[master cfeb949] add test.txt
1 file changed, 1 insertion(+)
create mode 100644 test.txt
[[email protected] demo]# git push origin master
Counting objects: 4, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 278 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To [email protected]:demo/demo.git
89c67ec..cfeb949 master -> master
3> 在控制檯輸出
在jenkins上允許gitlab訪問;push events
在jenkins上建立使用者生成一個臨時的token允許gitlab連線
[[email protected] ~]# curl -X PUT --header "PRIVATE-TOKEN:6va1AMvKgGyiyjYDPazx" 'http://172.25.30.1/api/v4/application/setting?allow_local_requests_from_hooks_and_services=true'
# 允許gitlab建立api埠連線
push event:Enable SSL verification
建立
gitlab上面Integrations :
URL:http://172.25.30.2:8080/project/test
Secret Token:390ac7a2309d1b7cd047b2981526ebda(advanced generate)
test:successfully----->200
在物理機push一個hello觸發gitlab的專案就會返回給jenkins監控;只要提交就會在jenkins端看到
[[email protected] demo]# vim hello.txt
[[email protected] demo]# git add hello.txt
[[email protected] demo]# git commit -m "add hello.txt"
# On branch master
nothing to commit, working directory clean
[[email protected] demo]# git status -s
[[email protected] demo]# git push origin master
Everything up-to-date
4.構建jenkins+gitlab+docker綜合專案
git -> Dockerfile -> gitlab -> jenkins -> docker plugin -> build image -> push registry -> docker run
測試一:開啟一個nginx容器做測試,測試是否可以通過jenkins關閉nginx容器,作為綜合案例執行docker用
1. jenkins安裝docker外掛
2. 物理機上安裝docker軟體
docker-engine-17.03.1.ce-1.el7.centos.x86_64.rpm container-selinux-2.9-4.el7.noarch.rpm
3. 匯入rhel7.tar,nginx.tar
docker load -i rhel7.tar
docker load -i nginx.tar
開啟一個nginx容器
4. 注意必須給jenkins許可權執行docker
visudo
5. 建立一個dockerjob
如果在控制自臺出現如下報錯
sudo: sorry, you must have a tty to run sudo
在visudo時註釋 Default requiretty 一行
6. 點選開始構建,構建成功,檢視nginx的狀態
[[email protected] ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4338fdd3e9b3 nginx "nginx -g 'daemon ..." About a minute ago Exited (0) 10 seconds ago vm1
測試二:提交Dockerfile後自動構建映象
1. testjob在之前的測試中已經做好了即使觸發,現在新增docker構建功能
2. 修改/var/run/docker.sock的許可權為777
3. 提交Dockerfile和編譯所需檔案
[[email protected] demo]# cat Dockerfile
FROM rhel7
EXPOSE 80
COPY dvd.repo /etc/yum.repos.d/dvd.repo
RUN rpmdb --rebuilddb && yum install -y httpd && yum clean all
COPY index.html /var/www/html
CMD ["/usr/sbin/httpd","-D","FOREGROUND"]
[[email protected] demo]# cat dvd.repo
[dvd]
name=dvd
baseurl=http://172.25.30.250/source7.3
gpgcheck=0
[[email protected] demo]# cat index.html
<h1>www.westos.org</h1>
<h1>www.westos.org</h1>
(經過測試可以構建出新的映象)
[[email protected] demo]# git add Dockerfile dvd.repo index.html
[[email protected] demo]# git commit -m "add Dockerfile&dvd.repo$index.html"
[[email protected] demo]# git push origin master
4. 產生觸發#11
Jenkins構建成功
檢視映象,TAG就是我們之前定義的${BUILD_NUMBER},並且rhel7映象的版本標記為11和lastest實際上是一樣的,會自動修改標籤
[[email protected] ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
rhel7 11 709915d668ec About a minute ago 169 MB
rhel7 latest 709915d668ec About a minute ago 169 MB
5. 測試構建的映象
[[email protected] ~]# docker run -d --name vm1 rhel7
5e29d5f9ec7b693f3d72bc777f924c53be599c2ec460442659f2674f69f4fa07
[[email protected] ~]# curl 172.17.0.2 (沒有做埠對映)
成功!!!
測試三:整合dockerjob和testjob
1. dockerjob
只要testjob(即時檢測)檢測到提交了程式碼,就開始建立一個映象,dockerjob就觸發建立並且執行一個容器例項
2. 測試,修改index.html,提交觸發testjob和dockerjob
[[email protected] demo]# vim index.html
[[email protected] demo]# git add index.html
[[email protected] demo]# git commit -m "update index.html"
[master 2780ef2] update index.html
1 file changed, 2 insertions(+)
[[email protected] demo]# git push origin master
成功!!!
3. 檢視觸發結果
[[email protected] ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
rhel7 13 5d363e4a028c 8 minutes ago 185 MB
rhel7 latest 5d363e4a028c 8 minutes ago 185 MB
[[email protected] ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f64ee098da00 rhel7 "/usr/sbin/httpd -..." 8 minutes ago Up 8 minutes
綜合案例:
1. 修改dockerjob
2. 修改原生代碼提交觸發
[[email protected] demo]# vim index.html
[[email protected] demo]# git add index.html
[[email protected] demo]# git commit -m "update index.html"
[master 7134c17] update index.html
1 file changed, 3 insertions(+), 3 deletions(-)
[[email protected] demo]# git push origin master
3. 建立本地倉庫,push映象測試
[[email protected] ~]# docker load -i registry-2.3.1.tar
# 如果沒有tar包,可以用pull在網上拉取
[[email protected] ~]# docker run -d --name registry -p 5000:5000 registry:2.3.1
34fc5afff47f2f38917f010496d50e640554c6403cf77a5c5da1ff49fc91df24
[[email protected] ~]# docker tag nginx:latest localhost:5000/nginx
[[email protected] ~]# docker push localhost:5000/nginx
成功!!!
3. 新增倉庫到testjob,開啟自動push映象功能
4. 修改本地檔案,提交觸發
[[email protected] demo]# vim index.html
[[email protected] demo]# git add index.html
[[email protected] demo]# git commit -m "update index.html"
[master b19408f] update index.html
1 file changed, 4 insertions(+)
[[email protected] demo]# git push origin master
JenKins成功檢測並觸發!!!
5. 檢視映象
[[email protected] ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost:5000/rhel7 16 56f85075bee2 4 minutes ago 208 MB
localhost:5000/rhel7 latest 56f85075bee2 4 minutes ago 208 MB
6. 修改dockerjob
上傳到本地倉庫之後,會自動修改名字為localhost:5000/rhel7,所以在執行的shell裡面也要進行修改,否則rhel7是本地映象,而不是本地倉庫的映象。
至此,從編寫Dockerfile,提交檔案到gitlab上,然後gitlab被jenkins的testjob原始碼管理模板即時檢測到,然後通過jenkins的docker外掛構建已上傳到gitlab的程式碼為為一個映象,同時上傳到本地倉庫,dockerjob在testjob完成之後觸發,開始執行shell,建立一個容器例項就結束啦.
相關推薦
Jnekins和gitlab建立對接 構建jenkins+gitlab+docker綜合專案
Jekins和gitlab建立交接: 安裝部署: 為了8080埠不衝突我們佈置了兩臺虛擬機器通過url-API Token SSH HTTPS等多種方式建立連線 Server1-------->gitlab實體
Jenkins和gitlab整合自動構建
Jenkins安裝外掛 Jenkins上需要安裝如下外掛 Gitlab Hook Plugin,GitLab Plugin Job配置 在需要自動觸發的Job中 選擇Build Triggers進行如下操作, 生成的token和webhook地址稍後有用 Gitlab上配置Webhook
gitlab+jenkins+maven+docker持續集成(三)——自動構建
jenkins gitlab maven 具體原理圖,如下,構建項目配置,這裏略過,我們直接配置gitlab的自動構建通過webhook可以實現自動構建,當然jenkins的強大之處在於插件,我們先安裝插件Jenkins-->插件管理Gitlab Hook Plugin GitLab Plu
gitlab+jenkins+maven+docker持續集成(五)——Maven 項目構建配置
jenkins gitlab maven 首先,安裝插件Maven Integration plugin接下來我們配置Global Tool Configuration前提先在系統裏安裝好jdk, maven,創建maven項目其它配置大同小異,主要說明下這步pom.xml 我這裏的是在項目中,如
gitlab+jenkins+maven+docker持續集成(十)——參數化構建過程之多環境tag構建
gitlab+jenkins+maven+docker持續集成(十)——參數化構建過程之多環境tag構建同一個項目,要構建到不同的環境,而且對應的分支或tag也不相同,這裏就要用到jenkins的參數化構建過程 中的Git Parameter和Choice Parameter, 先看下效果實現過程構建過程:G
gitlab提交程式碼自動觸發webhook構建jenkins專案
1:環境配置 Debian 3.16.43 jenkins2.121.12:描述 前端開發人員想程式碼提交到gitlab然後自
Jenkins Pipeline+Maven+Gitlab持續整合構建
1.以下全是個人理解,此文全是在實際工作環境中實現,如果您是想看著這篇部落格去練習,可能有些環境您沒法搭建(maven庫,編譯順序),得問問一個搞開發的朋友,開發得提供些東西,或者,您可以通過此文件,學習到pipeline指令碼的知識,您可以去除掉用mvn build這一項,其他的
Jenkins+Maven+Gitlab+Tomcat 自動化構建打包、部署 tomcat企業級Web應用伺服器配置與會話保持
一、環境需求 本帖針對的是Linux環境,Windows或其他系統也可借鑑。具體只講述Jenkins配置以及整個流程的實現。 1.JDK(或JRE)及Java環境變數配置,我用的是JDK1.8.0_144,網上帖子也很多,不贅述。 2.Jenkins 持續整合和持續交付專
gitlab實現webhook觸發jenkins 自動,構建,測試,push webhook構子 總結
ref 安裝 harbor 14. 允許 安全管理 rbo 觸發器 代碼 最新一直在學習 工作 + 學習 去掉 90% 所以blog 一直沒更 真是很不好! exsi ceph gitlab jenkins harbor k8s docker-compose ap
使用GitLab、Jenkins、Docker建立快速持續化整合交付部署方案(三)
上一章節中我們完成了對Docker的使用和部署。 本文中我們將完成 GitLab → Jenkins → Docker 的環境,並完成基於GitLab、Jenkins、Docker的面向Web開發的快速部署方案。 我們最終得到的結果,將是部署人員只在部署環境下只敲一句命令,
使用GitLab、Jenkins、Docker建立快速持續化整合交付部署方案(二)
上一文中我們完成了基礎環境的安裝。 本文將要學習 Docker Image 的自定義,及 使用Docker Compose進行環境部署的方法。 文章索引 GitLab、Jenkins、Docker 初始環境安裝 製作 Docker映象 及 Docker Co
使用GitLab、Jenkins、Docker建立快速持續化整合交付部署方案(一)
摘要 本系列文章將要完成的: 安裝GitLab、Jenkins、Docker等一系列基礎環境 建立自己的 Docker Registry,私有的Docker映象服務,用於儲存我們自己的Docker映象倉庫(Repository) 使用GitLab進行程式碼管理,並聯動Jen
Jenkins 與 GitLab 的自動化構建
Jenkins 是一個功能強大的應用程式,允許持續整合和持續交付專案,無論用的是什麼平臺。持續整合是個簡單重複勞動,人來操作費時費力,使用自動化構建工具完成是最好不過的了。整合 Jenkins 可以用於一些測試和部署技術,需要開發人員定期整合程式碼到共享儲存庫。持續整合要求開
linux(CentOS)下Jenkins+GitLab+Maven+Tomcat多環境自動釋出和部署
環境:jenkins需要jdk1.8以上、需要maven3.2.5以上、需要git2.6.2以上 1、安裝jdk: 解壓:tar -zxvf jdk-8u181-linux-x64.tar.gz 配置環境變數:vim /etc/profile 在尾部追加(
Jenkins+Gitlab+Maven+Shell 進行Docker微服務項目自動化構建
logs try 分支 業務 print 服務 風格 acf jenkin * 環境:CentOS7代碼倉庫:Gitlab持續集成代碼更新:Jenkins構建打包:Maven鏡像自動交付腳本:Shell 基礎環境軟件安裝:Gitlab、Jenkins、Maven配置,安裝參
【06】Jenkins:Gitlab 自動觸發構建以及釘釘通知
寫在前面的話 在某些時候,我們希望能夠實現這樣一個功能,當用戶提交東西到 gitlab 上的時候,希望它能夠自動觸發構建,釋出到我們需要的環境。 目前我們內部有做類似的需求:產品提交原型到 gitlab,然後 gitlab 分支變動觸發 Jenkins 構建,將最新的產品原型釋出到 ngi
Jenkins+GitLab
real tro token webhooks 修改端口 檢查 提示 pan jenkins 思路 1、使用jenkins+gitlab,實現git倉庫有push時,立即觸發jenkins的job,進行構建。 2、jenkins和gitlab的安裝配置直接參考官
gitlab+jenkins+maven+docker持續集成(二)——maven安裝配置
jenkins gitlab maven 建議安裝3.3.9版本,最新版本貌似有點問題下載地址:#wget http://apache.fayea.com/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz解壓# tar -zxvf
gitlab+jenkins+maven+docker持續集成(四)——Extended E-mail Notification配置
gitlab jenkins maven 構建後進行郵件通知,這裏我們用Extended E-mail Notification系統管理-->Extended E-mail Notification在這裏subject、content為defalut 模板,我們暫不做配置,我這裏按項目進行配
gitlab+jenkins+maven+docker持續集成(六)——.Jenkins獲取git tags代碼進行持續集成
gitlab+jenkins+maven+docker持續集成(六)——.jenkins獲取git tags代碼進行持續集成GitFlow的工作流如上圖所示,在開發工作中,不同的代碼分支對應著項目或產品的不同形態,圍繞特定形態的人力投入也不相同。隨著時間的推進,我們在 開發分支 中合並產品的功能實現,產品的功