Jenkins 学习笔记
以前经常误解 Jenkins 需要大量的 Java 基础,对于 Jenkins 一直心存抵触。现在学了之后发现…其实对 Groovy 的要求蛮高的。
安装
- 添加 Yum 仓库源并安装 Jenkins
# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo # rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key # yum install jenkins
- 保证 Java 版本在 8 或以上
# yum install java
- 在系统中创建 Jenkins 用户
# addusr deploy && su deploy
- 更改 Jenkins 启动用户与端口
!# vi /etc/sysconfig/jenkins JENKINS_USER = deploy JENKINS_PORT = 8080
- 修改 Jenkins 属主
# chown -R deploy:deploy /var/lib/jenkins # chown -R deploy:deploy /var/log/jenkins # chown -R deploy:deploy /var/cache/jenkins
- 修改 Nginx 相关配置
location / { proxy_pass http://localhost:8081; proxy_set_header Host $host:81; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Port 81; proxy_set_header X-Forwarded-Proto $scheme; proxy_read_timeout 90; }
- 启动 Jenkins
/sbin/chkconfig jenkins on service jenkins start
注:当启动失败时,可在/var/lib/jenkins/
查看输出的错误报告
使用 Pipeline job 构建配置
基本概念
- Stage:一个Pipeline可以划分为若干个Stage,每个Stage代表一组操作。注意,Stage是一个逻辑分组的概念,可以跨多个Node。
- Node:节点,一个Node就是一个Jenkins节点,或者是Master,或者是Agent,是执行Step的具体运行期环境。
- Step:步骤,Step是最基本的操作单元,小到创建一个目录,大到构建一个Docker镜像,由各类Jenkins Plugin提供。
简单实例
stage 'build'
node {
git 'https://repo.address/todo-api.git'
withEnv(["PATH+MAVEN=${tool 'm3'}/bin"]) {
sh "mvn -B –Dmaven.test.failure.ignore=true clean package"
}
stash excludes: 'target/', includes: '**', name: 'source'
}
stage 'test'
parallel 'integration': {
node {
unstash 'source'
withEnv(["PATH+MAVEN=${tool 'm3'}/bin"]) {
sh "mvn clean verify"
}
}
}, 'quality': {
node {
unstash 'source'
withEnv(["PATH+MAVEN=${tool 'm3'}/bin"]) {
sh "mvn sonar:sonar"
}
}
}
stage 'approve'
timeout(time: 7, unit: 'DAYS') {
input message: 'Do you want to deploy?', submitter: 'ops'
}
stage name:'deploy', concurrency: 1
node {
unstash 'source'
withEnv(["PATH+MAVEN=${tool 'm3'}/bin"]) {
sh "mvn cargo:deploy"
}
}
与 Git 集成 (思路同与 Maven 集成)
- 配置 Jenkins 本地 Gitlab DNS
- 安装 Git client, Curl 及其工具依赖
- 在 Jenkins 后台添加 Git Client Users 与 Email
- 在 Jenkins 后台添加 Git Credential 凭据
- 在 Freestyle 中找到源码管理,输入 Gitlab 地址以及之前配置好的 Credential 即可。
与 Ansible 集成
主要思路是创建一个 Shell 脚本,代码范例如下。
#! /bin/sh
set +x
source /home/deploy/env/bin/active
source /home/deploy/env/ansible/hacking/env-setup -q
cd /home/deploy
ansible --version
ansible-playbook --version
cat inventoryfiles
ansible -i inventoryfiles servername -m command -a "ip addr"
set -x
推荐插件
- Git Parameter
- Build Name and Description Setter
- user build vars
- Jenkins Simple Theme Plugin (界面美化)
评论
发表评论