Date: Fri, 29 Mar 2024 18:38:28 +0900 (KST) Message-ID: <1218143562.4558.1711705108430@[106.255.156.234]> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_4557_1918514844.1711705108422" ------=_Part_4557_1918514844.1711705108422 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html
=EC=9D=B4 =EB=AC=B8=EC=84=9C=EB=8A=94 Jira ScriptRunner =ED=99=9C=EC=9A= =A9=ED=95=98=EC=97=AC =EC=B2=A8=EB=B6=80=ED=8C=8C=EC=9D=BC =EB=B0=B1=EC=97= =85 =EB=B0=8F =EC=82=AD=EC=A0=9C=ED=95=98=EA=B8=B0 =EA=B0=80=EC=9D=B4= =EB=93=9C=EB=A5=BC =EA=B3=B5=EC=9C=A0=ED=95=98=EA=B8=B0 =EC=9C=84=ED=95=B4 = =EC=9E=91=EC=84=B1=EB=90=98=EC=97=88=EB=8B=A4.
=EB=8F=84=EA=B5=AC=EB=AA=85 | Jira, Scriptrunner |
---|---|
=EB=B2=84=EC=A0=84 |
import com.atl= assian.jira.issue.Issue import com.atlassian.jira.issue.IssueManager import com.atlassian.jira.issue.MutableIssue import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.bc.issue.search.SearchService import com.atlassian.jira.jql.parser.JqlQueryParser import com.atlassian.jira.web.bean.PagerFilter import com.onresove.scriptrunner.runner.util.UserMessageUtil import com.atlassian.jira.issue.attachment.FileSystemAttachmentDirectoryAcc= essor import org.apache.log4j.Level import org.apache.log4j.Logger import java.io.File =20 def log =3D Logger.getLogger("com.curvc.test") log.setLevel(Level.DEBUG) def customFieldManager =3D ComponentAccessor.getCustomFieldManager() def issueManager =3D ComponentAccessor.getIssueManager() def userManager =3D ComponentAccessor.getUserManager() =20 def user =3D userManager.getUserByName("jql =EC=A1=B0=ED=9A=8C=ED=95=A0 =EC= =95=84=EC=9D=B4=EB=94=94") def jqlQueryParser =3D ComponentAccessor.getComponent(JqlQueryParser) def searchService =3D ComponentAccessor.getComponent(SearchService) =20 // =EC=A1=B0=ED=9A=8C=ED=95=A0 JQL =EA=B5=AC=EB=AC=B8 =EC=9E=85=EB=A0=A5 def qstr =3D '' def query =3D jqlQueryParser.parseQuery(qstr) def search =3D searchService.search(user, query, PagerFilter.getUnlimitedFi= lter()) // =EC=9D=B4=EB=8F=99=EC=8B=9C=ED=82=AC =EC=B2=A8=EB=B6=80=ED=8C=8C=EC=9D= =BC =EC=9C=84=EC=B9=98 def newfilepath =3D "/tmp/" // =EC=82=AD=EC=A0=9C =EC=88=98 =EC=B9=B4=EC=9A=B4=ED=8A=B8 int deletedAttachmentsCount =3D 0; for(int i =3D 0;i < search.total;i++){ def issue =3D issueManager.getIssueObject(search.results[i].key) log.info(issue) def attachments =3D ComponentAccessor.attachmentManager.getAttachments(= issue) for (attachment in attachments) { def attachmentname =3D attachment.getFilename().toString() log.info(attachmentname) def attachmentsize =3D attachment.getFilesize() def attachmentid =3D attachment.getId().toString() // =EC=B2=A8=EB=B6=80=ED=8C=8C=EC=9D=BC =EC=9C=84=EC=B9=98 =ED=8C= =8C=EC=95=85 def filelocate =3D ComponentAccessor.getComponent(FileSystemAttachm= entDirectoryAccessor.class).getAttachmentDirectory(issue) def filepath =3D filelocate.toString() + '/' + attachmentid File file =3D new File(filepath) log.info(filepath) //=EC=84=A4=EC=A0=95=ED=95=9C =ED=8F=B4=EB=8D=94 =EC=95=84=EB=9E=98= =EC=97=90 =ED=94=84=EB=A1=9C=EC=A0=9D=ED=8A=B8 =ED=82=A4 =ED=8F=B4=EB=8D=94= =EC=83=9D=EC=84=B1 File tempPath =3D new File(newfilepath + issue.getKey().toString().= split('-')[0]) if (!tempPath.exists()){ tempPath.mkdirs() } // =EC=98=AE=EA=B8=B8 =ED=8C=8C=EC=9D=BC =EA=B2=BD=EB=A1=9C =EC=84= =A4=EC=A0=95 String path =3D tempPath.toString() + '/' + issue.getKey().toString= () + '_' + attachmentname //=EB=B3=B5=EC=82=AC File copyfile =3D new File(path) copyfile << file.bytes =20 deletedAttachmentsCount =3D deletedAttachmentsCount + 1 log.info(issue.getKey() + " Name:" + attachmentname + " Size: " + a= ttachmentsize + " bytes ") =20 //Jira =EC=9D=B4=EC=8A=88=EC=97=90=EC=84=9C =EC=B2=A8=EB=B6=80=ED= =8C=8C=EC=9D=BC =EC=82=AD=EC=A0=9C ComponentAccessor.attachmentManager.deleteAttachment(attachment) } } log.info("=EC=82=AD=EC=A0=9C=ED=95=9C =EC=88=98: " + deletedAttachmentsCou= nt)