CI持續(xù)集成

一、環(huán)境準(zhǔn)備

10.0.0.5        lb01
10.0.0.7        web01
10.0.0.8        web02
10.0.0.51       db01

10.0.0.110   git            gitlab.oldxu.com
10.0.0.120   jenkins        jenkins.oldxu.com
10.0.0.130   sonarqube      sonar.oldxu.com

二、持續(xù)集成CI概念介紹

1.持續(xù)集成CI
    讓產(chǎn)品可以快速迭代,同時還能保持高質(zhì)量。 簡化工作。
2.持續(xù)交付
    交付生產(chǎn)的產(chǎn)品。
3.持續(xù)部署
    部署交付后的產(chǎn)品。
4.持續(xù)集成實現(xiàn)的思路
    git
    jenkins
image.png

三、持續(xù)集成練習(xí)題

6.版本控制系統(tǒng)
    1.版本控制系統(tǒng)概述
    2.Git基本概述
    3.Git基本命令
        1.你是誰?
        2.你的郵箱是?
        1.實戰(zhàn)一、git如何提交目錄文件至至本地倉庫?
        2.實戰(zhàn)三、如何比對本地工作目錄文件內(nèi)容、暫存區(qū)文件內(nèi)容、本地倉庫文件內(nèi)容之間的差異?
        
        回退
        1.如果本地工作目錄修改文件錯誤想回退怎么辦?
        2.如果文件叢本地目錄提交到暫存區(qū)后,想回退怎么辦?
        3.如果提交多次內(nèi)容至本地倉庫,想回退怎么辦?
        4.如何創(chuàng)建分支,又如何合并分支?
        f7f5810 HEAD@{17}: commit: 新增file1-oldxu.com
    
    4.Git分支管理
    5.Git標(biāo)簽管理
    6.Git遠(yuǎn)程倉庫
7.git
    如何提交
    如何回退
    git分支
    git log
    git遠(yuǎn)程倉庫
    github
    gitee

四、持續(xù)集成步驟

1.持續(xù)集成
2.持續(xù)交付
3.持續(xù)部署
4.持續(xù)集成整體實現(xiàn)流程思路以及工具    gitlab jenkins
5.版本控制系統(tǒng)
6.git基本使用
    安裝git
    配置git  我是誰 我的郵箱是
    初始化一個目錄為一個倉庫   git init 
7.git基本練習(xí)
    1.如何提交?
    2.提交中的commit是什么?
    3.如何對比?
        本地與暫存區(qū)對比  git diff
        暫存區(qū)與本地倉庫  git diff --cached
    4.如何回退?
        1.本地修改錯誤如何回退?  git checkout filename
        2.本地提交暫存區(qū)如何回退? git reset HEAD 
        3.本地提交至本地倉庫多次? 
            git reflog
            git reset --hard commit_id
    5.git 分支?
        git branch  bug     創(chuàng)建分支
        git checkout bug   切換分支
        git merge  master  合并分支    (看你在哪個分支上?)
        
    6.git 標(biāo)簽? tag
        git tag -a "v1.1" -m "描述"  創(chuàng)建一個標(biāo)簽
        git tag -d "v1.1" 刪除標(biāo)簽
        git tag -a "v1.1" commit 將某個commit_id關(guān)聯(lián)至某個tag
        
    7.git 遠(yuǎn)程倉庫?
        1.如何將遠(yuǎn)程倉庫與本地倉庫關(guān)聯(lián)、
        2.如何提交一個文件至遠(yuǎn)程倉庫
            工作區(qū):   touch file5
            暫存區(qū):   git add .
            本地倉庫: git commit -m "new file file5"
            遠(yuǎn)程倉庫: git push origin master            
