zoukankan      html  css  js  c++  java
  • 持续集成CICD

      • 1.持续集成 ( 集成、交付、部署)
      • 2.git、gitlab、jenkins、sonarqube
    • 1.软件开发生命周期(简易版 --> 引入 环境 - 工具 --流程 )

    • 2.什么是环境、代码部署指的是什么
      • 开发环境:
      • 测试环境:一般来说是由测试人员部署。然后在该环境进行代码的测试。
      • 预发布环境: 保证上线前的代码质量。( 域名不一样。连接生产环境数据库。)
      • 生产环境:线上对外 环境,用户直接 访问的环境。由运维 来维护。
    • 3.环境与环境之间的代码是 如何部署的?
      • 代码部署:将我们开发的代码放到对应的web站点目录。/code
      • 手动:慢、干扰因素多、不安全。 scp、xftp、git pull svn pull
      • 自动:快、干扰因素少、安全。
    • 3.持续集成、持续交付、持续部署
      • 持续集成:频繁的一天多次,将代码集成到主干分支。(重复集成 的工作。)

    -   持续交付
        -   交付个qa团队测试,一次算交付,每天频繁多次,持续交付。
    -   持续部署
        -   开发-->代码-->构建-测试后-返回结果为给开发-->测试-->部署的操作。
    
    • 4.代码发布的流程与对应的实施的工具。

    • 5.第一个工具,git

      • 1.什么是git
        • git是一个分布式的版本控制软件。
          • 分布式
          • 版本控制
          • 软件。

            git基本使用:

      一个人开始干:

    mkdir douyin
    cd douyin/
    git init					#将目录初始化为一个git的仓库
    #配置一个我是谁,我的邮箱是什么?
    git config --global user.email "army@qq.com"
                    git config --global user.name "army"
                    git config color.ui true
                    
                    git status
                    git add .
                    git status
                    
                    #提交文件至本地仓库:
                    git commit -m "v1.0短视频开发完成"
                    #查看提交的记录( 提交的描述,以及COMMITID,这个COMMITID是唯一的。)
                     git log```
    在开发一个新功能( 视频审核 )
    

    git add . #让git将该文件 管理起来
    git commit -m "描述信息"#将文件提交到本地仓库中
    git log #查看当前仓库所有的提交记录 ```

    • XXX功能

    [root@gitlab douyin]# vim yuefan.html
    [root@gitlab douyin]# git add .
    [root@gitlab douyin]# git commit -m "功能上线"
    


    git log 查看历史提交记录 git reset --hard COMMITID (你想回退到哪个指定的版本)

    ```
    [root@gitlab douyin]# git reflog	#查看所有历史提交的commitID
    [root@gitlab douyin]# git reset --hard b3d3523
    ```
    
    • git命令总结,多个区域的概念
            git init					#将一个目录初始化为一个版本库
            git add						#将目录下的所有文件都加入到git的版本管理
            git commit 				#将所有被git管理的文件,都提交到本地仓库进行版本管理
            git log						#查看git的提交记录(谁、什么时间、提交了什么、commitid是啥、提交的描述是什么)
            git reflog				#查看git所有的提交记录 (每一次的提交都能查看到)
            git reset --hard	#回退到指定的版本,后面跟上commitid   这个id可以通过log查看,也可以reflog ```
        -   ![image-20190801214513960](http://cdn.xuliangwei.com/image-20190801214513960.png)
        -   git分支:
            - 功能出现了bug、还希望在开发一个商城系统:怎么办?
      ![](https://img2020.cnblogs.com/blog/1275194/202011/1275194-20201119165225227-794005490.png)
    
    # git分支的操作与使用:
    git branch dev				#创建dev分支
    git checkout dev			#切换到dev分支
    
    #开发商城:
    vim shopping.html
    git add .
    git commit -m "商城完成百分之20%-c4"
    
    #现在约功能出现了bug,请回到master分支,基于master的c3创建bug分支
    git checkout master
    git branch bug
    git checkout bug
    
    #开始bug修复
    vim yuefan.html
    git add .
    git commit -m "bug修复完毕..c5"
    
    #bug修复完成后,我们需要回到master分支,然后合并bug分支的内容:
    git checkout master
    git merge bug -m "合并bug分支--c6"
    
    #继续回到dev分支开发商城系统
    git checkout dev
    git add .
    git commit -m "商城完成百分之100%--c7"
    
    #继续在dev分支合并master的代码。确保修复的bug与我的商城系统兼容
    git merge master -m "商城100%-bug修复--c8"
    
    #最后回到master分支。然后将dev开发的功能合回master   没有问题就可部署了
    git checkout master
    git merge dev -m "合并dev开发的商城功能。"
    
    #当确保master分支是最新的内容,可以干掉其他的分支;
    git branch -d dev
    git branch -d bug```
    

    三里屯买栋楼房:

    1.我们需要有一个远程仓库 ( 码云 开源,个人可以免费使用。)
    2.我们要将本地的仓库与远程建立连接

        git remote add origin git@gitee.com:oldboy_oldxu/dy.git		#请填写自己的地址 (  基于ssh方式  )
        cat ~/.ssh/id_rsa.pub					#将服务器的公钥放入gitee服务器中
        git push -u origin master			#git push主要是用来将本地版本已管理的文件推送到远程仓库中
        #如何推送其他分
        git branch dev
        git checkout dev
        touch dev.html
        git add .
        git commit -m "添加dev的html"
        git push origin dev	#这个push这里不再是master而是你当前的分支名称。
        
        #公司新来了一个小王,他需要查看公司的代码,怎么办?  ( 还可能需要修改。然后提交:)
        
        #1.小王需要先克隆项目:  (  仅在第一次需要,需要注意,私有的项目需要小王将公钥放入中心服务器  )
        git clone git@gitee.com:*****/dy.git
        
        #2.修改代码。推送代码中心服务器
        user.name=******
        user.email=*******@qq.com
        git add .
        git commit -m ""
        git push origin master
        
        #3.我自己,需要拉取中心服务器的最新代码:
        git checkout master
        git pull origin master						#拉取中心的最新代码
        
        #4.我修改代码,提交到中心服务器,小王拉取代码。
         touch linux_army.html
         git add .
         git commit -m " 描述"
         git push origin master
        
        #5.小王就需要执行git pull 才可以看到我推送到远程服务器的最新版本代码
        git pull origin master
        3.将本地的代码提交到远程仓库( 首先要能提交到本地仓库-->才可以提交到远程仓库,否则不行?)
    
    -   git tag标签: 为某个指定的CommitID打上标签:
    
        git tag -a v1.1 -m "最新的代码"			#为最新的代码打上标签
        git tag															#查看当前本地的标签
         git push origin --tags							#推送本地的所有标签
        #指定对应的commitID打上标签
         git tag -a v1.0 ea03880 -m "当初上线商城功能的版本"
         git tag -l
         git push origin --tags
    

    gitignore忽略

    程序产生的垃圾
    程序产生缓存
    图片
    数据配置
    git牵扯到的多个区域总结:

    git的命令总结:

    git config --global user.email
    git config --global user.name
    git add
    git status
    git commit -m ""
    git log
    git reflog
    git reset --hard CommitID
    
    git branch  Name
    git checkout BranchName
    git branch -d Name
    git merge BranchName   (master想和并dev,请先到master分支,然后使用git merge将dev分支和合并到master)
        
    git clone URL   Http的地址,如果项目是开源的,则不需要输入密码即可克隆
    git remote add origin URL | SSH    #origin就是一个别名
    git remote remove origin 
    git push origin master
    git pull origin master
    
    git tag -a v1.0 -m ""
    git tag -a v1.1 commitid -m ""
    git tag -l
    git tag -d v1.1
    
    
    

    6.git仓库-->gitlab代码托管平台
    码云:别人的服务器,自己公司的代码是否可以托管到别人的服务器上?

       自建代码托管平台:
    
           gitlab 重级别  (功能全、权限管理、分支保护、) 代码托管平台。
               社区版   不花钱。  私有项目随便创建,想怎么来就怎么来。
               企业版
           gogs  轻量级(简陋,能完成代码的提交。)
    
       安装gitlab
    
        #gitlab安装本身很复杂,但是官方提供了rpm安装包,安装即可使用。封装好了。
    
    
    [root@gitlab ~]# yum localinstall gitlab/gitlab-ce-12.0.3-ce.0.el7.x86_64.rpm -y
    [root@gitlab ~]# cd /etc/gitlab/
    [root@gitlab gitlab]# ls
     gitlab.rb
    [root@gitlab gitlab]# cp gitlab.rb gitlab.rb_bak
    
    ## GitLab URL
    external_url 'http://gitlab.oldboy.com'
            	
    ### Email Settings
    gitlab_rails['gitlab_email_enabled'] = true
    gitlab_rails['gitlab_email_from'] = '123@qq.com'
    gitlab_rails['gitlab_email_display_name'] = 'Oldboy-Gitlab'
            
    ### GitLab email server settings
    gitlab_rails['smtp_enable'] = true
    gitlab_rails['smtp_address'] = "smtp.qq.com"
    gitlab_rails['smtp_port'] = 465
    gitlab_rails['smtp_user_name'] = "123@qq.com"
    gitlab_rails['smtp_password'] = "授权码"
    gitlab_rails['smtp_domain'] = "qq.com"
    gitlab_rails['smtp_authentication'] = "login"
    gitlab_rails['smtp_enable_starttls_auto'] = true
    gitlab_rails['smtp_tls'] = true
    
    #关闭一些没有用的组件
    1385:prometheus['enable'] = false
    1386:prometheus['monitor_kubernetes'] = false
    1452:alertmanager['enable'] = false
    1474:node_exporter['enable'] = false
    1493:redis_exporter['enable'] = false
    1511:postgres_exporter['enable'] = false
    1540:gitlab_monitor['enable'] = false
    1553:prometheus_monitoring['enable'] = false
    1560:grafana['enable'] = false
    1550:prometheus_monitoring['enable'] = false
            
            
            #初始化操作:
            [root@gitlab gitlab]# gitlab-ctl reconfigure
            
            
            #访问gitlab
            #设置超级管理员密码:  oldxu.com
            	#默认超级管理员root  
            ```
    
           gitlab汉化:
    
    
        [root@gitlab ~]# ll gitlab/
        总用量 1479048
        -rw-r--r-- 1 root root  76557595 8月   9 08:50 gitlab-12-0-stable-zh.tar.gz
        -rw-r--r-- 1 root root 640227518 8月   9 08:50 gitlab-ce-12.0.3-ce.0.el7.x86_64.rpm
        -rw-r--r-- 1 root root 797754871 8月   9 08:51 gitlab-ce-12.10.9-ce.0.el7.x86_64.rpm
        
        [root@gitlab ~]# cd gitlab/
        [root@gitlab gitlab]# tar xf gitlab-12-0-stable-zh.tar.gz
        [root@gitlab gitlab]# cat gitlab-12-0-stable-zh/VERSION
        12.0.3
        
        [root@gitlab gitlab]# gitlab-ctl stop
        [root@gitlab gitlab]# cp -r gitlab-12-0-stable-zh/* /opt/gitlab/embedded/service/gitlab-rails/
        [root@gitlab gitlab]# gitlab-ctl reconfigure
        [root@gitlab gitlab]# gitlab-ctl start
        ```
    
       用户、组、权限之间的关系
    

    1.创建组
    
    2.基于组创建项目
    
    3.创建用户
    
    4.将用户加入到组中,然后分配对应的权限。
    
    5.分别使用账户登陆gitlab,查看是否能看到对应的项目。
    
    ------验证完毕:
    
    
    
    `echo "10.0.0.110 gitlab.oldboy.com" >> /etc/hosts`
    
    oldxu是主程序人员			( Linux 服务器    gitlab   10.0.0.110)
    
    oldli是开发人员					(  Linux服务器   web01  10.0.0.7 )
    
    由于master分支是授保护的,所以很有可能oldli是无法将代码提交到master分支的,那怎么办呢?
    
       方法一:
    
           1.oldli创建一个dev分支,开发自己的项目
           2.oldli将dev分支提交到远程仓库
           3.oldli使用自己的账户登陆gitlab,然后申请合并请求:(申请dev与master合并)
           4.管理员登陆gitlab,同意合并,则才能完成合并的操作。 如果拒绝,那么合并失败。
    
       方法二:(不推荐。)
    
           关闭分支保护就行了。  项目-->设置-->仓库-->保护分支
           选择主程序员和开发者都可以提交。
    
       方法三:(也不推荐,不然要分支保护干啥呢?)
    
           超级管理员登陆gitlab,将对应的用户的权限提升为 主程序员。
    
       如何将http拉取项目的方式调整为ssh免密
    
           1.打开电脑,无论是linux还是windows,先生成公钥
           2.将公钥粘贴到你gitlab对应的账户下。  点击右上角设置---ssh秘钥,添加即可。
    
       gitlab备份、恢复、升级
    
           备份:自带备份命令:
    
                # gitlab-rake gitlab:backup:create			#备份的命令
                
                	#没有说备份到哪儿?
                	#备份保留多久?
                	
                	#vim /etc/gitlab.rb
                	gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"	#备份的路径
                	gitlab_rails['backup_keep_time'] = 604800								#备份保留7天
                	
                		#修改了备份的路径,记得要执行 gitlab-ctl reconfigure
                		
                		
                [root@gitlab ~]# ll /var/opt/gitlab/backups
                总用量 152
                -rw------- 1 git git 153600 8月   9 16:50 1596963023_2020_08_09_12.0.3_gitlab_backup.tar
                
                
                
                #如何实现每天自动备份呢?
                		# contab即可。
                ```
    
               恢复:
    
    
                #1.停止数据写入服务:
                # gitlab-ctl stop unicorn
                # gitlab-ctl stop sidekiq
                
                #2.通过gitlab-rake命令进行恢复
                # gitlab-rake gitlab:backup:restore BACKUP=1596963023_2020_08_09_12.0.3
                		Restore task is done.
                	
                #3.重启gitlab,检查是否恢复完毕。
                ```
    
        
    
        迁移的步骤:
    
        ​	1.备份旧gitlab
    
        ​	2.在新机器安装相同环境的gitlab
    
        ​	3.在新机器恢复旧gitlab的备份
    
        ​	4.验证数据的完整性
    
        ​	5.将域名解析到新的gitlab服务器地址
    
        ​	6.保留旧gitlab服务器一段时间,确认没问题,销毁。( 7-15天 )
    
        
    
        升级的步骤:
    
        ​	1.gitlab的升级和其他的升级不一样。不支持跨域版本升级。只能小版本迭代。
    
        ​			gitlab-11版本-->gitlab-12版本,无法升级。
    
        ​			1.先升级到gitlab-11的最新版本--然后才能升级到gitlab-12版本,否则升级报错,然后提升不要跨域大版本升级。请先升级到某某版本。
    
        ​		1.先想办法升级到:gitlab-ce-11.9.9-ce.0.el7.x86_64.rpm
    
        ​		2.然后才能 升级到  gitlab-ce-12版本
    
        
    
        想完成迁移并且升级:
    
        ​	1.先实现迁移:
    
        ​	2.然后进行小版本的升级迭代
    
        ​	3.最后在升级到你需要的那个版本。   记得备份一次。
    
    
    
        ![](https://img2020.cnblogs.com/blog/1275194/202011/1275194-20201119165428596-374799993.png)   
    
    
        ![](https://img2020.cnblogs.com/blog/1275194/202011/1275194-20201119165439751-1117085015.png)
  • 相关阅读:
    linux 删除某种规则命名的文件
    adb shell 出现 error :
    android 开发,多个线程共用一个handler
    android 开发上传图片遇到返回 FileNotFoundException
    mysql 的存储过程调试软件
    输入adb shell 时 提示error: more than one device and emulator
    高德开发 android 出现 key 鉴权失败
    android 中设置HttpURLConnection 超时并判断是否超时
    LINQ to SQL语句(3)之Count/Sum/Min/Max/Avg
    C# 如何判断数据是否为 NaN
  • 原文地址:https://www.cnblogs.com/michael2018/p/14006603.html
Copyright © 2011-2022 走看看