环境准备
1.准备2台安装好CENTOS7.4系统的虚拟机,内存1G+。
2.所有虚拟机的防火墙和SELINUX关闭
3.主机名及IP地址关系如下:
Jenkins 192.168.205.191 不需要安装软件
Gitlab 10.0.0.190 安装好gitlab
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
多次构建,会保留最后一次成功的在系统上
Jenkins获取Gitlab源代码
用户权限不够改成root 用户 或者做sudo授权
需要安装git 和ssh 公钥gitlab授权 或者使用已有的私钥
不要随意改用户,改完改用户的配置文件,工作目录会没
node1 拿到源码,部署到服务器,
只要gitlab相应分支一变化,就触发构建
构建触发器
源码管理,直接从gitlab 拉取
添加集成token,代码项目选项里面设置
gitlab 改动后 测试触发
构建完成后在gitlab 上显示
查看job集成情况
能够在gitlab 上查看构建结果,
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 仓库
编译后的执行文件,放到
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提供
然后在Jenkins上 创建 pipeline项目,并配置从gitlab 拉取Jenkinsfile (前提做完密钥授权后这里就不需要再输入)
Jenkinsfile pipeline 语法,可以根据需要,生成相应语法,然后粘贴到Jenkinsfile 文件中
示例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"‘ } } } }
一测开发+测试
二测测试+加内测用户
测试提交测试报告
主管确认签字
上线运维负责
各部门主管在上线申请签字
运维负责上线
原文:https://www.cnblogs.com/wenyule/p/10013970.html