Tres formas de crear tareas en lotes por Jenkins

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-daodaotestgobierna: .

Mostrar vista Tareas en las expresiones regulares: [测试环境标识]-.* ,如:dev-.*,sit-.*.

El primer tipo: copia masiva en el directorio

tareas Jenkins se basan en xmldocumentos almacenados todos pueden ser copiados xmlpara 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-cliPara 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-jenkinsapi como ejemplo aquí .

python-jenkinsDirecció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.

Supongo que te gusta

Origin www.cnblogs.com/daodaotest/p/12683357.html
Recomendado
Clasificación