日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Docker Gitlab+Jenkins+Harbor構建持久化平臺操作

瀏覽:33日期:2024-11-14 13:37:14

CI/CD概述

Docker Gitlab+Jenkins+Harbor構建持久化平臺操作

CI工作流程設計

Docker Gitlab+Jenkins+Harbor構建持久化平臺操作

Git 代碼版本管理系統 只能命令行去管理git

Gitlab 基于git做了圖形管理頁面,企業使用gitlab做私有的代碼管理倉庫

Github 公共代碼管理倉庫

搭建gitlab

搭建gitlab先創建工作目錄,因為有些數據需要持久化

[root@www ~]# mkdir -p /gitlab[root@www ~]# cd /gitlab/ docker run -d --name gitlab -p 8443:443 -p 9999:80 -p 9998:22 -v /gitlab/config:/etc/gitlab -v /gitlab/logs:/var/log/gitlab -v /gitlab/data:/var/opt/gitlab -v /etc/localtime:/etc/localtime --restart=always lizhenliang/gitlab-ce-zh:latest

9999是web端口 8443web htpps端口 9998 ssh端口

將容器化的數據持久化到本地宿主機,這個鏡像是早期漢化后構建的,默認官方的鏡像是英文的,這個是英文的,這個鏡像比較大差不多1G,包括數據庫和消息隊列,里面封裝的內容很多。

[root@www gitlab]# docker logs 3396d5ccc518 - execute /opt/gitlab/bin/gitlab-ctl start postgresql+psql_host=’/var/opt/gitlab/postgresql’

通過日志可以查看到有哪些組件如postgresql

初次訪問的時候可能有點慢,因為組件較多,可能要等待3-5分鐘

Docker Gitlab+Jenkins+Harbor構建持久化平臺操作

出現這個頁面說明gitlab服務是啟動起來了,可能里面其他組件還沒啟動成功。這里最好給到物理內存4G,如果只有2G是不能正常啟動的,差不多八分鐘之后如下所示

Docker Gitlab+Jenkins+Harbor構建持久化平臺操作

用戶名默認是root這里需要設置新密碼,新密碼最少8位可以設置為qwerasdf,然后更新完密碼就可以使用root用戶名 密碼qwerasdf去登入

Docker Gitlab+Jenkins+Harbor構建持久化平臺操作

創建一個私有項目java-demo

Docker Gitlab+Jenkins+Harbor構建持久化平臺操作

推送代碼到java-demo倉庫

在另外一臺機器上安裝git,將項目的源碼包上傳

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

[root@localhost ~]# unzip tomcat-java-demo-master.zip

初始化Git目錄

[root@localhost ~]# cd tomcat-java-demo-master[root@localhost tomcat-java-demo-master]# git initInitialized empty Git repository in /root/tomcat-java-demo-master/.git/

這個git目錄就會配置git相關的一些數據,初始化完成以后

[root@localhost tomcat-java-demo-master]# cd .git/[root@localhost .git]# lsbranches config description HEAD hooks info objects refs

配置git的配置文件

這條命令是將gitlab的地址寫到.git/config配置文件當中

[root@localhost tomcat-java-demo-master]# git remote add origin http://192.168.179.100:9999/root/java-demo.git [root@localhost tomcat-java-demo-master]# cat .git/config 可以看到gitlab地址寫進去了,待會去提交代碼都會去讀取該配置文件[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true[remote 'origin'] url = http://192.168.179.100:9999/root/java-demo.git fetch = +refs/heads/*:refs/remotes/origin/*

這個.代表所有,將當前代碼目錄提交到暫存區

[root@localhost tomcat-java-demo-master]# git add .[root@localhost tomcat-java-demo-master]# lsdb Dockerfile LICENSE pom.xml README.md src

提交到當前git倉庫里面,因為本身其就是一個git倉庫了(本地也是一個git倉庫)

[root@localhost tomcat-java-demo-master]# git commit -m ’all’

推送到遠程倉庫,這個就會讀取之前的配置文件了

[root@localhost tomcat-java-demo-master]# git push origin masterUsername for ’http://192.168.179.100:9999’: rootPassword for ’http://root@192.168.179.100:9999’: Counting objects: 179, done.Compressing objects: 100% (166/166), done.Writing objects: 100% (179/179), 1.12 MiB | 0 bytes/s, done.Total 179 (delta 4), reused 0 (delta 0)remote: Resolving deltas: 100% (4/4), done.To http://192.168.179.100:9999/root/java-demo.git * [new branch] master -> master

