Jenkinsがタスクをバッチで作成する3つの方法

最近、複数のテスト環境を構築するには、Jenkinsのdevビューの下にあるすべてのタスクを、sitなどのビューにバッチコピーする必要があります。

解説

ジェンキンスのタスク名は[测试环境标识]-[工程名称],如:dev-daodaotest,sit-daodaotestルール:

表示するタスクは、正規表現で表示します[测试环境标识]-.* ,如:dev-.*,sit-.*

最初のタイプ:ディレクトリの下の一括コピー

ジェンキンスタスクはに基づいているxmlコピーすることができます保存されているすべてのドキュメントxmlのバッチモードを作成します。

# 进入 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

:コピー後、Jenkinsは設定を再読み込みして有効にする必要があります。操作メニューのパス:Manage Jenkins-》Reload Configuration from Disk

2番目の種類:jenkins-cli

実装手順は最初の手順と同様です。独自のスクリプト言語に従って実装できます。主なコマンドを以下に簡単に説明します。

jenkins-cli使用方法については、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

3番目:REST API

2番目と同様に、キーコマンドのみが導入されています。ここでpython-jenkinsは例としてapiを取り上げます

python-jenkins公式ウェブサイトのアドレス:https : //opendev.org/jjb/python-jenkins

Python Jenkinsをインストールする

# 安装 pip
$ sudo yum install epel-release && sudo yum install python-pip

# 安装 python-jenkins
$ pip install python-jenkins

ビューでタスク名を取得する

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'])

タスクをコピー

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)

「リクエスト403エラー403有効なクラムが含まれていませんでした」

エラーの原因:jenkinsがhttpリクエストヘッダーに.crumbという名前のトークンを配置しました。リバースプロキシを使用し、jenkins設定で「クロスサイトリクエストフォージェリエクスプロイトの防止」をチェックした後、このトークンは転送サーバーnginxによって不正なヘッダーとして削除され、ジャンプが発生します。失敗しました。

解決策:Jenkinsのセキュリティ設定で「クロスサイトリクエストフォージェリの悪用を防ぐ」をキャンセルします。

おすすめ

転載: www.cnblogs.com/daodaotest/p/12683357.html