Jenkins高级应用
0.1 安装 Docker-ce
cd /etc/yum.repos.d/ wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum install docker-ce -y
0.2 docker 镜像加速 (可选阿里云镜像加速服务)
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://registry.docker-cn.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
03. 安装 docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose # 验证 docker-compose --version docker-compose version 1.24.0, build 0aa59064
0.4 下载所需 docker 镜像
1. 下载 gitlab-ce docker pull gitlab/gitlab-ce:latest 2 下载jenkins docker pull jenkins:latest 3. 下载 sonarqube docker pull sonarqube:latest
05. 编写 docker-compose.yml文件
[root@jenkins-client ~]# mkdir /data/{jenkins,gitlab} -p [root@jenkins-client ~]# tree /data /data ├── gitlab └── jenkins 2 directories, 0 files [root@jenkins-client ~]# cat devops/docker-compose.yml version: '2' services: gitlab: image: gitlab/gitlab-ce:latest ports: - "443:443" - "80:80" - "22:22" networks: - devops volumes: - /root/data/gitlab/config:/etc/gitlab - /root/data/gitlab/logs:/var/log/gitlab - /root/data/gitlab/data:/var/opt/gitlab jenkins: image: jenkins:latest ports: - "8080:8080" - "50000:50000" networks: - devops volumes: - /root/data/jenkins:/var/jenkins_home - /var/run/docker.sock:/var/run/docker.sock sonarqube: image: sonarqube:workshop ports: - "9000:9000" - "9092:9092" networks: - devops networks: devops: driver: bridge
启动方式 : [root@jenkins-client devops]# docker-compose up -d jenkins
Jenkins 是什么?
- 基于JAVA的开源的自动化系统平台
- 加速自动化CI,CD任务及流水线
- 所有类型的任务:构建,测试,部署等
- 丰富的插件生态系统支持功能扩展
- 1400+ 插件
- SCM, 测试, 通知, 报告, Artifact, 触发, 外部集成等
- 基于Web的管理和使用界面
- 源于Hudson
Jenkins 系统架构图
Jenkins 分布式架构图
常用应用场景
- 创建一个项目, 手动可以构建, 完成一些简单任务, 比如下载代码后进行编译
- 编译失败邮件通知客户
- 用户可以选择不同参数进行构建
- 代码改动后自动触发某个构建,或者定时触发某个项目构建
- 一个项目构建完成后可以自动调用另一个项目的构建,完成一连串的任务
- 并发构建
主要Job类型
- Freestyle project
自由风格项目,Jenkins最主要的项目类型
- Maven Project
Maven项目专用,类似Freestyle,更简单
- Multi-configuration project
多配置项目,适合需要大量不同配置(环境,平台等)构建
-
Pipeline 流水线项目,适合使用pipeline(workflow)插件功能构建流水线任务,或者使用Freestyle project 不容易实现的复杂任务
- Multibranch Pipeline
多分支流水线项目,根据SCM仓库中的分支创建多个Pipeline项目
Freestyle 项目
- General
- 项目基本配置
- 项目名字,描述,参数,禁用项目,并发构建,限制构建默认node等等
- Source code Management
- 代码库信息,支持Git,Subversion等
- Build Triggers
- 构建触发方式
- 周期性构建,Poll SCM,远程脚本触发构建,其他项目构建结束后触发等
- Build Environment
- 构建环境相关设置
- 构建前删除workspace,向Console 输出添加时间戳,设置构建名称,插入环境变量等
- Build
- 项目构建任务
- 添加1个或者多个构建步骤
- Post-build Actions
- 构建后行为
- Artifact 归档,邮件通知,发布单元测试报告,触发下游项目等等
实战演练:新建一个freestyle任务
新建任务 -->> 输入一个任务名称 -->> 构建一个自由风格的软件项目 --->> 确定 -->> 构建 -->> 执行Shell
构建执行并查看日志
服务器端每个Job的存储路径
[root@jenkins-server jobs]# pwd /var/lib/jenkins/jobs [root@jenkins-server jobs]# ls my-freestyle-job
每一次的构建配置
[root@jenkins-server builds]# pwd /var/lib/jenkins/jobs/my-freestyle-job/builds [root@jenkins-server builds]# ls 1 lastStableBuild lastUnstableBuild legacyIds lastFailedBuild lastSuccessfulBuild lastUnsuccessfulBuild
限制jenkins 工作在哪个节点
添加源码管理
工作区 可以下载构建之后的代码,清空等操作
自动化构建和测试
自定义构建时间
定时构建 每天的那个时间段指定执行 H 代表jenkins 自己分配时间
轮训构建SCM
代码如果没有发生变化不进行构建
- 检查maven环境
- 构建命令:mvn clean compile
参数化构建
- 归档构建产物
触发下游Project构建
Jenkins Core 功能
“Build other projects”under“Post build actions”
3种触发条件
插件管理
系统配置- 管理插件
- 路径:系统管理- 管理插件
- 部分插件安装无需重启Jenkins
- 删除插件并不会立即生效
- 最佳实践:仅选择必要的插件,否则会影响Jenkins加载速度
管理节点
- 路径: 系统管理- 管理节点
- 节点(Node/Slave)的连接方式
添加节点
秘钥及 java 路径设置
启动节点
Sonarqube代码质量平台
Sonarqube和Jenkins集成
作者:闫世成
出处:http://cnblogs.com/yanshicheng