Docker Gitlab+Jenkins+Harbor構建持久化平臺操作

部署jenkins

[root@localhost jenkins]# lsapache-maven-3.5.0-bin.tar.gz jdk-8u45-linux-x64.tar.gz[root@localhost jenkins]# tar xf apache-maven-3.5.0-bin.tar.gz;tar xf jdk-8u45-linux-x64.tar.gz[root@localhost jenkins]# mv jdk1.8.0_45 /usr/local/jdk[root@localhost jenkins]# mv apache-maven-3.5.0 /usr/local/maven

這兩個工具包的作用是讓jenkins去用,jenkins是用容器部署的,所以宿主機上面的兩個環境就可以掛載進去。要將maven jdk掛載進去。

因為要在jenkins里面去做鏡像的構建,要使用docker build,所以這里有docker in docker,即在jenkins里面再構建docker,這里不需要研究如何在容器里面再安裝docker。可以直接將宿主機的命令和socket直接掛載進去就可以直接在容器里面使用docker命令。

-v是將jenkins的數據持久化到目錄下,jenkins官方將jenkins產生的數據文件都放在

/var/jenkins_home

目錄下面,所以只需要將這個目錄進行持久化就行,即使jenkins容器被刪除了,那么數據還是可以恢復過來。

使用的鏡像就是最新版,長期維護的鏡像

docker run -d --name jenkins -p 80:8080 -p 50000:50000 -u root -v /opt/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -v /usr/local/maven:/usr/local/maven -v /usr/local/jdk:/usr/local/jdk -v /etc/localtime:/etc/localtime --restart=always --name jenkins jenkins/jenkins [root@localhost jenkins]# docker psCONTAINER ID IMAGECOMMAND CREATED STATUS PORTS NAMES566d2ec85fe0 jenkins/jenkins '/sbin/tini -- /usr/…' 3 minutes ago Up 3 minutes 0.0.0.0:50000->50000/tcp, 0.0.0.0:80->8080/tcp jenkins

5000端口是master slave端口

[root@localhost jenkins]# docker logs 566d2ec85fe0 查看日志

點擊選擇插件安裝,這里選擇無不安裝插件,先安裝jenkins以后插件需要什么就安裝什么

Docker Gitlab+Jenkins+Harbor構建持久化平臺操作

Jenkins pipeline概念

• Jenkins Pipeline是一套插件,支持在Jenkins中實現集成和持續交付管道;

• Pipeline通過特定語法對簡單到復雜的傳輸管道進行建模;

• 聲明式:遵循與Groovy相同語法。pipeline { }

• 腳本式:支持Groovy大部分功能,也是非常表達和靈活的工具。node { }

• Jenkins Pipeline的定義被寫入一個文本文件,稱為Jenkinsfile

先要安裝pipeline插件然后寫文本,對pipeline去建模,現在主要使用聲明式語法,文本文件長什么樣

Docker Gitlab+Jenkins+Harbor構建持久化平臺操作

在這個文件當中告訴jenkins要做什么事情,在一個大的stage里面分為了很多小的stage,通過這種流水線的形式分好了這幾個階段,在這幾個stage組成了pipeline的流水線。按照從上到下的順序執行,直到執行完成。

pipeLine寫法大致是下面這些流程

Docker Gitlab+Jenkins+Harbor構建持久化平臺操作

Pipeline實現之后有一個案板

Docker Gitlab+Jenkins+Harbor構建持久化平臺操作

這個案板根據pipeline的每個步驟會輸出每個步驟案板。如消耗了多長時間和日志。這樣容易定位問題方便查看。

Jenkins pipeline插件的安裝和pipeline使用

在安裝插件的時候會很慢,如何提速?Jenkins下載插件的時候是有一些源的,可以修改位國內的源,在插件高級里面修改其實是沒有用的

[root@localhost jenkins]# cd /opt/jenkins_home/[root@localhost jenkins_home]# lsconfig.xml nodeMonitors.xmlcopy_reference_file.log nodeshudson.model.UpdateCenter.xml pluginsidentity.key.encsecret.keyjenkins.install.InstallUtil.lastExecVersion secret.key.not-so-secretjenkins.install.UpgradeWizard.state secretsjenkins.model.JenkinsLocationConfiguration.xml updatesjenkins.telemetry.Correlator.xmluserContentjobs userslogs war[root@localhost jenkins_home]# cd updates/[root@localhost updates]# pwd/opt/jenkins_home/updates [root@localhost updates]# ls

