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

一测 开发+测试

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

测试提交测试报告

主管确认签字

上线 运维负责

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

运维负责上线

原文地址:https://www.cnblogs.com/wenyule/p/10013970.html