zoukankan      html  css  js  c++  java
  • Jenkins

    CI/CD, DevOps介绍

    持续集成 CI: 代码合并,构建,部署,测试都在一起,不断地执行这个过程,并对结果反馈.

    持续交付 CD: 部署到生产环境,给用户使用

    持续部署 CD: 部署到生产环境.

    部署GIT (GIt版本控制服务器)

    ~]# yum install git -y
    ~]# useradd git
    ~]# passwd git
    ~]# su git
    ]$ cd
    ~]$ mkdir repos
    ~]$ cd repos/
    ]$ mkdir app.git
    ]$ cd app.git/
    ]$ git --bare init
    初始化空的 Git 版本库于 /home/git/repos/app.git/
    ]$ ls -a
    .  ..  branches  config  description  HEAD  hooks  info  objects  refs
    

        测试服务器 clone 代码

    ]# ssh-keygen
    ]# ssh-copy-id git@172.16.0.41
    ~]# mkdir test1
    ~]# cd test1
    ]# git clone git@172.16.0.41:/home/git/repos/app.git
    

    Jenkins

    安装 jdk and maven

    jdk 官网: https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

    maven下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.0/binaries/

    jdk 安装

    wget https://download.oracle.com/otn-pub/java/jdk/8u201-b09/42970487e3af4f5aa5bca3f542482c60/jdk-8u201-linux-x64.tar.gz
    tar xf jdk-8u201-linux-x64.tar.gz -C /usr/local/
    mv jdk1.8.0_201/ jdk1.8
    
    vim /etc/profile
    export JAVA_HOME=/usr/local/jdk1.8
    export JRE_HOME=${JAVA_HOME}/jre
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
    export  PATH=${JAVA_HOME}/bin:$PATH
    
    source /etc/profile
    java -version
    java version "1.8.0_201"
    Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
    Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)
    

    maven 安装

    cd /usr/local/ 
    wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz
    tar xf apache-maven-3.6.0-bin.tar.gz 
    mv apache-maven-3.6.0/ maven3.6
    
    vim /etc/profile
    export PATH="/usr/local/maven3.6/bin:$PATH"
    
    source /etc/profile
    mvn -v
    Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T02:41:47+08:00)
    Maven home: /usr/local/maven3.6
    Java version: 1.8.0_201, vendor: Oracle Corporation, runtime: /usr/local/jdk1.8/jre
    Default locale: zh_CN, platform encoding: UTF-8
    OS name: "linux", version: "3.10.0-957.1.3.el7.x86_64", arch: "amd64", family: "unix"
    

    Jenkins 安装

    官网: https://jenkins.io/

    sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
    sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
    yum install jenkins
    

      修改配置

    1) 修改/var/lib/jenkins/updates/default.json
        google改为www.baidu.com
    
    2)  修改/var/lib/jenkins/hudson.model.UpdateCenter.xml
        改地址默认jenkins默认为:https://updates.jenkins.io/update-center.json,改为http
    
    3) 可能要修改 /etc/init.d/jenkins 指定jdk 路径
        candidates="
        /usr/local/jdk1.8/bin/java
        "
    

      Jenkins 配置 jdk 和 maven(全局工具配置)

     用户权限管理

    插件: Role-based Authorization Strategy

    系统管理 --> 插件管理 进行安装

     

    系统管理 --> 全局安全配置 --> 授权策略

     系统管理 --> Manage and Assign Roles

      添加 全局管理角色组 user 只有读取权限

      配置项目角色

      创建项目名称 : testB

      正则匹配项目 符合B.* 所有的项目都会匹配到

      权限: 构建 取消 读取 读取工作空间

    测试用户权限

      全局安全配置,允许用户注册

    分配角色权限

      添加刚刚注册的用户指定相应的权限,即可登录 jenkins

      分配指定的项目

    可以添加视图管理项目

     参数化构建

    插件: Extended Choice Parameter 与 Git Parameter

    自带的参数化构建

      项目 --> 配置 --> 构建(执行 shell ) --> 立即构建 --> 查看控制台输出 

    参数化构建

    构建过程中可以传参

     安装扩展参数化构建插件

    安装Git插件

    修改配置文件

    ~]# vim /etc/sysconfig/jenkins
    JENKINS_USER="root"
    ~]# systemctl restart jenkins
    

     Master-Slave架构

    系统管理 -->> 管理节点 -->> 新建节点 -->> 

     

    成功在线

    选择应用 slave 节点

     

     Jenkins 流水线(Pipeline)

     创建 pipeline-test

    流水线自定义脚本(可以点击 流水线语法 进行定义脚本)

    使用 git 存储脚本

    # git 服务器操作
    [git@test-node1 ~]$ cd repos/
    [git@test-node1 repos]$ mkdir jenkinsfile
    [git@test-node1 repos]$ cd jenkinsfile/
    [git@test-node1 jenkinsfile]$ git --bare init
    初始化空的 Git 版本库于 /home/git/repos/jenkinsfile/
    
    
    # 编写脚本上传服务器
    [root@mysql-master ~]# git clone git@172.16.0.41:/home/git/repos/jenkinsfile
    正克隆到 'jenkinsfile'...
    warning: 您似乎克隆了一个空版本库。
    [root@mysql-master ~]# cd jenkinsfile/
    
    [root@mysql-master jenkinsfile]# vim jenkinsfile
    node {
      // def mvnHome
       stage('checkout') { // for display purposes
          // Get some code from a GitHub repository
          checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[url: 'git@172.16.0.41:/home/git/repos/app.git']]])
          //git 'https://github.com/jglick/simple-maven-project-with-tests.git'
          // Get the Maven tool.
          // ** NOTE: This 'M3' Maven tool must be configured
          // **       in the global configuration.           
          //mvnHome = tool 'M3'
       }
       stage('mven Build') {
          // Run the maven build
            echo '1111'
       }
       stage('deploy') {
            echo 'deploy OK'
            
       }
       stage('test'){
           echo 'test'
       }
    }
    
    
    [root@mysql-master jenkinsfile]# git add .
    [root@mysql-master jenkinsfile]# git commit -m 'jenkinfile'
    [master(根提交) b30531f] jenkinfile
     1 file changed, 23 insertions(+)
     create mode 100644 jenkinsfile
    [root@mysql-master jenkinsfile]# git push origin master 
    Counting objects: 3, done.
    Compressing objects: 100% (2/2), done.
    Writing objects: 100% (3/3), 626 bytes | 0 bytes/s, done.
    Total 3 (delta 0), reused 0 (delta 0)
    To git@172.16.0.41:/home/git/repos/jenkinsfile
     * [new branch]      master -> master
    

      项目配置 (脚本路径 就是自定义的 jenkinsfile 名字)

    邮件通知

    插件: Email Extension Plugin

     应用案例

    自动发布php项目

    插件: Maven Lntegration plugin

    数据准备

    # git 服务器
    su git
    cd
    cd repos/
    
    ]$ ls
    appgit  app.git
    
    mkdir wordpress
    cd wordpress/
    git --bare init
    初始化空的 Git 版本库于 /home/git/repos/wordpress/
    
    # test机器:
    
    wget https://cn.wordpress.org/latest-zh_CN.tar.gz
    tar zxvf latest-zh_CN.tar.gz 
    cd wordpress/
    git init
    git remote add origin git@172.16.0.41:/home/git/repos/wordpress
    git add .
    git commit -m 'all'
    git push origin master
    

     搭建 lnmp 环境并且(略)

     jenkinsfile git 仓储 上传 jenkinsfile 文件

    [root@mysql-master jenkinsfile]# cat jenkinsfile-php 
    node ("slave1-172.16.0.40") {
       stage('git checkout') { 
           checkout([$class: 'GitSCM', branches: [[name: '${branch}']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[url: 'git@172.16.0.41:/home/git/repos/wordpress']]])
       }
       stage('code copy') {
            sh '''rm -rf ${WORKSPACE}/.git
            mv /usr/share/nginx/html/test.wp /data/backup/test.wp-$(date +"%F_%T")
            cp -rf ${WORKSPACE} /usr/share/nginx/html/test.wp '''
       }
       stage('test') {
           sh "curl http://172.16.0.40/status.html"
       }
    }
    
    [root@mysql-master jenkinsfile]# git add .
    [root@mysql-master jenkinsfile]# git commit -m 'file-php'
    [master c7b0608] file-php
     1 file changed, 14 insertions(+)
     create mode 100644 jenkinsfile-php
    [root@mysql-master jenkinsfile]# git push origin master 
    Counting objects: 4, done.
    Compressing objects: 100% (3/3), done.
    Writing objects: 100% (3/3), 599 bytes | 0 bytes/s, done.
    Total 3 (delta 0), reused 0 (delta 0)
    To git@172.16.0.41:/home/git/repos/jenkinsfile
       b30531f..c7b0608  master -> master
    

      jenkins 项目部署

    检查

  • 相关阅读:
    MySQL select语句中where条件的提取过程
    MySQL特性:ICP,Index Condition Pushdown
    MySQL特性:BKA,Batched Key Access,批量索引访问
    MySQL特性:MRR,Multi-Range Read,多范围读
    show engine innodb status 输出结果解读
    IPv6的一点使用小计
    MySQL 通过ibd恢复数据
    explain 小结
    clickhouse的多路径存储策略
    cenos6.5升级glibc2.18
  • 原文地址:https://www.cnblogs.com/yanshicheng/p/10689127.html
Copyright © 2011-2022 走看看