default.json 這里其實寫了插件的源 hudson.tasks.Maven.MavenInstaller 使用sed進行修改

sed -i ’s/http://updates.jenkins-ci.org/download/https://mirrors.tuna.tsinghua.edu.cn/jenkins/g’ default.json &&

sed -i ’s/http://www.google.com/https://www.baidu.com/g’ default.json

修改為清華源,然后重啟生效

[root@localhost updates]# docker restart jenkins

jenkins

Docker Gitlab+Jenkins+Harbor構建持久化平臺操作

Docker Gitlab+Jenkins+Harbor構建持久化平臺操作

把git和pipeline都安裝上,有個別安裝失敗可以,只要核心主鍵安裝好就行

Docker Gitlab+Jenkins+Harbor構建持久化平臺操作

替換插件源之后安裝插件明顯變快了,可以看到新建項目多了流水線的選擇,這里選擇流水線構建

Docker Gitlab+Jenkins+Harbor構建持久化平臺操作

Docker Gitlab+Jenkins+Harbor構建持久化平臺操作

pipeline { agent any stages { stage(’1.拉取拉取代碼’) { steps {echo ’拉取代碼’ } }stage(’2.代碼代碼代碼編譯’) { steps {echo ’編譯’ } }stage(’3.代碼部署’) { steps {echo ’部署’ } } }}

可以看到看板

Docker Gitlab+Jenkins+Harbor構建持久化平臺操作

這里是控制臺輸出,也可以指定從某個階段運行構建

Docker Gitlab+Jenkins+Harbor構建持久化平臺操作

下面使用pipeline來完成流程設計

從git拉取代碼,構建鏡像。推送到harbor再部署到docker當中。這個腳本可以復用

#!/usr/bin/env groovy def registry = 'reg.harbor.com'def project = 'welcome'def app_name = 'demo'def image_name = '${registry}/${project}/${app_name}:${Branch}-${BUILD_NUMBER}'def git_address = 'http://192.168.179.100:9999/root/java-demo.git'def docker_registry_auth = 'c91491d9-91cd-4248-96c8-fc8cc00f7db4'def git_auth = '86ebc99d-d3fc-4e6e-b938-db1f5a1f3642' pipeline { agent any stages { stage(’拉取代碼’){ steps { checkout([$class: ’GitSCM’, branches: [[name: ’${Branch}’]], userRemoteConfigs: [[credentialsId: '${git_auth}', url: '${git_address}']]]) } } stage(’代碼編譯’){ steps { sh '''JAVA_HOME=/usr/local/jdkPATH=$JAVA_HOME/bin:/usr/local/maven/bin:$PATHmvn clean package -Dmaven.test.skip=true''' } } stage(’構建鏡像’){ steps {withCredentials([usernamePassword(credentialsId: '${docker_registry_auth}', passwordVariable: ’password’, usernameVariable: ’username’)]) {sh ''' echo ’ FROM ${registry}/library/tomcat:v1 LABEL maitainer lizhenliang RUN rm -rf /usr/local/tomcat/webapps/* ADD target/*.war /usr/local/tomcat/webapps/ROOT.war ’ > Dockerfile docker build -t ${image_name} . docker login -u ${username} -p ’${password}’ ${registry} docker push ${image_name}'''} } } stage(’部署到Docker’){ steps { sh ''' docker rm -f tomcat-java-demo |true docker container run -d --name tomcat-java-demo -p 88:8080 ${image_name} ''' } } }}

Docker Gitlab+Jenkins+Harbor構建持久化平臺操作

可以看到這里要你輸入分支

Docker Gitlab+Jenkins+Harbor構建持久化平臺操作

參數化構建,變量的名稱可以在shell腳本或者pipeline當中去引用

steps {echo ’${Branch}’ }

創建harbor的憑據,即使用jenkin要訪問docker harbor倉庫需要知道用戶名和密碼

Docker Gitlab+Jenkins+Harbor構建持久化平臺操作

Docker Gitlab+Jenkins+Harbor構建持久化平臺操作

可以看到這里多了一個憑據 c91491d9-91cd-4248-96c8-fc8cc00f7db4,pipeline腳本當中就定義了憑據def docker_registry_auth = 'c91491d9-91cd-4248-96c8-fc8cc00f7db4' 這是jenkins的憑據

Docker Gitlab+Jenkins+Harbor構建持久化平臺操作

還需要插件git憑據 86ebc99d-d3fc-4e6e-b938-db1f5a1f3642 在pipeline里面定義def git_auth = '86ebc99d-d3fc-4e6e-b938-db1f5a1f3642'