8.gitlab倉庫 (社區(qū)版)
    1.gitlab是一個開源倉庫,社區(qū)版ce  企業(yè)版ee(基于git基礎(chǔ)上開發(fā)。)
    2.github創(chuàng)建私有倉庫收費(fèi),網(wǎng)絡(luò)較差。
    3.碼云  ---> 收費(fèi)  創(chuàng)建私有倉庫最多5個人協(xié)同開發(fā)。
    
        公司一般選擇 gitlab   
        個人開源項目 github   gitee

五、安裝gitlab

[root@gitlab ~]# yum install -y curl policycoreutils-python openssh-server postfix
[root@gitlab ~]# systemctl enable postfix
[root@gitlab ~]# systemctl start postfix
[root@gitlab ~]# yum localinstall gitlab-ce-12.0.3-ce.0.el7.x86_64.rpm

六、配置gitlab

1.備份gitlab配置文件
[root@gitlab ~]# cp -v /etc/gitlab/{gitlab.rb,gitlab.rb_bak}
[root@gitlab ~]# vim /etc/gitlab/gitlab.rb
2.修改gitlab訪問的url 
external_url 'http://gitlab.oldxu.com'
3.關(guān)閉一些沒有用程序
prometheus['enable'] = false
prometheus_monitoring['enable'] = false
4.配置郵箱
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = "572891887@qq.com"  # 發(fā)件郵箱
gitlab_rails['gitlab_email_display_name'] = 'OldXu-GitLab' # 發(fā)件人顯示名稱

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "572891887@qq.com" #發(fā)件人郵箱賬戶
gitlab_rails['smtp_password'] = "nvguuktrefkmbcbe"  #發(fā)件人郵箱客戶端授權(quán)碼
gitlab_rails['smtp_domain'] = "qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true

七、初始化gitlab

[root@gitlab ~]# gitlab-ctl reconfigure

八、版啟動gitlab

[root@gitlab ~]# gitlab-ctl start

九、訪問gitlab,然后配置root密碼

123456.com

十、漢化gitlab 翻譯

1.停止gitlab
[root@gitlab ~]# gitlab-ctl stop
        
2.替換語言包
[root@gitlab ~]# tar xf gitlab-12-0-stable-zh.tar.gz
[root@gitlab ~]# \cp -r gitlab-12-0-stable-zh/* /opt/gitlab/embedded/service/gitlab-rails/
    
3.重新加載gitlab
[root@gitlab ~]# gitlab-ctl reconfigure
        
4.啟動gitlab
[root@gitlab ~]# gitlab-ctl start
        
5.選擇右上角--->setttings---》Preferences -->Language

十一、gitlab中用戶 用戶組 項目 之間的關(guān)系 配置 驗證 (郵件) ---》權(quán)限?

1.創(chuàng)建組      dev
2.基于組     創(chuàng)建   5個項目    dev-1  dev-2 dev-3 dev-4 dev-5
3.創(chuàng)建用戶   將用戶加入dev組,此時用戶就能看到對應(yīng)的5個項目
4.至于用戶到底有什么權(quán)限,取決于添加用戶時給分配的權(quán)限

十二、gitlab創(chuàng)建項目?

1.本地與遠(yuǎn)程倉庫的連接
2.本地推送數(shù)據(jù)至遠(yuǎn)程倉庫
3.新加入的小伙伴需要協(xié)同開發(fā)?   git clone 鏡像代碼   ---> 權(quán)限
4.新伙伴提交了代碼至遠(yuǎn)程倉庫
5.我這邊本地拉取代碼。

十三、gitlab備份,恢復(fù)? 升級 10 --》11---》 12

1.備份gitlab
[root@gitlab ~]# gitlab-rake gitlab:backup:create
        
2.額外需求
[root@gitlab ~]# vim /etc/gitlab/gitlab.rb
# gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"       #控制備份后的產(chǎn)物放在哪里
# gitlab_rails['backup_keep_time'] = 604800                     #保留多久的數(shù)據(jù)
[root@gitlab ~]# gitlab-ctl reconfigure     
        
3.如果希望每天都備份,可以使用crond服務(wù)來實現(xiàn)。
        
