调用Jira Api 批量 Archive Project (存档项目)
有时我们需要定期清理一些项目,把项目设置Archive 存档, 项目存档后
- 项目将不可见,包括在搜索、项目列表、JQL的自动填充等
- 项目中的Issue将不可见,包括在搜索、项目列表、JQL的自动填充等
- 存档的项目不影响 配置方案、界面方案、工作流
- 项目存档后再次 reindex, 将不会被建索引,提升搜索性能
- 项目存档后管理员可以在存档项目中恢复该项目,恢复后需要对项目重新建索引
存档Archive 的功能在Data Center环境下才支持, Server版不支持存档的环境
下面是一个python脚本,可以一调用Jira的API 来批量Archive项目
前提和准备工作
依赖的Python库
python >= 3.6
本脚本依赖的第三方库是 reqeusts 库,也是一个常用的http库,如果您的系统没有安装需要安装
pip install requests
CODE
Jira的信息
需要以下Jira信息
- Jira 的BaseUrl地址
- 管理员用户和密码
- 准备一个project 列表的文件,每一个project Key 一行
Python脚本
#
# Copy right by 北京范德敏特
# Authors: Yin Liang
#
import json
import requests
from requests.auth import HTTPBasicAuth
import argparse
import logging
def main():
# Log
# logging.basicConfig(format='%(asctime)s :: %(levelname)s :: %(message)s', filename='output.log', level=logging.INFO)
logging.basicConfig(format='%(asctime)s :: %(levelname)s :: %(message)s', level=logging.INFO)
# arg parse
parser = argparse.ArgumentParser(description='Bulk change Jira project permission scheme')
parser.add_argument('--baseUrl', '-j', required=True,
help='Jira base url: e.g. http://teams.devpod.cn:8080')
parser.add_argument('--user', '-u', required=True,
help='Jira admin user name')
parser.add_argument('--password', '-p', required=True,
help='Jira admin password')
parser.add_argument('--projectsFile', '-f', type=argparse.FileType('r'), required=True,
help='Pls input the project filse, each project Key as a line')
args= parser.parse_args()
logging.info(args)
logging.info("starting archieve projects...")
# auth
auth = HTTPBasicAuth(args.user, args.password)
# call
with args.projectsFile as f:
for p in f:
projectKey = p.strip()
logging.info(f"Project {projectKey}")
if projectKey:
archiveProject(args.baseUrl, auth, projectKey)
def archiveProject(baseUrl, auth, projectKey):
logging.info(f"call the chage scheme function for {projectKey}")
url = f"{baseUrl}/rest/api/latest/project/{projectKey}/archive"
r = requests.put(url, auth=auth, verify=False)
# Add some logs
logging.info(f"Http response code is: {r.status_code}")
code = r.status_code
if code == 204:
logging.info(f"Project {projectKey} archived successfully")
if __name__ == "__main__":
main()
PY
脚本的使用
请使用python 3 来执行脚本
查看帮助
> python archive_project.py -h
usage: archive_project.py [-h] --baseUrl BASEURL --user USER --password PASSWORD --projectsFile PROJECTSFILE
Bulk change Jira project permission scheme
optional arguments:
-h, --help show this help message and exit
--baseUrl BASEURL, -j BASEURL
Jira base url: e.g. http://teams.devpod.cn:8080
--user USER, -u USER Jira admin user name
--password PASSWORD, -p PASSWORD
Jira admin password
--projectsFile PROJECTSFILE, -f PROJECTSFILE
Pls input the project filse, each project Key as a line
BASH
使用举例
python archive_project.py -j 'http://teams.devpod.cn:8080' -u admin -p password -f ./projects
BASH