Docker Gitlab+Jenkins+Harbor構建持久化平臺操作

Docker Gitlab+Jenkins+Harbor構建持久化平臺操作

Pipeline有些語句可以自動生成,比如生成拉從取代碼

Docker Gitlab+Jenkins+Harbor構建持久化平臺操作

知道pipeline大概的框架 套進去就行

checkout([$class: ’GitSCM’, branches: [[name: ’*/master’]], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: ’86ebc99d-d3fc-4e6e-b938-db1f5a1f3642’, url: ’http://192.168.179.100:9999/root/java-demo.git’]]])

拉取編譯好之后的war包放到環境鏡像里面

現在配置maven的源

Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-war-plugin/3.1.0/maven-war-plugin-3.1.0.jar (91 kB at 5.3 kB/s)

Downloading: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-starter-web/2.0.1.RELEASE/spring-boot-starter-web-2.0.1.RELEASE.pom

在后臺輸出可以看到這些東西,在編譯構建的時候maven的源是默認的網絡比較慢,現在要修改源確保拉取速度快一些宿主機上修改,這里面定義了從那個源拉取相應的依賴包

[root@localhost ~]# vim /usr/local/maven/conf/settings.xml <mirror> <id>central</id> <mirrorOf>central</mirrorOf> <name>aliyun maven</name> <url>https://maven.aliyun.com/repository/public</url> </mirror>

修改完之后不需要重啟容器直重新構建,可以看到構建出來的包

[root@localhost ~]# ls /opt/jenkins_home/workspace/test-pipeline/target/ classes generated-sources ly-simple-tomcat-0.0.1-SNAPSHOT ly-simple-tomcat-0.0.1-SNAPSHOT.war maven-archiver maven-status

Job存放的是數據源信息

[root@localhost ~]# ls /opt/jenkins_home/jobs/

test test-pipeline

Docker Gitlab+Jenkins+Harbor構建持久化平臺操作

Docker Gitlab+Jenkins+Harbor構建持久化平臺操作

如果需要在其他dcker主機上部署可以使用ssh插件的ssh命令或者使用ansible別的機器上啟動執行docker命令創建容器

Docker Gitlab+Jenkins+Harbor構建持久化平臺操作

Docker Gitlab+Jenkins+Harbor構建持久化平臺操作

題外話

Docker Gitlab+Jenkins+Harbor構建持久化平臺操作

提供了如果你的harbor提供了Https認證,那么請在你的jenkins這臺主機將證書拷貝到相應的目錄下面。確保jenkins主機能夠登入進docker harbor倉庫

[root@localhost ~]# mkdir -p /etc/docker/certs.d/reg.harbor.com[root@localhost ~]# lsanaconda-ks.cfg reg.harbor.com.pem [root@localhost ~]# cp reg.harbor.com.pem /etc/docker/certs.d/reg.harbor.com/reg.harbor.com.crt [root@localhost ~]# cat /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.179.102 reg.harbor.com [root@localhost ~]# docker login reg.harbor.comAuthenticating with existing credentials...WARNING! Your password will be stored unencrypted in /root/.docker/config.json.Configure a credential helper to remove this warning. Seehttps://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded

以上這篇Docker Gitlab+Jenkins+Harbor構建持久化平臺操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Docker
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲视频国产| 国产精品国码视频| 麻豆精品网站| 日韩一区亚洲二区| 欧美日韩调教| 亚洲第一区色| 欧美黑人做爰爽爽爽| 亚洲色图国产| 另类专区亚洲| 免费视频一区二区三区在线观看| 爽好多水快深点欧美视频| 在线日韩一区| 宅男在线一区| 日本免费一区二区三区四区| 日本国产亚洲| 视频一区欧美日韩| 伊人久久大香线蕉av不卡| 国产在线观看www| 精品亚洲免a| 久久国产精品美女| 日韩精品视频一区二区三区| 在线亚洲一区| 国产一区二区高清| 亚洲一本视频| 日韩午夜免费| 热久久国产精品| 蜜桃视频第一区免费观看| 蜜臀精品一区二区三区在线观看 | 国产精品欧美三级在线观看 | 国产午夜精品一区在线观看| 国产精品88久久久久久| 婷婷综合在线| 免费日韩av片| 日本视频一区二区| 麻豆精品在线播放| 日韩一级欧洲| 欧美一级网址| 国产亚洲一区在线| 一区二区三区四区在线观看国产日韩| 日韩在线一区二区| 日韩中出av| 激情综合婷婷| 亚洲精品小说| 国产欧美日韩影院| 麻豆理论在线观看| 日本韩国欧美超级黄在线观看| 亚洲精品动态| 一本一道久久a久久精品蜜桃| 国产精品九九| 日韩va亚洲va欧美va久久| 亚洲国产日韩欧美在线| 国产九九精品| 天堂久久av| 欧美1区2区3区| 不卡专区在线| 精品视频91| 久久av网站| 国产欧美精品| 欧美日韩午夜电影网| 免费在线看一区| 欧美美女一区| 免费av一区| 久久久精品网| 亚洲综合在线电影| www.九色在线| 国产超碰精品| sm捆绑调教国产免费网站在线观看| 国产经典一区| 美女视频网站久久| 欧美国产专区| 久久久久九九精品影院| 欧美精品99| 国产日产精品一区二区三区四区的观看方式 | 欧美国产精品| 成人久久一区| 亚洲人www| 久久要要av| 亚洲一区二区成人| 亚洲1区在线| 精品一区视频| 91精品99| 久久国产日韩欧美精品| 麻豆久久久久久| 精精国产xxxx视频在线野外| 日本免费久久| 国产亚洲毛片在线| 久久久久亚洲精品中文字幕| 欧美国产91| 日本不卡中文字幕| 99久久久久| 在线天堂中文资源最新版| 三级久久三级久久久| 视频福利一区| 精品资源在线| 日韩专区视频网站| 激情婷婷久久| 国产成人精品免费视| 国产麻豆一区二区三区| 国产视频一区免费看| 国产精品二区不卡| 精品国产亚洲日本| 91午夜精品| 国产成人精品亚洲日本在线观看| 久久久精品久久久久久96| 99国产一区| 欧美另类专区| 久久av在线| 亚洲开心激情| 91久久久精品国产| 国产v综合v| 国产一区二区三区天码| 国产精品白丝一区二区三区| 日韩视频一区| 激情综合自拍| 97国产精品| 国产精品久久久久久久久久10秀| 日本成人在线网站| 亚洲人成精品久久久| 亚洲欧美日本国产专区一区| 久久一级电影| 欧美日韩国产高清电影| 亚洲免费中文| 91成人福利| 国产极品久久久久久久久波多结野| 91精品99| 好看不卡的中文字幕| 免费日韩视频| 青草久久视频| 欧美成人aaa| 精品中文在线| 精品三级在线观看视频| 久久精品网址| 国产69精品久久| 麻豆一区二区三区| 国产一区二区三区不卡av| 国产精品调教视频| 久久久久久夜| 亚洲一区日韩| 国产日韩一区二区三免费高清 | 国产精品99一区二区三| 桃色av一区二区| 黄色国产精品| 美女视频黄 久久| 蜜桃久久久久久久| 国产精品一区二区三区美女| 福利在线免费视频| 国产精品久久久久久久免费观看| 国产一区二区三区不卡av | 欧美精品影院| 久久精品国产99国产| 成人精品高清在线视频| 欧美香蕉视频| 在线精品福利| 欧美亚洲免费| 欧美激情另类| 亚洲日本欧美| 精品视频在线你懂得| 美女国产一区二区三区| 久久精品国产99国产| 久久一区二区中文字幕| 午夜亚洲福利| а√天堂8资源中文在线| 国产亚洲在线| 精品亚洲a∨一区二区三区18| 亚洲精品一二三区区别| 国产日产一区| 欧美va亚洲va日韩∨a综合色| 日韩二区三区四区| 秋霞影院一区二区三区| 日韩欧美三区| 四虎884aa成人精品最新| 日韩高清在线一区| 97精品国产| 日韩在线网址| 99久久激情| 精品国产精品国产偷麻豆| 午夜久久美女| 日韩在线欧美| 国产一区二区三区网| 人人精品久久| 宅男在线一区| 日韩av自拍| 国产一区二区三区四区二区| 日韩精品久久理论片| 亚洲精品一区二区妖精| 97视频热人人精品免费| 久久99蜜桃| 日韩三级久久| 亚洲一区二区免费在线观看| 国产一区日韩一区| 日韩欧美1区| 久久中文欧美| 精品国产一级| 国产精品大片| 国产欧美日韩亚洲一区二区三区| 日韩av一区二区三区四区| 日本不卡不码高清免费观看| 日本在线成人| 日韩欧美另类中文字幕| 亚洲日产国产精品|