ContOS 7 安装Jenkins
2019独角兽企业重金招聘Python工程师标准>>>
Jenkins是一款能提高效率的软件,它能帮你把软件开发过程形成工作流,典型的工作流包括以下几个步骤
- 开发
- 提交
- 编译
- 测试
- 发布
有了Jenkins的帮助,在这5步中,除了第1步,后续的4步都是自动化完成的,具体的,当你完成了提交,Jenkins会自动运行你的编译脚本,编译成功后,再运行你的测试脚本,这一步成功后,接着它会帮你把新程序发布出去,特别的,在最后一步,你可以选择手动发布,或自动发布,毕竟发布这件事情,还是需要人为的确认一下比较好。简而言之
Jenkins可以帮你在写完代码后,一键完成开发过程中的一系列工作
使用Jenkins的好处显而易见,它减少了你的重复劳动。更重要的是,一个团队的开发流程一开始是不一致的,不一致往往会带来各种各样的问题,最终体现在软件的质量或开发效率不够高,而Jenkins会帮你规范大家的行为,从而避免一系列的问题。
安装
Jenkins安装非常简单,以CentOS为例,执行以下命令即可
sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo
sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
sudo yum -y install jenkins
值得注意的是,如果你的操作系统是CentOS,且运行的是GCJ版本的java,则需要做一下更新
$ java -version
java version "1.5.0"
gij (GNU libgcj) version 4.4.6 20110731 (Red Hat 4.4.6-3)
$ sudo yum remove java
$ sudo yum install -y java-1.7.0-openjdk
$ java -version
java version "1.7.0_79"
OpenJDK Runtime Environment (rhel-2.5.5.1.el6_6-x86_64 u79-b14)
OpenJDK 64-Bit Server VM (build 24.79-b02, mixed mode)
如果你的Jenkins使用git作为数据传输的管道,那么的所有Jenkins节点都要安装git
$ sudo yum install -y git
设置git账户
$ git config --global user.name "yourname"
$ git config --global user.email "yourmail"
配置
安装成功后,配置文件在/etc/sysconfig/jenkins
下,默认端口为8080
,你需要设置一下防火墙,让该端口可以被外部访问到
设置允许开机启动
$ sudo chkconfig jenkins on
确保系统中有一个jenkins账户,如果没有则需要创建,理论上安装了Jenkins后,会自动创建该用户。
然后创建ssh密钥,密钥被用来在多个节点中进行免密访问,同时帮助打通git数据通道。在这之前要确认jenkins用户的home
目录是否有效(在下面的例子中home
是/var/bin/jenkins
),并切换到jenkins用户下
$ grep jenkins /etc/passwd
jenkins:x:496:496:Jenkins Continuous Integration Server:/var/lib/jenkins:/bin/bash
$ su jenkins
$ cd ~
$ pwd
/var/lib/jenkins
创建非对称密钥,执行ssh-keygen
命令,并一路回车
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/fengyajie/.ssh/id_rsa): Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/fengyajie/.ssh/id_rsa.
Your public key has been saved in /home/fengyajie/.ssh/id_rsa.pub.
The key fingerprint is:
The key's randomart image is:
+--[ RSA 2048]----+
| .... +=|
| ... .....|
| . ...o +|
| E. . *.|
| S .= + |
| . o + . |
| . o o |
| o o |
| o |
+-----------------+
$ ls ~/.ssh/
id_rsa id_rsa.pub known_hosts
Jenkins是一个Master-Slave的架构,它可以把任务发布到不同的节点上执行,典型的应用场景是你有2个运行环境,一个是测试环境,一个是生产环境,你可以指定工作流中,哪些任务在测试环境中执行,哪些任务在生产环境中执行。当然,如果你没有这样的需求,也可以不配置Slave,这篇文章讨论的是有Slave的情况。
如果你需要配置Slave,在Slave节点上创建一个jenkins用户,并建立Master和Slave的授信关系(你需要将下面的host
替换为具体的服务器IP,注意一定要保证Master和Slave之间是内网通信的,否则公网环境延迟较大,经常会出现Slave掉线情况)
ssh jenkins@host 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
同时,为了让jenkins可以执行更高权限的命令,所有节点都需要把jenkins用户设置为sudo用户。当然,我这是为了偷懒,更好的办法是设置一个专门的用户组,让这个组有一定的权限,然后把jenkins加入到这个用户组。
$ sudo grep jenkins /etc/sudoers
jenkins ALL=(ALL) NOPASSWD: ALL
以上为全部终端的配置,剩下操作基本都在Jenkins提供的web页面上完成
设置Slave
打开Jenkins页面http://hostname:8080
,进入管理页面,点击New Node
配置Node,Labels
是环境设置,例如开发环境,测试环境,编译环境等,后续可以根据Lables
值,指定具体的任务在某个环境中执行
设置Master到Node间的授信方式
成功后,可以在控制台看到新增的Node
创建Pipeline
基本环境搭建好后,我们来配置一个工作流亲自感受一下
工作流在Jenkins中被称为pipeline,pipeline的运行行为由用户自己定义,定义的内容存放在一个Jenkinsfile文件中,并将该文件存放在git仓库的根目录,大致的流程如下:
- 用户将代码提交到git
- Jenkins从git拉取最新代码
- 读取根目录下的Jenkinsfile文件,并依次执行文件中定义的任务
下面是具体的配置步骤
编写Jenkinsfile
pipeline {agent {label 'Production'}stages {stage('Build') { steps { echo 'Building' } } stage('Test') { steps { echo 'Testing' } }stage('Deploy - Staging') { steps { sh './deploy staging' sh './run-smoke-tests' } } stage('Sanity check') { steps { input "Does the staging environment look ok?" } } stage('Deploy - Production') { steps { sh './deploy production' } } }post { always { echo 'One way or another, I have finished' deleteDir() /* clean up our workspace */ } success { echo 'I succeeeded!' } unstable { echo 'I am unstable :/' } failure { echo 'I failed :(' } changed { echo 'Things were different before...' } }
}
以上是一个基本的Jenkinsfile模板,其中有以下几个关键概念
- agent - 指定在哪台机器上执行任务,还记得上面配置
Node
时候填的Label
吗,如果这两个label
匹配得上,就在该Node
中执行 - stage - 组成工作流的大的步骤,这些步骤是串行的,例如build,test,deploy等
- steps - 描述stage中的小步骤,同一个stage中的steps可以并行
- sh - 执行shell命令
- input - 需要你手动点击确定,Pipeline才会进入后续环节,常用于部署环节,因为很多时候部署都需要人为的进行一些确认
- post - 所有pipeline执行完成后,会进入post环节,该环节一般做一些清理工作,同时还可以判断pipeline的执行状态
了解了这些后,你会发现写一个Jenkinsfile是一件很容易的事情。好了,现在要测试pipeline功能,把上面的代码中的sh
换成echo
,拷贝到你的Jenkinsfile中,并存放在git仓库的根目录
创建pipeline
回到Jenkins web页面,添加pipeline
如果你想每次git commit
时自动执行该pipeline,有两种方法,一种是让Jenkins对git进行轮询,每分钟检查git仓库有没有更新,如下配置
另一种方式是使用git提供的hook,该方式原理是git一旦提交,便会触发hook中的脚本,让脚本给Jenkins发送执行pipeline的指令,这种方式更优雅,但相应要做的事情更多一点,这里就不演示这种方法了,感兴趣的同学可以自己研究一下。
最后,我们需要设置git的地址,其中的授信设置,和上面说的Master到Node的授信设置一致
设置完毕后,一旦你的git仓库收到新的提交,就会触发这个pipeline的运行,以下这张图是上面Jenkinsfile例子的运行状态,可以看到当运行到Sanity check
这一步时,需要你手动触发是否执行后面的操作。
下面我们来总结一下,这篇教程主要讲述了以下几个方面:
- Jenkins是什么,及它的应用场景举例
- 如何搭建一个Jenkins服务
- Jenkins Pileline是什么,我们如何定义一个Pipeline
- 如何具体的操作一个Pipeline
Have fun!
转载于:https://my.oschina.net/ouyushan/blog/1831685
ContOS 7 安装Jenkins相关推荐
- centos8 用u盘安装失败_玩转jenkins - 在自己的服务器上安装jenkins
作者:zz_jesse 转发链接:https://mp.weixin.qq.com/s/2XVfym2MLvTVcbDfOOJ2mg 前言 做前端也好几年了,项目的CI/CD一直用的都是公司现有的je ...
- CentOS 7 安装 Jenkins
CentOS 7 安装 Jenkins 准备工作 首选需要安装JAVA环境 这个简单不说了 如果你的系统没有自带git,那么也需要安装一个 yum install git 1.安装 第一种方法 sud ...
- Docker系列 七. Docker 安装Jenkins
Docker系列 七. Docker 安装Jenkins Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集 ...
- Mac 安装 Jenkins
Mac 安装 Jenkins 有两种方法 方法一: 从官方下载最新版本:http://mirrors.jenkins-ci.org/osx/latest 点击安装. 方法二(推荐): 使用 homeb ...
- docker 启动命令_Jenkins视频课程在Docker环境下安装Jenkins,命令行如何启动Jenkins...
Tomcat是Apache开发的一款servlet容器,可以提供java服务,作为服务器来使用.Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建.部署.自动化, 满 ...
- Linux(centos6.5)下安装jenkins
Jenkins 的前身是 Hudson 是一个可扩展的持续集成引擎. 通俗的来讲,jenkins就是一个可以实现自动化部署的一个插件, 对于我来说,也是应用在系统部署上. 废话不多说,直接进入我们的安 ...
- 安装jenkins插件的两种方法
安装jenkins插件有两种方法,一种是在线安装,一种是离线安装.两种方式介绍如下: 1.如果服务器可以上网,那边选择在线安装最好不过了,安装流程为: 系统管理----插件管理---选择需要的插件直接 ...
- [HOW TO]-ubuntu20.04 上安装jenkins
安装存储库密钥 wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add - sudo apt-get ...
- 安装Jenkins及配置自由风格自动打包部署
安装Jenkins 拉取Jenkins镜像 docker pull jenkinsci/blueocean 运行镜像 docker run -u root -d -p 8080:8080 -p 500 ...
最新文章
- 安装计算机过程中的注意事项,西门子step7安装过程中的注意事项
- mysql binlog的查询
- 学python好不好-学习python的前景怎么样?
- 1-1-2 交叉编译工具链
- initial model for Agile Development Organization: Relationship Graph
- Java异常处理深入理解_关于java异常处理机制的深入理解.doc
- 8位可控加减法电路设计_高级工程师:相同的地线GND,却有不同的电路设计含义...
- 案例 网络电视精灵 c# 1614265410
- UI设计灵感|有声读物APP界面设计
- 转:Nginx 性能优化有这篇就够了!
- 编译安装dropbear
- iPhone 12 要来了,手机是时候换到 11 了
- 《Arduino实验》实验四:HC-SR501人体红外传感器检测是否有人存在
- 中关村物联网联盟启动10x10计划 解决物联网产业内冷外热发展难题
- Java day23
- 独立站好做吗?独立站跨境电商怎么做?
- 韩松EIE:Efficient Inference Engine on Compressed Deep Neural Network论文详解
- 网络安全学习笔记——蓝队实战攻防
- Linux 内核likely与unlikey
- React Native 应用深度链接是如何通过 URL打开到指定页面