Jenkins 讲师:郭宏泽
目录 1. Jenkins集群 2. 整合LDAP 3.按角色权限 4. Pipeline 5.Nexus仓库
Jenkins集群
创建节点 在Configure Global Security中开启TCP port for JNLP agents 随机选取或指定端口 新建节点 节点名 执行器数量 远程工作目录(可以不存在) 用法-只允许绑定到这台机器的job Lanch slave agents on unix machines vis SSH 增加认证权限 节点的构建环境要符合job的要求
分配任务到节点 在任务配置中勾选Restrict where this project can be run
使用场景 IOS构建 Android构建 Windows项目构建 大规模高并发任务构建 特定环境构建 任务:指定一个maven项目在节点01上构建并成功
整合LDAP
Jenkins配置LDAP
配置说明 Rootdn 可以登入jenkins的用户组 用户搜索过滤器 uid={0} linux openladp sAMAccountName={0} windows AD ManagerDN LDAP超管
超管授权
按角色授权
用户设置 超管root team1用户 team2用户 用户关联自己团队相关job,无法查看或执行其它job 每个team新建两个任务 新建两个用户
按角色授权 安装 Role-based Authorization Strategy 插件 Configure Global Security>授权策略>选择Role-Based Strategy
设置全局角色 Jekins>系统管理>Manage and Assign Roles>Manage Roles 创建全局角色member(项目用户进入后可以读取和创建Job) Overall允许read
设置项目角色 新建project roles 注意pattern的匹配模式是xxx.* 这样team1只能看到team1开头的job
全局授权 进入Assign Roles 在Global roles中加入team1/team2并授权member
项目授权 在Projects roles中加入team1/team2并进行相应授权
验证授权 注意如果开放新建权限,则team1创建的job名必须符合规则
Pipeline
pipeline Pipeline是部署流水线 Pipline将整个交付过程代码化
创建pipeline 创建pipeline 配置pipeline Hello world node { stage 'Stage 1' echo 'Hello World 1' stage 'Stage 2' echo 'Hello World 2‘ }
语法生成 在项目界面点击Pipeline Syntax Build a job Git Node sh Stage
Nexus仓库
什么是nexus? Neux MAVEN的私有仓库 如果没有nexus 项目的打包都需要通过公网下载 不利于包的管理和共用 如果没有私服,我们所需的所有构件都需要通过maven的中央 仓库和第三方的Maven仓库下载到本地,而一个团队中的所有 人都重复的从maven仓库下载构件
Nexus 功能
安装 下载地址 http://www.sonatype.com/download-oss-sonatype tar zxvf nexus-2.13.0-01-bundle.tar.gz Cd nexus-2.13.0-01/bin export RUN_AS_USER=root ./nexus start
访问 http://{ip}:8081/nexus/ 默认用户名密码 admin admin123
Nexus流程 宿主仓库 本机 Maven Nexus 仓库组 代理仓库 远程
整合maven <?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <profiles> <profile> <id>default</id> <repositories> <repository> <id>public</id> <url>http://172.30.0.238:8081/nexus/content/groups/public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> </snapshots> </repository> </repositories> </profile> </profiles> <activeProfiles> <activeProfile>default</activeProfile> </activeProfiles> </settings>
部署工作流 DevOps发布流 Developer Gitlab Jenkins 提测 预发布 Nexus Maven Build 冒烟测试 tag/发版 单元测试 自动回归 灰度/上线 Sonrqube
交流时间