一、Jira中文官网介绍:https://www.atlassian.com/zh/software/jira1.1Jira可以做什么?规划和创建项目、用户需求和问题、规划Sprint以及在团队之间分配开发任务。跟踪并全面了解项目进度,确定并讨论整个团队工作的优先级。2.安装部署2.1数据中心版本https://www.atlassian.com/zh/software/jira/pricing?tab=data-center试用选择历史版本下载:下载最新的LTS长期支持版本:选择部署环境:开始下载JiraSoftwareServer安装器:2.2安装部署scpatlassian-jira-software-8.20.1-x64.binroot@192.168.1.200:/opt/##添加权限[root@zeyang-nuc-serviceopt]#chmod+xatlassian-jira-software-8.20.1-x64.bin##运行安装程序[root@zeyang-nuc-serviceopt]#./atlassian-jira-software-8.20.1-x64.binUnpackingJRE...StartingInstaller。..这将安装JiraSoftware8。20.1onyourcomputer.OK[o,Enter],Cancel[c]##Enter单击Next继续,或Cancel退出设置。选择适当的安装或升级选项。请选择以下选项之一:ExpressInstall(使用默认设置)[1],CustomInstall(建议高级用户使用)[2,EnteristingUpgrade[3]Jigrade[3]选择自定义在此处安装,输入选择您希望安装JiraSoftware的文件夹。JiraSoftware应该安装在哪里?[/opt/atlassian/jira]##选择安装目录DefaultlocationforJiraSoftwaredata[/var/atlassian/application-data/jira]##选择数据目录ConfigurewhichportsJiraSoftwarewilluse.JirarequirestwoTCPportsthatarenotbeingusedbyanyotherapplicationsonthismachine.TheHTTPportiswhereyouwillaccessJirathroughyourbrowser.TheControlportisusedtostartupandshutdownJira.Usedefaultports(HTTP:8080,Control:8005)-Recommended[1,Enter],SetcustomvalueforHTTPandControlports[2]2##输入2自定义服务端口HTTPPortNumber[8071]8801ControlPortNumber[8077]8802##安装服务Jiracanberuninthebackground.YoumaychoosetorunJiraasaservice,whichmeansitwillstartautomaticallywheneverthecomputerrestarts.InstallJiraasService?Yes[y,Enter],No[n]yDetailsonwhereJiraSoftwarewillbeinstalledandthesettingsthatwillbeused.InstallationDirectory:/opt/atlassian/jiraHomeDirectory:/var/atlassian/application-data/jiraHTTPPort:8801RMIPort:8802Installasservice:YesInstall[i,Enter],Exit[e]Extractingfiles...##启动服务配置JiraSoftware时请稍等片刻。JiraSoftware8.20.1的安装已完成现在开始JiraSoftware8.20.1?是[y,Enter],No[n]y请稍等片刻而JiraSoftwarestartsup.LaunchingJiraSoftware...InstallationofJiraSoftware8.20.1iscompleteYourinstallationofJiraSoftware8.20.1isnowreadyandcanbeaccessedviayourbrowser.JiraSoftware8.20.1canbeaccessedathttp://localhost:8801Finishinginstallation...Access:http://serverip:88012.3初始化账号注册配置获取授权码三、Jira使用实践三创建项目注意:一个Jira项目对应一个GitLab项目组;3.2为项目添加模块注意:一个Jira模块对应一个GitLab项目;3.3配置WebHook系统,webhook(webhook)3.4需求/任务管理创建需求这里,在Jira上,将这个需求logging-error,类型为story,关联到devops03-devops-service模块;3.5release过程中,release对应GitLab项目代码库中的version分支;issue与release有关:可以想象成一个GitLab特性分支合并到一个version分支;四、Jira自动化实践工作流工具链集成4.1需求与代码关联1、创建Jenkins作业并配置webhookwebhookData:该变量存放Jira传过来的数据2.为Jira配置一个系统级的webhook选项说明:指定Jenkins的webhook触发地址;通过JQL指定,允许项目devops03触发;检查触发事件的动作;(我可以在jira中做一些事情后触发它)3。Jenkinspipeline配置解析Jira传过来的数据;webhookData=readJSONtext:"${webhookData}"//Jira事件jiraEvent=webhookData.webhookEventjiraProjectName=webhookData.issue.fields.project.name//获取gitlab参数gitlabProjects=[]gitlabBranchName=webhookData.issue.keygitlabGroupName=jiraProjectNamefor(iinwebhookData.issue.fields.components){gitlabProjects.add(i["name"])}currentBuild.description="Triggerby${jiraEvent}\nproject:${gitlabProjects}\nbranch:${gitlabBranchName}"封装GitLabAPI接口https://docs.gitlab.com/ee/api/branches.html#create-repository-branch//创建分支defCreateBranch(projectId,newBranchName,sourceBranchName){try{apiUrl="projects/${projectId}/repository/branches?branch=${newBranchName}&ref=${sourceBranchName}"response=HttpReq('POST',apiUrl,"")}catch(Exceptione){println(e)}}//获取所有项目的iddefGetProjectsId(gitlabGroupName,gitlabProjects){gitlabProjectIds=[]for(projectingitlabProjects){id=GetProjectId(gitlabGroupName,project)println(id)if(id!=0){gitlabProjectIds.add(id)}}returngitlabProjectIds}//根据项目名称获取项目iddefGetProjectId(groupName,projectName){apiUrl="projects?search=${projectName}"response=HttpReq('GET',apiUrl,"")response=readJSONtext:response.content-"\n"if(response.size()>1){for(iinresponse){println(i["path_with_namespace"])println(groupName+projectName)if(i["path_with_namespace"]=="${groupName}/${projectName}"){println(i["id"])returni["id"]}}}else{returnresponse[0]["id"]}}//封包HTTPdefHttpReq(reqType,reqUrl,reqBody){defgitServer="http://192.168.1.200/api/v4"withCredentials([string(credentialsId:'058b7907-ebe2-4d14-9b91-1ac72e071c59',变量:'GITLABTOKEN')]){response=httpRequestacceptType:'APPLICATION_JSON_UTF8',consoleLogResponseBody:true,content类型:'APPLICATION_JSON_UTF8',customHeaders:[[maskValue:false,name:'PRIVATE-TOKEN',value:"${GITLABTOKEN}"]],httpMode:"${reqType}",url:"${gitServer}/${reqUrl}",wrapAsMultipart:false,requestBody:"${reqBody}"}returnresponse}Pipeline主程序pipeline{agent{label"build"}stages{stage("Process"){steps{script{println(gitlabProjects)println(gitlabBranchName)projectIds=GetProjectsId(gitlabGroupName,gitlabProjects)switch(jiraEvent){case"jira:issue_created":println(projectIds)for(idinprojectIds){CreateBranch(id,gitlabBranchName,"master")}breakdefault:println("错误...")中断}}}}}}4。效果验证在Jira中创建module和issue,关联project;Jenkins流水线操作;验证Gitlab中是否有更多的分支;