4.不小心誤操作刪除了幾個項目,現(xiàn)在該如何恢復(fù)?
[root@gitlab ~]# gitlab-ctl stop sidekiq
[root@gitlab ~]# gitlab-ctl stop unicorn
[root@gitlab ~]# gitlab-rake gitlab:backup:restore BACKUP=1567240183_2019_08_31_12.0.3
[root@gitlab ~]# gitlab-ctl restart

十四、jenkins

1.介紹jenkins
CI 調(diào)度平臺   JAVA開發(fā) 
2.安裝jenkins  (N多種安裝方式)
[root@jenkins ~]# yum install java -y
[root@jenkins ~]# yum localinstall jenkins-2.176.1-1.1.noarch.rpm
[root@jenkins ~]# systemctl start jenkins && systemctl enable jenkins

PS:
    1.如果沒有提前準(zhǔn)備好插件,請選擇  安裝推薦的插件
    2.如果提前準(zhǔn)備好了插件, 選擇右上角的跳過插件安裝
    3.離線狀態(tài): 因為連接不上插件的地址,所以離線了, 所以選擇跳過插件安裝。  創(chuàng)建用戶--》設(shè)定密碼
    4.離線狀態(tài): 直接就進(jìn)入jenkins   需要給默認(rèn)的admin配置一個密碼。
3.jenkins插件
    1.如何對插件進(jìn)行加速?  替換源?
    https://mirror.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
        
    2.如何導(dǎo)入一個.hpi的插件?
    3.之前已經(jīng)備份下來的插件如何批量導(dǎo)入?
    [root@jenkins ~]# rm -rf /var/lib/jenkins/plugins
    [root@jenkins ~]# tar xf jenkins_2.176_plugins.tar.gz -C /var/lib/jenkins/
    [root@jenkins ~]# chown -R jenkins.jenkins /var/lib/jenkins/plugins/
    [root@jenkins ~]# systemctl restart jenkins
4.創(chuàng)建jenkins的job任務(wù)
    1.實現(xiàn)jenkins+shell集成
    2.實現(xiàn)jenkins+gitlab集成
    1.準(zhǔn)備一個項目
    2.前往gitlab創(chuàng)建一個倉庫
    3.本地提交項目至gitlab倉庫
    4.配置jenkins job任務(wù)
        1.jenkins需要安裝插件         gitlab plugins
        2.jenkins項目中g(shù)itlab項目地址      
    lb 10.0.0.5
    web01 10.0.0.7
    web02 10.0.0.8
    
5.搭建一套小的集群   實現(xiàn)手動的代碼上線
    
    1.配置負(fù)載均衡
    [root@lb01 ~]# cat /etc/nginx/conf.d/proxy_html.oldxu.com.conf
    upstream html {
        server 10.0.0.7:80;
        server 10.0.0.8:80;
    }

    server {
        listen 80;
        server_name html.oldxu.com;

        location / {
            proxy_pass http://html;
            proxy_set_header Host $http_host;
        }
    }
        
    [root@lb01 ~]# nginx -t 
    [root@lb01 ~]# systemctl restart nginx

    2.配置后端webserver(所有的web集群)
    [root@web01 ~]# /etc/nginx/conf.d/html.oldxu.com.conf
    server {
        listen 80;
        server_name html.oldxu.com;
        root /code/web;
        location / {
            index index.html;
        }
    }
    [root@web01 ~]# mkdir /code/web -p 
    [root@web01 ~]# echo "web01..." > /code/web/index.html
    [root@web01 ~]# nginx -t
    [root@web01 ~]# systemctl restart nginx
    
    3.克隆代碼
    [root@web01 ~]# git clone git@gitlab.oldxu.com:boy/monitor.git
        
    4.將代碼scp至web集群
    [root@web01 ~]# for i in 7 8 ;do scp -r monitor/* root@10.0.0.${i}:/code/web/ ;done
    
