Recientemente, para construir múltiples entornos de prueba, es necesario copiar por lotes todas las tareas bajo la vista de desarrollo en Jenkins a vistas como sit.
Explicación
Jenkins nombre de la tarea [测试环境标识]-[工程名称],如:dev-daodaotest,sit-daodaotest
gobierna: .
Mostrar vista Tareas en las expresiones regulares: [测试环境标识]-.* ,如:dev-.*,sit-.*
.
El primer tipo: copia masiva en el directorio
tareas Jenkins se basan en xml
documentos almacenados todos pueden ser copiados xml
para crear un modo por lotes.
# 进入 jobs 目录下
$ cd ~/.jenkins/jobs
# 创建批量复制 shell 脚本
$ vi copyViewJobs.sh
#!/bin/bash
# 视图名称
viewName=$1
# 新视图名称
newViewName=$2
# 循环复制任务
for jobName in `ls /home/jenkins/.jenkins/jobs/`
do
# 判断文件存在并且是目录
if test -d $jobName
then
# 目录为 $viewName 开头,则进行复制
if [[ $jobName == *$viewName* ]]; then
# 截取工程名称
name=`echo $jobName|awk 'BEGIN{FS="'$viewName'-"} {print $2}'`
newJobName=$newViewName-$name
echo $newJobName
# 复制 config.xml
mkdir $newJobName && cp $jobName/config.xml $newJobName/
fi
fi
done
# 执行批量复制脚本,dev 视图下的任务负责到 sit 视图下
$ sh copyViewJobs.sh dev sit
Nota : Después de copiar, Jenkins necesita volver a cargar la configuración para que surta efecto. Ruta del menú de operaciones: Manage Jenkins
-》Reload Configuration from Disk
.
El segundo tipo: jenkins-cli
Los pasos de implementación son similares al primero, puede implementarlo de acuerdo con su propio lenguaje de secuencias de comandos. Los comandos de teclado se describen brevemente a continuación.
jenkins-cli
Para su uso, consulte: http: // localhost: 8080 / cli
# 下载 jenkins-cli.jar
$ wget http://localhost:8080/jnlpJars/jenkins-cli.jar
# 获取视图下的所有任务
$ java -jar jenkins-cli.jar -s http://localhost:8080/ -auth daodaotest:daodaotest list-jobs dev
# 复制任务
$ java -jar jenkins-cli.jar -s http://localhost:8080/ -auth daodaotest:daodaotest copy-job dev-daodaotest sit-daodaotest
Tercero: API REST
Al igual que el segundo, solo se introducen los comandos de teclado. Tome python-jenkins
api como ejemplo aquí .
python-jenkins
Dirección oficial del sitio web: https://opendev.org/jjb/python-jenkins
Instalar Python Jenkins
# 安装 pip
$ sudo yum install epel-release && sudo yum install python-pip
# 安装 python-jenkins
$ pip install python-jenkins
Obtener el nombre de la tarea en la vista
import jenkins
server = jenkins.Jenkins('http://localhost:8080', username='daodaotest', password='daodaotest')
# 查询 dev 视图下的所有任务
jobs = server.get_jobs(folder_depth=0, view_name='dev')
# 循环打印任务名称
for job in jobs:
print(job['fullname'])
Copiar tarea
import jenkins
server = jenkins.Jenkins('http://localhost:8080', username='daodaotest', password='daodaotest')
# 任务是否存在,True 为存在,Fasle 为不存在
print(server.job_exists('dev-daodaotest'))
# 复制任务
server.copy_job('dev-daodaotest','sit-daodaotest')
# 打印任务信息
jobinfo = server.get_job_info('sit-daodaotest')
print(jobinfo)
请求 报错 "Error 403 No se incluyó una miga válida en la solicitud"
Causa del error : jenkins colocó un token llamado .crumb en el encabezado de la solicitud http. Después de usar un proxy inverso y marcar "Evitar exploits de falsificación de solicitud de sitios cruzados" en la configuración de jenkins, el servidor de reenvío nginx eliminará este token como un encabezado ilegal, dando como resultado un salto Falló
Solución : cancele "Evitar exploits de falsificación de solicitudes de sitios cruzados" en la configuración de seguridad de Jenkins.