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

    环境准备

    1.准备2台安装好CENTOS7.4系统的虚拟机,内存1G+。

    2.所有虚拟机的防火墙和SELINUX关闭

    3.主机名及IP地址关系如下:

    Jenkins 192.168.205.191    不需要安装软件

    Gitlab 10.0.0.190    安装好gitlab

    Jenkins --> 安装

    jenkins 目录结构
    
    Jenkins 没有数据库,一切皆文件
    [root@jenkins jenkins]# rpm -ql jenkins
    /etc/init.d/jenkins
    /etc/logrotate.d/jenkins
    /etc/sysconfig/jenkins
    /usr/lib/jenkins                # 程序文件目录,升级直接覆盖war 包
    /usr/lib/jenkins/jenkins.war
    /usr/sbin/rcjenkins
    /var/cache/jenkins
    /var/lib/jenkins
    /var/log/jenkins
    
    
    /var/lib/jenkins/plugins/   插件目录
    /etc/sysconfig/jenkins   配置文件目录(修改启动用户和端口等)
    /usr/lib/jenkins/jenkins.war    升级时直接替换war包
    /var/lib/jenkins/workspace/    工作目录,构建的数据目录
    [vagrant@jenkins ~]$ ll /var/lib/jenkins/jobs/      # 项目目录
     total 12
     drwxr-xr-x. 3 jenkins jenkins 4096 Nov 24 02:51 MyFirstJob
     drwxr-xr-x. 4 root    root    4096 Nov 24 12:17 MyMavenJob
     drwxr-xr-x. 3 root    root    4096 Nov 24 12:54 MyPipelineJob

    多次构建,会保留最后一次成功的在系统上 

    8c098854-2dcb-4f8e-bccb-f99e4d605e08            920ae2b7-a701-42a7-b6cd-2a1d5f6d9618           ca7d9581-4516-4105-a6e5-4d779f509dc6                

     

     

    Jenkins获取Gitlab源代码

    fb15c03f-8b3b-4540-a497-ac36aa18e4c7

    用户权限不够改成root 用户  或者做sudo授权

    48b41ef2-0f90-487c-85e4-604b920b9157

    327330484

    需要安装git 和ssh 公钥gitlab授权 或者使用已有的私钥

    328160328

    不要随意改用户,改完改用户的配置文件,工作目录会没

    329187093

    node1 拿到源码,部署到服务器,

    341598765

    341805687

    Jenkins配置Gitlab自动触发构建

    只要gitlab相应分支一变化,就触发构建

    构建触发器

    ed767cdf-fdd4-4efb-ab3d-0586b14aa308

    01cf9e7f-9aba-46cf-83eb-1d6a28ad86c8

    源码管理,直接从gitlab 拉取

    2fce5cbc-07f6-42a8-ad4b-4e7148808da2

    7371afe3-b7c1-4d10-87b2-cf8afeb6fbb5

    添加集成token,代码项目选项里面设置

    208de876-5dc0-48e8-8925-1284c8b9f251

    2c7877e9-93a4-435c-b50c-5e6d5f0a54c1

    gitlab 改动后 测试触发

    40c564dd-d9c7-485a-9e91-be4776f3aeec41e57ce6-366a-4510-8a97-dd7c01c41c76

     

    配置jenkins返回构建状态到Gitlab

    dcd717ac-80d5-4f6b-b619-e0e3af9b56f8

    6a88905c-b2db-4baf-878a-8679ee1bcda2

    98d07488-2933-4472-8bef-604e96f13725

    构建完成后在gitlab 上显示

    5225d406-8e87-48a5-80b5-421d8963f99f

    查看job集成情况

    0a777151-267c-4821-ae2a-07073cdaf193

    能够在gitlab 上查看构建结果,

    Jenkins配置maven

    maven 是一套 java 项目管理工具,

    1、下载Maven 3安装包

    官网:http://maven.apache.org/download.cgi

    清华镜像:https://mirrors.tuna.tsinghua.edu.cn/apache/maven/

    2、安装Maven

    tar xf apache-maven-3.3.9-bin.tar.gz

    mv apache-maven-3.3.9 /usr/local/

    ln -s /usr/local/apache-maven-3.3.9/ /usr/local/maven

    /usr/local/maven/bin/mvn -v

    3、编辑/etc/profile文件,在末尾添加

    export PATH=/usr/local/apache-maven-3.3.9/bin/:$PATH

    clean

    test

    package

    deploy

    m2 仓库

    编译后的执行文件,放到

    Jenkins Pipeline介绍

    1、什么是PIPELINE

      JENKINS2.0的精髓是PIPELINE AS CODE,是帮助JENKINS实现Cl到CD转变的重要角色。什么是PIPELINE,简单来说,就是一套运行于JENKINS上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂发布流程。PIPELINE的实现方式是一套GROOVYDSL,任何发布流程都可以表述为一段GROOVY脚本,并且JENKINS支持从代码库直接读取脚本,从而实现了PIPELINE AS CODE的理念。

    2、PIPELINE的几个基本概念:

    STAGE:阶段,一个PIPELINE可以划分为若干个STAGE,每个STAGE代表一组操作。注意,STAGE是一个逻辑分组的概念,可以跨多个NODE。

    NODE:节点,一个NODE就是一个JENKINS节点,或者是MASTER,或者是AGENT,是执行STEP的具体运行期环境。

    STEP:步骤,STEP是最基本的操作单元,小到创建一个目录,大到构建一个DOCKER镜像,由各类JENKINSPLUGIN提供

     

    在gitlab 上创建 Jenkinsfile (项目根目录)

    2516cee0-d125-48a9-8428-986d271b2f03

    然后在Jenkins上  创建 pipeline项目,并配置从gitlab 拉取Jenkinsfile (前提做完密钥授权后这里就不需要再输入)

    3f4a6bad-3dc0-4daf-b095-466cfdc034ce

    Jenkinsfile pipeline 语法,可以根据需要,生成相应语法,然后粘贴到Jenkinsfile 文件中

    5ccf03b5-f4ea-485f-8973-7683c9c1703b

    示例1
    pipeline{
        agent any
        stages{
            stage("get code"){
               steps{
                   echo "get code from scm"
               }
            }
            stage("package"){
                steps{
                    echo "packge code"
                }
            }
            stage("deploy"){
                steps{
                    echo "deploy packge to node1"
                }
            }
        }
    }
    
    
    示例2
    pipeline{
        agent any
        stages{
            stage("get code"){
               steps{
                   checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '06ac7536-b4d0-400f-ae10-fb71cdb266dc', url: 'git@192.168.56.11:oldboy/monitor.git']]])
               }
            }
            stage("package"){
                steps{
                    sh 'cd /var/lib/jenkins/workspace/pipeline-job && tar czf /opt/web-$(date +%F).tar.gz .'
                }
            }
            stage("deploy"){
                steps{
                    sh 'scp /opt/web-$(date +%F).tar.gz 192.168.56.11:/var/www/html'
                    sh 'ssh 192.168.56.11 "cd /var/www/html/&&tar xf web-$(date +%F).tar.gz"'
                }
            }
        }
    }
    
    pipeline

    CI

    1)开发代码

    2)审核代码

    主干

    分支

    3)Git本地合并分支

    4)本机环境测试代码

    5)开发上线代码到GitHub

    CD

    一测 开发+测试

    二测 测试+加内测用户     运维负责部署

    测试提交测试报告

    主管确认签字

    上线 运维负责

    各部门主管在上线申请签字

    运维负责上线

  • 相关阅读:
    2049
    2046 ACM 数学
    1290 ACM 数学
    2017 ACM 字符串的本质
    1171 Big Event in HDU 01背包
    2045 数学:排列组合
    git命令(版本控制之道读书笔记)
    mysql:赋予用户权限、查看及修改端口号
    Linux系统的命令别名功能(转)
    回到上次目录、历史命令查找快捷方式及执行时间显示设置、查看系统版本
  • 原文地址:https://www.cnblogs.com/wenyule/p/10013970.html
Copyright © 2011-2022 走看看