6.jenkins來實現(xiàn)代碼的上線
    腳本:
        1.進(jìn)入對應(yīng)的目錄
        2.打包
        3.scp推送
    
7.jenkins調(diào)整上線的腳本實現(xiàn)tag方式上線
8.jenkins來實現(xiàn)代碼的回退
9.jenkins實現(xiàn)回退
10.jenkins調(diào)git tag 防止重復(fù)構(gòu)建?

十五、jenkins實現(xiàn)java項目自動化上線?

什么算Java項目?   java工具編寫的代碼
源碼包     IDE編寫
jar        源碼包需要編譯,代碼依賴一些jar包   
           只用來被依賴的
           可獨立運(yùn)行的
war     可部署

十六、搭建一套java的集群?

1.在web集群上安裝tomcat
[root@web01 ~]# yum install java -y 
[root@web01 ~]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.24/bin/apache-tomcat-9.0.24.tar.gz
[root@web01 ~]# mkdir /soft
[root@web01 ~]# tar xf apache-tomcat-9.0.24.tar.gz -C /soft/
[root@web01 ~]# ln -s /soft/apache-tomcat-9.0.24/ /soft/tomcat
[root@web01 ~]# /soft/tomcat/bin/startup.sh
    
2.配置nginx+tomcat
[root@web01 conf.d]# cat tomcat.oldxu.com.conf 
server {
    listen 80;
    server_name tomcat.oldxu.com;
    location / {
        proxy_pass http://127.0.0.1:8080;
    }
}
[root@web01 conf.d]# systemctl restart nginx

3.接入負(fù)載均衡
[root@lb01 ~]# cat  /etc/nginx/conf.d/proxy_tomcat.oldxu.com.conf
upstream java {
    server 10.0.0.7:80;
    server 10.0.0.8:80;
}
server {
    listen 80;
    server_name tomcat.oldxu.com;
    location / {
        proxy_pass http://java;
        proxy_set_header Host $http_host;
    }
}
[root@web01 conf.d]# systemctl restart nginx
    
4.實現(xiàn)java項目手動上線?
    1.編寫java代碼
    2.將java項目推送至gitlab服務(wù)器
    3.手動拉取源代碼
    4.對源代碼進(jìn)行編譯   (maven)    war包
        1.配置maven使用國內(nèi)的倉庫   在  </mirros>  上面配置即可
        <mirror>
            <id>nexus-aliyun</id>
            <mirrorOf>central</mirrorOf>
            <name>Nexus aliyun</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public</url>
        </mirror>
        2. mvn package  打包
    5.通過scp方式將war推送至web集群
    6.重啟tomcat服務(wù)

十七、jenkins實現(xiàn)自動化上線?

1.需要新建一個maven的項目? Maven Integration plugin
2.jenkins抓取gitlab上的java源代碼    
3.jenkins調(diào)maven進(jìn)行編譯(構(gòu)建)
    告訴jenkins jdk的家目錄
    告訴jenkins maven家目錄
4.jenkins調(diào)shell實現(xiàn)tag上線
5.jenkins調(diào)shell實現(xiàn)tag回退

十八、手動實現(xiàn)cms項目部署?

1.開發(fā)項目
2.項目推送至gitlab
3.手動拉取cms項目代碼
4.導(dǎo)入數(shù)據(jù)庫的sql語句
5.修改數(shù)據(jù)庫的連接信息
6.使用maven進(jìn)行編譯
7.拷貝至web集群服務(wù)器
8.重啟tomcat

十九、jenkins實現(xiàn)cms項目部署?

1.jenkins自動拉取cms項目代碼
2.jenkins配置構(gòu)建前操作  --->將數(shù)據(jù)庫的配置文件拷貝至源碼中
3.jenkins調(diào)用maven進(jìn)行編譯
4.jenkins調(diào)用shell,推送war包至web集群、重啟tomcat
5.用戶測試訪問
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容