jenkins安装
docke容器起一个jenkins
# run 起jenkins
docker run -d -uroot --name jenkins -v /data/setup/jenkins:/var/jenkins_home -p 8080:8080 -p 50000:50000 -e JAVA_OPTS="-Dorg.apache.commons.jelly.tags.fmt.timeZone='Asia/Shanghai" jenkins/jenkins:lts
## 如提示报错
INSTALL WARNING: User: missing rw permissions on JENKINS_HOME: /var/jenkins_home
touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
### 解决方法
chmod -R 777 /data/setup/jenkins
# 添加授权方式 run起jenkins
docker run -d -uroot --name jenkins -v /data/setup/jenkins:/var/jenkins_home -p 8080:8080 -p 50000:50000 -u $(id -u):$(id -g) -e JAVA_OPTS="-Dorg.apache.commons.jelly.tags.fmt.timeZone='Asia/Shanghai'" jenkins/jenkins:lts
修改jenkins时区:
打开jenkins的【系统管理】---> 【脚本命令行】,在命令框中输入一下命令【时间时区设为 亚洲上海】:
System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')
参数说明
-d——》后台运行容器,并返回容器ID
-uroot——》使用 root 身份进入容器,推荐加上,避免容器内执行某些命令时报权限错误
-v /data/setup/jenkins:/var/jenkins_home——》:/var/jenkins_home目录为容器jenkins工作目录,将硬盘上的一个目录挂载到这个位置,方便后续更新镜像后继续使用原来的工作目录
-p 8080:8080——》将容器内8080端口映射至宿主机8080端口,这个是访问jenkins的端口
-p 50000:50000——》将容器内50000端口映射至宿主机50000端口
-e JAVA_OPTS="-Dorg.apache.commons.jelly.tags.fmt.timeZone='Asia/Shanghai" 修改时区
kubernetes集群内使用helm 起jenkins
### 添加 helm repo ####
helm repo add bitnami https://charts.bitnami.com/bitnami
### 创建命名空间
kubectl create namespace devops
### helm install
helm install jenkins bitnami/jenkins --set service.type=NodePort --set service.nodePort=32000 --namespace devops
安装插件
更改插件源为国内源
“系统管理->插件管理->高级”
### 更改插件源为阿里云--下载速度快
https://mirrors.aliyun.com/jenkins/updates/update-center.json
### 常用下载插件类
Locale ---语言包
Localization: Chinese (Simplified) ---汉化语言包
Git
Git Parameter
ThinBackup --备份恢复插件
Job Configuration History Plugin --增删改历史记录插件
Docker
Kubernetes
Kubernetes Cli
Config File Provider
Pipeline
Pipeline Utility Steps
Pipeline: Stage View
Groovy Postbuild
build user vars
Role-based Authorization --权限控制插件
Job Configuration History
Email Extension TemplateVersion
Email Extension
ldap
Generic Webhook Trigger
Credentials Binding Plugin
“系统管理->插件管理” build user vars和Groovy Postbuild
jobs配置项
勾选Set jenkins user build variables这个选项后,在构建过程中会增加当前登录用户的如下信息到环境变量中,可以通过Groovy脚本获取这些变量值。变量名如下:
BUILD_USER 全名
BUILD_USER_FIRST_NAME 名字
BUILD_USER_LAST_NAME 姓
BUILD_USER_ID jinkins用户ID
BUILD_USER_EMAIL 用户邮箱
manager.addShortText() 函数用于在构建历史中添加额外的展示信息。
manager.getEnvVariable("BUILD_USER") 函数用于获取环境变量“BUILD_USER”,这个环境变量是“user build vars plugin”插件设置进去的(需要勾选“Set jenkins user build variables”)。
manager.build.buildVariables.get("branch") 函数用于获取“构建参数branch"的值,如果配置了“参数化构建”,通过这个函数可以获取构建时传入的参数
注意:branch这个是从前面参数化构建选项自定义的名字
jobs参数化构建示例:
pipeline参数如下:
// 打印tag和构建人信息
stage('modify attr') {
steps {
wrap([$class: 'BuildUser']) {
buildName "#${BUILD_NUMBER}-${BUILD_USER}-${ServerNum}"
buildDescription "Branch:${branch}"
}
}
}
实际效果如下:
批量修改构建历史保留天数以及数量
系统管理-->Script Console
import jenkins.model.Jenkins
import hudson.model.Job
import jenkins.model.BuildDiscarderProperty
import hudson.tasks.LogRotator
// 遍历所有的任务
Jenkins.instance.allItems(Job).each { job ->
if ( job.isBuildable() && job.supportsLogRotator() && job.getProperty(BuildDiscarderProperty) == null) {
println " \"${job.fullDisplayName}\" 处理中"
job.addProperty(new BuildDiscarderProperty(new LogRotator (2, 10, 2, 10)))
println "$job.name 已更新"
}
}
return;
/**
LogRotator构造参数分别为:
daysToKeep: If not -1, history is only kept up to this days.
numToKeep: If not -1, only this number of build logs are kept.
artifactDaysToKeep: If not -1 nor null, artifacts are only kept up to this days.
artifactNumToKeep: If not -1 nor null, only this number of builds have their artifacts kept.
**/