美文网首页收藏文章Linux
git+jenkins代码上线

git+jenkins代码上线

作者: 吃可爱长大鸭 | 来源:发表于2019-11-25 23:34 被阅读0次

    第一章:自动化上线代码基本介绍

    1.软件开发生命周期 2.什么是环境? 3.什么是代码部署? 4.代码部署的方式? 5.什么是持续集成? 6.什么是持续交付? 7.什么是持续部署?

    第二章:持续集成

    1.什么是版本控制系统?

    gitlab                  svn
    

    2.版本控制系统解决了什么问题?

    解决了代码上线的集中管理和更新。
    

    3.常见版本控制系统svn与git区别?

    svn: 中心化的代码仓库
    git: 分布式的代码仓库
    

    5.安装和配置git

    #git的安装
    yum install git -y
    git --version
    ​
    git config --global user.name "马振凯"
    git config --global user.email "1003451503@qq.com"
    git config --global color.ui   "true"
    

    6.创建git仓库

    git init
    

    7.git仓库添加文件

    git  add   .    #添加文件到缓冲区
    git  commit  -m   'add three file'   #提交文件到本地仓库
    

    8.git修改文件名称并提交

    git  mv  file1  file4
    git commit -m 'change file name'
    

    9.git的文件对比

    git diff  file3  #本地目录和缓冲区文件对比
    git diff --cached  file3   #缓冲区文件和仓库文件对比
    

    10.实现回退功能

    git log --oneline
    git reset --hard 942bdf3
    ​
    查看所有历史版本
    git reflog --oneline
    git reset --hard 942bdf3
    
    撤销修改的文件
    
    提交到缓冲的区文件撤回
    git reset HEAD file3(文件名)
    ​
    未add到缓冲区的文件撤回
    git checkout -- file3(文件名)
    

    11.git分支管理

    #增加一个新分支
    git branch dev01
    #切换分支
    git checkout  dev01
    ​
    #在开发分支上合并主分支
    git merge master  -m '注释'
    ​
    #切回主分支
    git checkout  master
    #在主分支合并开发
    git merge dev01  -m '注释'
    

    12.git标签管理

    标签给commit起一个容易记的别名
    
    #给当前版本打标签
    git tag v1.2 
    ​
    #删除标签
    git  tag  -d  v1.2
    ​
    #给任意版本打标签
    git tag  -a v1.0  -m  '优化了1111  修复bug'  a119962 
    

    13.git远程仓库gitee

    14.gitlab安装

    私有代码仓库
    
    #上传gitlab-ce-12.3.5-ce.0.el7.x86_64.rpm到当前目录
    ​
    yum localinstall gitlab-ce-12.3.5-ce.0.el7.x86_64.rpm -y
    ​
    vim  /etc/gitlab/gitlab.rb
    #设置访问url和关闭prometheus
    external_url 'http://gitlab.oldqiang.com'
    prometheus_monitoring['enable'] = false
    ​
    #配置gitlab通过smtp发送邮件
    gitlab_rails['gitlab_email_enabled'] = true
    gitlab_rails['gitlab_email_from'] = '1003451503@qq.com'
    gitlab_rails['gitlab_email_display_name'] = 'mzk_gitlab'
    ​
    gitlab_rails['smtp_enable'] = true
    gitlab_rails['smtp_address'] = "smtp.qq.com"
    gitlab_rails['smtp_port'] = 465
    gitlab_rails['smtp_user_name'] = "1003451503@qq.com"
    gitlab_rails['smtp_password'] = "qq邮箱授权码"
    gitlab_rails['smtp_domain'] = "qq.com"
    gitlab_rails['smtp_authentication'] = "login"
    gitlab_rails['smtp_enable_starttls_auto'] = true
    gitlab_rails['smtp_tls'] = true
    ​#文件生成启动
    gitlab-ctl  reconfigure
    

    15.gitlab汉化

    wget  gitlab-v12.3.5-zh.tar.gz
    tar xf  gitlab-v12.3.5-zh.tar.gz
    gitlab-ctl stop
    \cp -a gitlab-v12.3.5-zh/*  /opt/gitlab/embedded/service/gitlab-rails/
    gitlab-ctl start
    

    16.gitlab-用户-用户组-项目之间的关系

    先创建用户组,在基于用户组创建项目,最后创建用户,编辑用户组,添加成员,注意权限
    

    17.gitlab备份和恢复

    #备份
    gitlab-rake gitlab:backup:create
    
    #恢复
    gitlab-ctl stop unicorn
    gitlab-ctl stop sidekiq
    gitlab-rake gitlab:backup:restore BACKUP=1510472027_2017_11_12_9.4.5 
    gitlab-ctl start unicorn
    gitlab-ctl start sidekiq
    
    vim /etc/gitlab/gitlab.rb
    gitlab_rails['manage_backup_path'] = true
    gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
    gitlab_rails['backup_keep_time'] = 604800
    
    #迁移云主机
    先备份,云主机安装相同版本,恢复
    

    18.gitlab版本升级

    gitlab升级,  10-->11-->12  #大版本可能不支持汉化
    

    扩展内容:svn

    1:安装svn服务器,讲svn中的数据迁移到git仓库
    
    yum install git-svn -y
    
    git clone svn
    
    #安装svn
    yum install subversion -y
    mkdir /svn/repo -p
    ​
    #初始化仓库
    svnadmin create /svn/repo
    ​
    cd /svn/repo/conf
    vim  svnserve.conf
    [general]
    anon-access = none
    auth-access = write
    password-db = passwd
    authz-db = authz
    realm = /svn/repo
    [sasl]
    ​
    ​
    vim passwd
    [users]
    admin = 123456
    ​
    vim authz
    [/]
    admin = rw
    test = r
    ​
    #启动svn服务
    svnserve -d -r /svn/repo
    ​
    #svn迁移到git
    yum  install  git-svn  -y
    git svn clone svn://10.0.0.100 --username=admin --no-metadata --authors-file=password.txt git
    ​
    cat password.txt
    admin=mazhenkai<1003451503@qq.com>
    

    第三章: 持续部署

    1.早期没有自动化工具如何上线?
    方式:
    
    纯手工scp 测试环境运行ok() cp code{,.bak}
    
    纯手工git pull|
    
    纯手工xftp上传 字符集文件
    
    纯手工rz上传压缩包,解压
    
    10G文件, 增量包 mysql.php /usr/lib /usrlib64
    
     
    
    缺点:
    
    a:全程运维参与,占用大量时间
    
    b:上线速度慢 选中即复制
    
    c:人为失误多,管理混乱
    
    d:回滚慢,不及时
    

    2.用脚本实现html类型自动化代码上线

    脚本需求:
    
    假设1一个集群有5个节点
    
    a:实现一键部署5个节点
    
    b:实现一键回滚到上个版本(秒级回滚) web web_v0.1 web_v0.2
    
     
    
    gitlab 拉取代码
    
    本地打包
    
    for 循环
    
    do
    
    scp 目标主机 传输压缩包
    
    从负载均衡上摘下来
    
    ssh 目标主机 解压压缩包, 删除软连接,新建软连接
    
    curl 访问 200
    
    从负载均衡上加回去
    
    done
    

    lb01,web01,web02都安装nginx

    yum install nginx -y
    
    #配置lb01负载均衡
    vi /etc/nginx/nginx.conf
    worker_processes  1;
    events {
        worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        upstream monitor {
        include /etc/nginx/monitor;
        }
        server {
            listen       80;
            server_name 10.0.0.5;
            location / {
           proxy_pass http://monitor;
               proxy_set_header Host $host;
               proxy_set_header X-Forwarded-For $remote_addr;
            }
        }
    }
    #创建upstream资源池文件
    vi  /etc/nginx/monitor
    server 10.0.0.7;
    server 10.0.0.8;
    
    #配置web01和wen02
    vi /etc/nginx/nginx.conf
    worker_processes  1;
    events {
        worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        server {
            listen       80;
            server_name  10.0.0.7;
            location / {
                root  /usr/share/nginx/html;
                index  index.html index.htm;
            }
        }
    }
    

    3.Jenkins安装

    https://mirrors.tuna.tsinghua.edu.cn/jenkins/

    image.png
    image.png
    image.png
    #快速安装tomcat
    wget   jdk-8u102-linux-x64.rpm
    rpm -ivh jdk-8u102-linux-x64.rpm
    mkdir /app
    wget  apache-tomcat-8.0.27.tar.gz
    tar xf apache-tomcat-8.0.27.tar.gz -C /app
    /app/apache-tomcat-8.0.27/bin/startup.sh 
    mv jenkins.war ROOT.war
    cp -a ROOT.war  /app/apache-tomcat-8.0.27/webapps/
    /app/apache-tomcat-8.0.27/bin/startup.sh
    #访问网页
    http//:10.0.0.100:8080
    

    解析本地访问国内源

    https://my.oschina.net/VASKS/blog/3106314

    本地安装nginx

    yum -y install nginx
    
    vim /etc/nginx/nginx.conf
    ......
    #nginx主配置文件server以上保存,以下替换为下面内容
    server
        {
            listen 80;
            server_name mirrors.jenkins-ci.org;
    
            location / {
                proxy_redirect off;
                proxy_pass https://mirrors.tuna.tsinghua.edu.cn/jenkins/;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Accept-Encoding "";
                #proxy_set_header User-Agent "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.49 Safari/537.36";
                proxy_set_header Accept-Language "zh-CN";
            }
            index index.html index.htm index.php;
    
            #error_page   404   /404.html;
    
            location ~ /\.
            {
                deny all;
            }
        }
    }
    
    nginx -t   #检查语法
    systemctl start nginx   #启动nginx
    
    tcpdumapp/p port 80   #监听80端口
    ls  /root/.jenkins    #所有配置文件在这个目录下
    /app/apache-tomcat-8.0.27/bin/startup.sh  #重启jenkins
    

    jenkins自动代码上线使用

    1.nginx更新版本脚本自动化上线部署

    image.png
    image.png
    image.png
    image.png

    web服务器nginx启动

    2.nginx更新+回退脚本自动化上线部署

    image.png
    image.png
    image.png
    image.png
    image.png

    3.安装maven插件

    image.png
    image.png
    image.png
    image.png
    image.png

    4.java代码用jenkins自动上线

    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png

    测试环境代码上线

    1.源代码的下载
    mkdir /opt   #创建目录
    cd /opt      #进到目录下
    wget   jeesns.zip   #下载源代码
    2.安装数据库,并导入数据
    yum install mariadb-server  -y   #安装数据库
    systemctl  start mariadb         #启动数据库
    systemctl enable mariadb         #加入开机自启
    mysql_secure_installation        #初始化数据
    mysql                            #进入数据库
    mysql> create database  jeesns;  #创建库
    mysql> grant all on jeesns.*  to jeesns@'10.0.0.%' identified by '123456'; #库授权
    cd  /opt/jeesns/jeesns-web/database/   #进到源码库
    mysql  jeesns  <jeesns.sql     #倒库
    3.修改数据库的配置文件
    vim /opt/jeesns/jeesns-web/src/main/resources/jeesns.properties
    ...
    4.maven编译jeesns
    cd /opt/jeesns
    mvn clean package
    #提速的话
    wget  http://192.168.13.120/191118/jeesns.maven.tar.gz
    tar xfP   jeesns.maven.tar.gz
    scp -rp /opt/jeesns/jeesns-web/target/jeesns-web.war /app/apache-tomcat-8.0.27/webapps/
    /app/apache-tomcat-8.0.27/bin/shutdown.sh
    /app/apache-tomcat-8.0.27/bin/startup.sh
    

    相关文章

      网友评论

        本文标题:git+jenkins代码上线

        本文链接:https://www.haomeiwen.com/subject/pohswctx.html