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集成

 

posted @ 2019-04-18 00:40  闫世成  阅读(788)  评论(0编辑  收藏  举报