上一篇创建了一个centos的容器,而且已经安装了openssh [root@node6 ~]# docker ps -a f2320c5d3c54 centos minutes ago Exited () seconds ago compassionate_elbakyan [root@node6 ~]# docker images centos_jenkins latest deca1dcb74be minutes ago 703MB 1. 配置作为jenkins 的slave 2. 点击构…
CentOS 7.2重启网络报错 Failed to start LSB: Bring up/down 我的虚拟机原本有两块网卡,一块叫eno16777736,另一块叫eno5033674.本来是正常使用,后来我下线了eno5033674,也是正常使用吧.后面手残删了ifcfg-eno16777736这个文件,结果# systemctl rstart network.service 就出错了. 使用# journalctl -xe查看日志 发现了一份红色错误(当时没截图) Failed to s…
前面实验了使用docker搭建一个jenkins,下面实验使用docker作为jenkins的slave节点 1. 环境准备 一个运行Docker的主机或者群集 Jenkins应该能访问互联网,方便安装插件. Jenkins服务器能够和GitHub通信. Jenkinss对Java所需要的Git,和Maven配置应该配置好. 一个Jenkins master. 2. 在Docker主机上开启远端的访问API 此处针对Docker 18.03 /etc/docker/daemon.json会被do…
代码质量管理平台 一.checkout和打包功能 1.1 gitlab在新建一个文件 后续在写入内容 1.2 Jenkins新建一个任务 两个参数 1.3 流水线配置 copy仓库地址: http://172.25.254.131/devops/jenkins.git 保存 1.4 生成流水线脚本 复制给i他地址.配置pipeline syntax 1.6 编写sonar.kenkinsfile文件 #!/usr/bin/groovy node(){ //checkout checkout([$…
一.参数化构建 1.1 各个参数的信息 凭据参数存储一个用户的账号密码信息,等等,运用最多的是选项参数 1.2 使用选项参数 构建已经变成参数化构建 1.3 获取这个值,修改Jenkinsfile文件 String srcType = "${env.srcType}" #使用env变量获取参数 node { def mvnHome stage('Checkout') { // for display purposes println('checkcode') } stage('Buil…
背景 在docker容器中部署了一微服务,该服务需要docker push镜像到docker registry.因此,docker容器中需要安装docker服务.但在启动容器的时候,却报错: can't initialize iptables table `filter': Permission denied (you must be root) Perhaps iptables or your kernel needs to be upgraded. 原因 在容器中部署docker服务,而do…
场景:我的centos-204是一台centos的机器,本来用https://www.cnblogs.com/zndxall/p/8297356.html 的centos slave方式搭建ok的,一直在使用中,之前重启机器slave相关服务也是可以自动起来的,但是最近我觉得我的这台机器构建太慢了,让运维帮我加成四核的cpu,结果他加完了,重启了机器,slave相关服务就怎么也起不来,一直报错: 没办法,查询了一圈还是没找到答案,后面干脆重新装了centos-204,启动方式还是“lunch s…
使用命令: yum install kubernetes 报错: Error: docker-ce-cli conflicts with :docker--.git07f3374.el7.centos.x86_64 You could try using --skip-broken to work around the problem You could try running: rpm -Va --nofiles --nodigest 错误原因: yum安装kubernetes之前已经安装过d…
刚刚用docker-compose部署elk的时候,没有起来,查看日志的时候,发现在数据卷挂载的时候,报错权限不足. 由于日志不在了,这里就直接贴出解决办法. 问题原因及解决办法 原因是CentOS7中的安全模块selinux把权限禁掉了,至少有以下三种方式解决挂载的目录没有权限的问题: 1.在运行容器的时候,给容器加特权,及加上 --privileged=true 参数: docker run -i -t -v /soft:/soft --privileged=true 686672a1d0c…
在docker部署mysql时 报错 找不到 容器不自动启动  , docker start 容器名  也没有效果 多次尝试发现 原因是创建容器时在 下面创建的 更改为下创建 问题解决…
一 基础环境准备 [root@node6 ~]# cat /etc/redhat-release CentOS Linux release (Core) [root@node6 ~]# yum -y install epel-release [root@node6 ~]# yum update [root@node6 ~]# uname -r -.el7.x86_64 二 安装docker 2.1 使用脚本安装 [root@node6 ~]# curl -fsSL https://get.doc…
一 环境准备 1.1 安装插件Email Extension 系统管理-管理插件-安装Email Extension插件 1.2 配置 配置jenkins邮箱的全局配置:系统管理-系统设置-完成邮箱配置-测试是否配置正确,然后配置扩展邮件功能 完成项目job的邮箱配置:配置-增加构建后操作步骤Editable Email Notification 1.3 配置扩展功能 1.4 构建一个任务 1.5 点击构建 1.6 构建结果 邮件内容 二 使用自定义邮件 2.1 配置 此处添加为自己定义的邮件…
一.提交代码自动构建 当开发人员在gitlab提交代码后,会自动触发jenkin构建 点击项目---->点击diy_maven-TEST----->点击配置--->构建触发器---->根据需求选择触发器 1.1 安装gitlab hook插件 系统管理----->选择插件管理-------->查找gitlab-------->选择直接安装 安装完成 1.2 配置gitlab仓库 点击项目---->点击diy_maven-TEST----->点击配置--…
在实际生产中,我们经常会需要通过判断一个结果作为一个条件去执行另一个内容,比如判断一个文件是否存在,判官一个命令是否执行成功等等 现在我们选择其中一个场景进行实验,当某个目录下存在,则执行操作 1. 下载一个文件 [root@node1 ~]# cd /opt/ [root@node1 opt]# wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz [root@node1 opt]# ll -rw-r--r-- 1 root…
前面学习了参数的传递和调用,下面研究一下根据参数作为条件执行不同的stage 使用叫when 和expression控制某一个stage的运行, 运行场景例如写了多个stage,这个pipeline脚本执行执行冒烟测试,和集成测试.有时候,希望快速执行冒烟测试,想根据结果看看,不一定一上来就执行集成测试.为了达到这种控制效果,我们就需要使用逻辑控制.在pipeline中就使用when 和expression两个命令.例如,如果json文件中冒烟测试变量为true,我就只执行冒烟测试的stage,…
1 if控制语句 使用一个简单的If控制语句 pipeline { agent any stages { stage('flow control') { steps { script { == ) { println "pass" }else { println "failed" } } } } } } 构建结果 控制台输出 Started by user darren ning Running in Durability level: MAX_SURVIVABIL…
在jenkins可能会有战役中场景,就是在一个job执行完之后,把这个执行结果作为另一个job的执行条件 比如A执行完,如果A执行成功,则执行B,如果失败则执行C 1 前期准备 A任务 import hudson.model.*; pipeline{ agent any environment { INPUT_JSON = "/tmp/test.json" } stages{ stage("Hello Pipeline") { steps { script { pr…
在上一篇学习了把参数写进Json文件,然后通过去Json文件,调用参数的方法 1. 三元运算符介绍 调用的方法是通过一个三元运算符实现的 gender = prop.GENDER? prop.GENDER.trim() : "" is_marry = prop.IS_MARRY? prop.IS_MARRY.trim() : false 这种写法就是Java中三元运算符的写法,prop.GENDER?表示判断这个变量是否存在,如果存在我们就prop.GENDER.trim(), 如果不…
因为最近使用Pipeline声明式语法构建项目,但是最近项目的参数设置较多,特地的来学习一下关于参数的调用和测试,主要式从一个大神那里学习的,结尾回贴上大神的博客链接 1 构建一个pipeline项目 2 编写jenkinsfile文件 import hudson.model.*; pipeline{ agent any stages{ stage("Hello Pipeline") { steps { script { println "Hello Pipeline!&qu…
1. 分支策略 持续集成中使用的分支策略包括以下三个: The master branch The integration branch The feature branch 而CD只在Integration的release上分支上执行即可. 2. Release 分支 一些团队采用发布分支的策略.release分支是在所有代码在生产环境中经过验证之后创建的.也就是从master上面拉取的.创建release分支的目的就是在相应的版本上进行bug修复. 3. CD 管道 在此处,不会再创建新的p…
持续集成不仅包含了Jenkins或者相关其它的CI工具,也包含了包含代码如何控制,采用的什么分支策略等.不同的组织可能采用不同的类型的策略来完成CI,策略类型和项目的类型的有很大的关系. 一 分支策略 1.1 本实验分支 分支能够有效的对代码较好的管理,也是能够把工作的代码和开发环境的代码隔离的有效方式.主要有三种的分支策略类型– master分支– integration 分支– feature 分支 1.master分支 master分支也叫做生产分支,该分支的代码全部是经过测试OK的代码.…
前言 前面已经有介绍sonar的安装,简单应用,下面在简答的研究一下sonar和jenkins集成的简单使用,对于sonar的安装不做介绍 一 sonar的简单介绍 持续检查避免了低质量的代码,比如SonarQube工具就能够帮助我们完成此项.每次代码提交后,在代码上就会执行代码分析. 分析是基于代码分析工具中定义的一些规则,如果代码通过了错误阀值,那么它会允许到生命周期的下一步,如果超过了设定的阀值,那么直接返回错误. SonarQube是代码质量管理工具,允许团队去管理,追踪和改善他们的源代…
需要一种机制去存储所有的二进制代码(build,packages,third-party plugins等)到类似于版本控制系统的系统. 像Git,SVN存储代码,它们存储的往往是源代码,不是二进制文件.Artifactory或者Nexus就是和Jenkins紧密集成的二进制文件存储库系统. 可以带来以下好处:追踪构建(谁触发?谁构建)依赖关系部署历史 jfrog artifactory是一款二进制存储管理工具,用来管理构建工具(如:maven.gradle)等所依赖的二进制仓库,以方便管理第三…
简介 多分支的管道是在jenkins2.x中新增的功能 . 多分支管道允许你针对分布式的控制器的每个分支创建一个管道. 下图是对它的一个描述.使用jenkinsfile去创建多分支的管道,jenkinsfile可以存放在代码仓库中. Jenkinsfile只是定义CI管道的一个脚本. 另外,多分支管道的设计初衷就是当Git仓库中的代码改变时,去自动触发构建.下图是对它的一个描述. 一. 准备工作 (1)在[全局工具配置]中Maven工具已经配置好.(2)安装了[Pipeline Maven In…
简介 前面简单的做了管道的实验,看了一下的它的效果 声明式管道是Groovy语法中的一个更简单和结构化的语法.下面主要学习明式管道语法. 一 声明式管道的基本结构 以上节的代码为例 node { def mvnHome stage('Preparation') { // for display purposes // Get some code from a GitHub repository git 'https://github.com/jglick/simple-maven-project…
一 简介 由于在公司构建很多工作,都是使用的maven工作构建的,这种构建方式很大缺点就是所有的工作都需要一步一步的配置,当项目较多,需求变动时,需要很大的精力去修改配置,很费劲 Pipeline即为代码的概念让我们重新认识了CI管道, 这个理念就是去完整的CI/CD管道作为代码,代码可以像程序代码一样被版本控制所管理.前面虽然做过实验,但是不系统,不容易理解,现在重新从零开始整理学习 以下是将管道作为代码的一些优势: 它是可编程的 所有的CI/CD管道配置都可以在一个单一的文件内描述. 它是版…
一.SonarQube静态代码扫描平台 1.1 安装 https://www.sonarqube.org/官网 1.2 下载软件包 https://www.sonarqube.org/downloads/ [root@sonar-server ~]# mkdir /usr/local/sonarc [root@sonar-server ~]# cd /usr/local/sonarc [root@sonar-server sonarc]# wget https://binaries.sonars…
一.用户名密码错误 打开jenkins发现用户名密码错误,解决 1.1 找到config.xml文件 [root@jenkins-master ~]# ll -a drwxr-xr-x. root root Apr : .jenkins [root@jenkins-master ~]# cd .jenkins/ [root@jenkins-master .jenkins]# ll -rw-r--r--. root root Apr : config.xml #找到这个文件 -rw-r--r--.…
一.准备环境 准备三台机器 角色 IP地址 用户名 密码 jenkins-master   172.25.254.130    admin   meiyoumima gitlab 172.25.254.131 tseter  meiyoumima jenkins-slave(Maven 172.25.254.134 N/A N/A 二.jenkins-master安装 2.1 安装Java [root@jenkins-master ~]# yum install java-1.8.0-openj…
今天尝试安装了centos系统 玩一玩 刚刚装好的操作系统 ping www.baidu.com的时候  报出 name or service not known 查了好多资料,都没有很好的解决 最后综合好几个资料 解决办法如下: 1 首先 添加dns服务器 vi /etc/resolv.conf 在文件中添加如下两行: nameserver 8.8.8.8nameserver 8.8.4.4 保存退出,重启服务器.之后再ping 一次试一试 如果没有解决 继续: 2 设置一个文件: vi /e…