이슈를 통한 작업 자동화

이슈 조건이란 무엇입니까?

조건을 통해 규칙의 범위를 좁힐 수 있습니다. 규칙을 계속 실행하려면 이 규칙을 충족해야 합니다. 아래는 이슈를 가지고 작업을 자동화할 때 많이 사용하는 조건의 사용 사례를 다룹니다.

이슈 필드 조건

이슈 필드 조건은 이슈 필드가 특정 기준을 충족하는지 여부를 확인하며, 보다 강력하고 사용하기 쉬운 조건 중 하나입니다. 스마트 값이나 JQL을 사용할 필요가 없습니다.

확인할 여러 조건이 있는 경우 이러한 조건을 연속적으로 여러 개 추가할 수 있습니다.

JQL 조건

JQL 조건은 이슈가 지정된 JQL 쿼리와 일치하는지 확인합니다. 예를 들어, 특정 이슈의 상태 범주가 완료인지 확인합니다.

고급 비교 조건

고급 비교 조건은 스마트 값과 정규식을 사용하여 두 값을 비교합니다. 사용 가능한 가장 강력한 조건이지만 사용하기 가장 어려운 조건이기도 합니다. 비교를 통해 세부적인 제어를 할 수 있습니다.

이슈에 대해 수동으로 규칙 실행

모든 프로세스 또는 워크 플로우가 자동으로 시작되는 것은 아닙니다. 수동 트리거를 사용하면 규칙을 수동으로 실행하여 일반적인 작업을 수행할 수 있습니다. 이 작업은 이슈의 세부 정보 보기에서 수행됩니다.

이 트리거를 설정할 때 규칙을 보고 수동으로 실행할 수 있는 그룹을 제한할 수 있습니다.

규칙을 수동으로 실행하려면:

  1. 이슈 화면에서, Automation 도구로 이동하고 Rule executions 클릭

  2. Run a manually triggered rule 목록에서 규칙을 선택하고 Run 클릭

또한 이 영역에서 이슈에 대해 실행된 규칙의 기록을 볼 수 있습니다.

관련 이슈로 작업

이슈는 격리되어 있는 경우가 거의 없습니다. 그들은 종종 하위 작업을 포함하거나, 더 큰 에픽의 일부이거나, 특정 관계를 사용하여 단순히 다른 이슈와 연결된 이야기입니다. 즉, 자동화를 사용할 때 규칙을 트리거한 소스 이슈뿐만 아니라 소스 이슈와 관련된 모든 이슈에도 액션을 적용해야 하는 경우가 많습니다.

복잡한 이슈 관계에서 작동할 수 있는 강력한 규칙을 만들기 위해 특별한 조건과 조치를 사용할 수 있습니다. 예를 들어 상위 이슈의 모든 하위 작업이 해결되었는지 확인합니다.

  • 관련 이슈 조건은 예를 들어 연결된 모든 이슈가 닫혔을때 와 같이 관련 이슈의 상태를 확인합니다.

  • 분기 규칙은 관련 이슈에 작업을 적용합니다. 예를 들어 모든 하위 태스크가 전환됩니다.

규칙이 다른 프로젝트에서 이슈와 함께 작동하려면 해당 이슈가 있는 프로젝트에서 다중 프로젝트 또는 글로벌 규칙 중 하나로 실행될 수 있어야 합니다.

관련 이슈 조건

관련 이슈 조건은 규칙을 진행하기 전에 관련 이슈의 상태를 확인합니다.

이 조건에서는 다음 사항을 포함하여 광범위한 사용 사례가 허용됩니다 :

  • 이슈에 특정 유형의 연결된 이슈가 있는지 여부

  • 이슈에 상위 또는 에픽이 있는 경우

  • 스프린트/버전의 이슈가 할당 해제된 경우

  • 에픽의 모든 이야기가 해결된 경우

  • 특정 유형의 해결된 하위 작업에 특정 값이 설정되어 있는지 여부

관련 이슈 조건 설정

  1. 관련 이슈 유형 선택 :

    • 하위 작업

    • 상위 이슈

    • 스토리(또는 이 에픽의 다른 이슈)

    • 에픽

    • 생성된 이슈

    • 연결된 이슈

  2. 관련 이슈가 있는지 확인할 조건 선택 :

    • 존재함

    • 존재하지 않음

    • 모든 일치 항목이 지정된 JQL

    • 지정된 일치 항목이 없는 JQL

    • 일부 일치 항목이 지정된 JQL

  3. 저장 선택

관련 이슈에 대한 브랜치

자동화 규칙을 구성할 때 관련 이슈에 대해 액션을 수행할 수 있습니다. 이를 브랜치라고 합니다. 이것은 규칙이 더 이상 선형적으로 실행되지 않고 대신 여러 경로로 확장되는 것을 의미합니다.

규칙이 이슈 또는 이슈 목록에 브랜치되면 규칙의 하위 브랜치가 각 이슈에 대해 실행됩니다. {{issue}}에 대한 모든 작업 및 참조는 트리거 이슈가 아니라 관련 이슈를 가리킵니다.

스마트 값 {{triggerIssue}}를 사용하여 브랜치 규칙에서 트리거 이슈를 계속 참조 할 수 있습니다.

브랜치는 다음과 같은 여러 가지 사용 사례에 유용합니다 :

  • 상위에서 특정 필드로 값을 복사하여 모든 하위 작업을 동기화합니다.

  • 스토리를 진행 중으로 이동할 때 에픽을 진행 중으로 이동합니다.

  • 이슈가 해결되면 연결된 이슈에 대한 댓글이 '차단'됩니다.

브랜치는 격리되어 있습니다. 브랜치에서 발생하는 모든 변경 사항은 주 브랜치 또는 다른 브랜치에 표시되지 않습니다.

브랜치는 서로 중첩될 수 없으며 If/else 블록 조건의 사용을 지원하지 않습니다.

브랜치 실행 순서

  • 여러 가지 이슈에 대한 브랜치(예: 4개의 하위 작업)는 병렬로 실행되며, 다음 이슈가 시작되기 전에 완료된다는 보장은 없습니다. 따라서 브랜치 간의 변경 내용에 의존할 수 없습니다.

  • 여러 이슈에 대한 브랜치는 새로운 프로세스로 실행되며, 하위 브랜치가 시작되기 전에 주 브랜치가 계속 실행됩니다.

  • 단일 이슈에 대한 분기는 성능을 유지하기 위해 인라인 방식으로 실행됩니다. 따라서 기본 브랜치는 하위 브랜치가 완료될 때까지 실행을 계속하지 않습니다.

생성된 이슈 액세스

규칙은 이슈 생성이슈 복제 액션을 사용하여 이슈를 생성할 수 있습니다. 동일한 규칙 내에서 새로 생성된 이러한 이슈에 대해 코멘트 추가 또는 하위 작업 생성과 같은 추가 액션을 수행하려면 관련 이슈 브랜치가 필요합니다.

그 이유는 규칙의 기본 브랜치가 항상 생성된 이슈가 아니라 트리거 이슈에 적용되기 때문입니다. 예를 들어 이슈 생성 액션 후 이슈에 대한 코멘트 액션을 추가하면 생성된 이슈가 아니라 트리거 이슈에 설명이 추가됩니다.

이 문제를 해결하려면 새로 생성된 모든 이슈에 대해 새 브랜치를 만들어 새로 생성된 이슈에 대한 액션을 수행할 수 있습니다.

또는 단일 이슈만 조치하면 되는 경우 관련 이슈 조건(가장 최근에 생성된 상태)을 사용할 수 있습니다.

이슈 필드 편집

이슈 복제, 이슈 편집이슈 전환 액션을 사용하여 자동화를 사용하여 필드를 편집할 때는 다음 지침과 팁을 고려하십시오.

레이블 추가 및 제거

레이블 필드를 설정할 때, ••• > Add/remove values를 선택하여 특정 레이블을 기존 레이블 집합에 추가하거나 기존 레이블에서 제거합니다. 이 옵션을 사용하면 모든 기존 레이블을 교체하는 기본 동작이 재정의됩니다.

다중 선택 필드에 값 추가

기본적으로 다중 선택 필드를 설정할 때 기존 값에 값을 추가하는 대신 필드에 값을 설정합니다. 아래 예에서는 작업 결과가 구성 요소 필드에 이미 있는 다른 값을 재정의합니다.

필드의 기존 값에 새 값을 추가하려면 추가할 새 값과 함께 이슈에서 복사 옵션을 선택합니다.

고급 필드 편집 - JSON

추가 선택사항 추가 필드는 설정할 필드 선택을 사용하여 필드를 편집할 수 없는 경우에만 사용해야 합니다. 이것은 다른 응용프로그램에서 제공하는 사용자 정의 필드에 필요할 수 있습니다.

다음 자동화 작업은 고급 필드 편집을 위한 추가 필드를 제공합니다.

이 필드에 액세스하려면 작업을 구성할 때 추가 옵션을 선택합니다. 이 추가 필드에는 Jira REST API에서 지정한 형식을 사용하여 유효한 JSON 개체를 지정해야 합니다.

JSON 형식

SON 개체에는 다음과 같은 특성 update 또는 fields가 포함될 수 있습니다 :

"update": { "description": { "set": "a new description" }, "labels": [{ "add": "test-label" }] }, "fields": { "summary": "woohoo! a new summary" } }

업데이트와 필드의 차이점은 무엇입니까?

fields는 설정된 작업으로 update를 호출하기 위한 바로 가기입니다. 위의 예에서 description필드에 대해 설정된 호출은 fields섹션에 다음과 같은 설명을 포함하는 것과 같습니다 : {"fields": {"description":"a new description"}}.

update는 기존 집합에서 추가하거나 제거할 값이 여러 개인 필드에 유용합니다. 예를 들어, 이슈에 레이블을 추가할 때 설정 작업을 사용하면 기존의 모든 레이블을 덮어쓰는 반면 update를 사용하면 기존 레이블을 제거하지 않고 레이블을 추가할 수 있습니다.

JSON의 update섹션과 fields섹션에 동시에 동일한 필드가 나타나면 안 됩니다.

참조 이슈 필드

ID가 아닌 이름별로 사용자 정의 필드를 참조할 수 있습니다. 아래 예제에서 동일한 필드는 ID와 이름으로 참조됩니다.

{ "fields": { "customfield_10003": "the value I want to set", "My Text Customfield": "this is the same field as above and using both causes an error" } }

이름으로 참조할 때 필드는 대소문자를 구분하지 않으므로 공백을 밑줄로 바꿀 수 있습니다.

이름이 같은 사용자 정의 필드가 있거나 사용자 정의 필드의 시스템 필드와 이름이 같은 경우 사용자 정의 필드 ID를 사용해야 합니다.

지원되는 필드 및 작업

이슈를 생성하거나 편집하는 경우 프로젝트의 생성 메타 또는 이슈의 편집 메타 정보를 쿼리하여 지원되는 필드 및 작업을 볼 수 있습니다.

다음 사이트를 방문하여 두 작업에 대한 메타데이터를 검색할 수 있습니다.

  • GET /rest/api/3/issue/createmeta?projectKeys=<string>&expand=projects.issuetypes.fields

  • GET /rest/api/3/issue/{issueIdOrKey}/editmeta

이 JSON은 가능한 연산 및 값을 포함하여 Additional fields에 사용할 수 있는 모든 필드를 반환합니다.

메타데이터 생성에 대해 다음 응답을 고려하십시오 :

{ "expand": "projects", "projects": [ { "expand": "issuetypes", "self": "https://jira.atlassian.com/rest/api/2/project/10240", "id": "10240", "key": "JRA", "name": "Jira (including Jira Core)", "avatarUrls": { "48x48": "https://jira.atlassian.com/secure/projectavatar?pid=10240&avatarId=17294", "24x24": "https://jira.atlassian.com/secure/projectavatar?size=small&pid=10240&avatarId=17294", "16x16": "https://jira.atlassian.com/secure/projectavatar?size=xsmall&pid=10240&avatarId=17294", "32x32": "https://jira.atlassian.com/secure/projectavatar?size=medium&pid=10240&avatarId=17294" }, "issuetypes": [ { "self": "https://jira.atlassian.com/rest/api/2/issuetype/10000", "id": "10000", "description": "", "iconUrl": "https://jira.atlassian.com/secure/viewavatar?size=xsmall&avatarId=51505&avatarType=issuetype", "name": "Suggestion", "subtask": false, "expand": "fields", "fields": { "summary": { "required": true, "schema": { "type": "string", "system": "summary" }, "name": "Summary", "hasDefaultValue": false, "operations": [ "set" ] }, // other fields removed for brevity... "components": { "required": false, "schema": { "type": "array", "items": "component", "system": "components" }, "name": "Component/s", "hasDefaultValue": false, "operations": [ "add", "set", "remove" ], "allowedValues": [ { "self": "https://jira.atlassian.com/rest/api/2/component/36920", "id": "36920", "name": "System Administration - Support Tools" }, { "self": "https://jira.atlassian.com/rest/api/2/component/43995", "id": "43995", "name": "User Management - Delete User" } ] } // other fields removed for brevity... } } ] } ] }

메타데이터 편집 개체를 사용하면 Single Select 사용자 지정 필드를 검색하여 빨간색, 파란색, 녹색으로 설정된 작업 및 값을 찾을 수 있습니다.

예를 들어 편집하는 동안 Single Select 필드를 녹색으로 설정하려면 다음 JSON을 사용할 수 있습니다 :

{ "update": { "Single Select": [ { "set": {"value": "green"} } ] } }

또한 메타 정보를 사용하여 특정 사용자 정의 필드의 사용자 정의 필드 ID를 검색할 수도 있습니다.

내 필드를 편집할 수 없는 이유는 무엇입니까?

프로젝트 또는 이슈에 대한 생성 메타 또는 편집 메타를 검색한 경우 편집하려는 필드가 결과 JSON에 표시되지 않을 수 있습니다. 즉, 규칙이 이슈를 편집하거나 생성하려고 할 때 감사 로그의 오류와 함께 실패합니다.

프로젝트의 해당 편집 또는 생성 화면에서 누락된 필드가 원인일 수 있습니다. 이 문제를 해결하려면 Jira 설정 > 이슈 > 화면으로 이동하여 업데이트하려는 필드가 적절한 편집 또는 생성 화면에 있는지 확인하십시오.

또한 자동화 규칙 행위자에게 프로젝트의 문제를 편집하거나 만들 수 있는 적절한 권한이 있는지 확인하십시오.

스마트 값 사용

최근의 GDPR 변경으로 인해, 사용자 필드(예: 보고자, 피할당자)를 참조할 때 이제 이름을 사용하는 대신 사용자의 계정 ID로 속성 ID를 설정해야 합니다.

고급 필드 값은 스마트 값도 지원합니다.

예를 들어, 현재 담당자를 이벤트를 시작한 사용자로 변경하려면 다음을 수행하십시오.

{ "fields": { "assignee": { "id": "{{initiator.accountId}}" } }, }

다른 필드를 더 쉽게 참조하기 위해 위의 내용을 다음과 같이 작성할 수 있습니다.

{ "fields": { "assignee": {{initiator.accountId.asJsonObject("id")}} }, }

이는 올바른 형식으로 JSON을 생성할 뿐만 아니라 텍스트를 올바르게 인코딩합니다. 자체적으로 텍스트를 인코딩하려면 :

{ "fields": { "assignee": { "id": {{initiator.accountId.asJsonString}} } }, }

키를 사용하여 값을 JSON 객체로 변환하려면 :

{ "fields": { "assignee": {{initiator.name.asJsonObject("key")}} } }

그러면 다음이 생성됩니다 :

{ "fields": { "assignee": { "key": "username" } } }

텍스트 배열을 사용하는 필드의 경우 :

{ "fields": { "labels": {{issue.parent.labels.asJsonStringArray}} }, }

단일 필드 객체의 배열을 사용하는 필드의 경우 :

{ "fields": { "Multi User Customfield": {{issue.parent.Multi User Customfield.accountId.asJsonObjectArray("id")}} }, }

필드 구문 예

요약

한 줄의 텍스트 인 시스템 필드입니다.

"summary": "A summary is one line of text"

설명

여러 줄의 텍스트 인 시스템 필드입니다.

"description": "A description is many lines of text\n separated by\n line feeds"

시간 추적 및 로깅 작업

시간 추적을 사용하는 경우 자동화를 사용하여 관련 필드를 업데이트 할 수 있습니다. 시간 추적은 여러 값을 나타 내기 때문에 originalEstimate 및 remainingEstimate는 상위 필드의 일부입니다.

문제에 대한 작업을 기록 할 수 있습니다 :

{ "update": { "worklog" : [ { "add": { "timeSpent" : "6m" } } ] } }

또는 작업을 기록하고 동시에 남은 예상치를 설정합니다 :

{ "update": { "worklog" : [ { "add": { "timeSpent" : "6m" } } ] }, "fields": { "timetracking": { "originalEstimate": "10", "remainingEstimate": "5" } } }

이를 스마트 값과 결합하여 계산 된 값을 사용하여 작업을 기록 할 수 있습니다. :

{ "update": { "worklog" : [ { "add": { "timeSpent" : "{{now.diff(issue.created).businessDays}}d" } } ] } }

다른 이슈에서 시간 추적 필드를 복사하려면 :

{ "fields": { "timetracking": { "originalEstimate": "{{issue.timetracking.originalEstimate}}", "remainingEstimate": "{{issue.timetracking.remainingEstimate}}" } } }

구성품

이름으로 주소가 지정된 여러 값인 시스템 필드입니다.

"components" : [ { "name": "Active Directory"} , { "name": "Network Switch" } ]

영향 받은 버전

이름으로 주소가 지정된 여러 값인 시스템 필드입니다.

"versions" : [ { "name": "Version 1.0"} , { "Version": "1.1" } ]

수정 버전

이름으로 주소가 지정된 여러 값인 시스템 필드입니다.

"fixVersions" : [ { "name": "2.0"} , { "name": "Network Switch" } ]

마감일

'YYYY-MM-DD'형식의 날짜 인 시스템 필드입니다.

"duedate" : "2015-11-18"

레이블

텍스트 값의 배열인 시스템 필드입니다.

"labels" : ["examplelabelnumber1", "examplelabelnumber2"]

레이블 추가

기존 레이블 집합에 레이블 추가 :

{ "update": { "labels": [ { "add": "my-new-label" } ] } }

추가 대신 작업으로 제거 또는 설정을 사용할 수도 있습니다.

이슈의 보안 수준 설정

{ "update": { "security": [ { "set": {"name": "Public"} } ] } }

이 경우 Public은 보안 수준의 이름입니다. 이를 프로젝트에서 유효한 보안 수준으로 대체합니다.

이슈 연결

이슈 링크를 만들 수도 있습니다. 예를 들어 기존 이슈를 편집한 결과 새 이슈를 생성 한 다음 편집된 이슈에 대한 링크를 다시 만듭니다.

{"update": { "issuelinks": [ { "add": { "type": { "name": "Relates" }, "outwardIssue": { "key": "{{issue.key}}" } } } ] } }



링크 유형 이름(위의 예와 관련됨)을 조회하려면 사이트에서<yoursite>/secure/admin/ViewLinkTypes!default.jspa를 참조하십시오. {{issue.key}} 스마트 값은 트리거 이슈의 키를 대체합니다.

참가자 요청

Jira Service Management에 대한 요청 참가자 필드는 특정 구조에 있어야합니다. 예를 들어, 이슈의 마지막 댓글 작성자를 참가자에게 추가하려면 :

{ "update": { "Request participants" : [ { "add": { "id":"{{issue.comments.last.author.accountId}}" } } ] } }

체크 박스 사용자 정의 필드

정의 된 값 목록에서 여러 값을 선택합니다. 값 또는 ID로 주소를 지정할 수 있습니다.

"customfield_11440" : [{ "value" : "option1"}, {"value" : "option2"}] or "customfield_11440" : [{ "id" : 10112}, {"id" : 10115}]

날짜 선택기 사용자 정의 필드

'YYYY-MM-DD' 형식의 날짜입니다.

"customfield_11441" : "2015-11-18"

날짜 시간 선택기 사용자 정의 필드

ISO 8601 'YYYY-MM-DDThh : mm : ss.sTZD'형식의 날짜 시간입니다.

"customfield_11442" : "2015-11-18T14:39:00.000+1100"

사용자 정의 필드에 레이블 지정

텍스트 배열입니다.

"customfield_11443" : [ "rest_label1", "rest_label2" ]

숫자 맞춤 입력란

숫자를 포함합니다.

"customfield_11444" : 664

라디오 버튼 사용자 정의 필드

정의된 값 목록에서 단일 값을 선택합니다. 값 또는 ID로 주소를 지정할 수 있습니다.

"customfield_11445" : { "value": "option2" } or "customfield_11445" : { "id": 10112 }

계단식 선택 사용자 정의 필드

단일 상위 값 및 관련 하위 값을 선택합니다. 값 또는 ID로 주소를 지정할 수 있습니다.

"customfield_11447" : { "value": "parent_option1", "child": { "value" : "p1_child1"} } or "customfield_11447" : { "id": 10112, "child": { "id" : 10115 } }

다중 선택 사용자 정의 필드

정의된 값 목록에서 여러 값을 선택합니다. 값 또는 ID로 주소를 지정할 수 있습니다.

"customfield_11448" : [ { "value": "option1" }, { "value": "option2" } ] or "customfield_11448" : [ { "id": 10112 }, { "id": 10115 } ]

단일 선택 사용자 정의 필드

정의된 값 목록에서 단일 값을 선택합니다. 값 또는 ID로 주소를 지정할 수 있습니다.

"customfield_11449" : { "value": "option3" } or "customfield_11449" : { "id": 10112 }

여러 줄 텍스트 사용자 정의 필드

여러 줄의 텍스트 배열입니다.

"customfield_11450": "Multiples lines of text\n separated by\n line feeds"

텍스트 맞춤 입력란

한 줄의 텍스트 배열입니다.

"customfield_11450": "a single line of text"

URL 사용자 정의 필드

URL을 받습니다.

"customfield_11452" : "http://www.atlassian.com",

단일 사용자 선택기 사용자 정의 필드

단일 사용자를 선택할 수 있습니다.

"customfield_11453" : { "id":"2s1863211f0z284c45269423" },

다중 사용자 선택기 사용자 정의 필드

여러 사용자를 선택할 수 있습니다.

"customfield_11458" : [ { "id":"2s1863211f0z284c45269423" }, { "id":"332212e13z52142111269423" }]

요소 연결(이전의 nFeed) 사용자 지정 필드

문자열 식별자의 배열입니다.

"customfield_10700" : [ "10300", "10400" ]

예를 들어 Elements Connect 필드의 값을 복사하는 경우:

"customfield_10700" : {{ issue.customfield_10700.asJsonStringArray }}

필드의 스마트 값 찾기

스마트 값을 사용하면 Jira 내에서 이슈 데이터에 액세스하고 조작할 수 있습니다. 이러한 기능은 규칙에 상당한 힘과 복잡성을 가중시킬 수 있습니다. 대부분의 경우 사용 가능한 기능 목록에서 스마트 값을 선택할 수 있습니다.

인스턴스가 고도로 커스터마이징된 경우 REST API를 조사하여 올바른 스마트 값을 찾아야 합니다.

스마트 값 찾기

이 구문은 Jira Cloud REST API를 사용하여 액세스할 수 있는 JSON의 Jira 이슈 표현을 따릅니다.

다음 URL을 사용하여 문제의 JSON 표현을 확인하십시오 :

https://<yourinstanceurl>/rest/api/2/issue/<issuekey>?expand=names

이슈 필드의 스마트 값을 찾으려면:

  1. 규칙에 표시할 필드 값으로 이동한 후 필드를 클릭합니다.

  2. 바닥글에 '점 표기법'을 복사합니다 :

이 예에서는 우선 순위 필드가 선택되어 스마트 값을 {{issue.fields.priority.name}}로 표시합니다. 그러나 필드 섹션은 필요하지 않으므로 이 스마트 값을 {{issue.priority.name}} 또는 간단하게 {{priority.name}}로 단축할 수 있습니다.

expand=names 매개 변수 사용

이슈의 JSON을 볼 때 매개 변수 ?expand=names를 사용하면 출력 시작 시 가이드가 제공됩니다.

아래 예제에서 계단식 목록 필드는 사용자 정의 필드이며 필드 이름은 표시되지 않습니다.

이 필드는{{customfield_10034.value}}를 사용하여 스마트 값으로 참조할 수 있습니다. 이 스마트 값을 읽기 쉽게 하려면 필드 이름 {{Cascade List.value}}customfield_10034로 대체할 수도 있습니다.

스마트 값 테스트

스마트 값이 반환되는 것을 테스트하려면 매뉴얼 트리거로그 액션을 사용합니다. 결과는 아래와 같이 감사 로그에 표시됩니다.

Wiki 마크업 및 HTML 처리

전자 메일 또는 알림을 보내기 위해 필드를 참조할 때 원하지 않는 내용, 특히 위키 표시를 반환할 수 있습니다. 예를 들어, {{issue.description}}를 사용하면 다음이 생성됩니다 :

This text is {color:red}RED{color}

자동화를 사용하여 HTML 또는 일반 텍스트로 렌더링할 수 있습니다.

렌더링 HTML

HTML을 렌더링하려면 필드 끝에 .html을 추가합니다. 예를 들어, {{issue.description.html}}는 다음을 생성합니다 :

<p>This text is <font color="red">RED</font></p>

이렇게 하면 설명이 HTML로 렌더링됩니다.

HTML 이메일을 보낼 때, Jira는 기존의 스타일을 이메일에 통합하는데, 이것은 HTML 모양에 영향을 줄 수 있습니다.

일반 텍스트 렌더링

필드 끝에 .text를 추가하여 HTML / wiki 마크 업에서 모든 텍스트를 추출할 수 있습니다. 이것은 종종 깨끗한 전자 메일 또는 알림을 보내는 가장 좋은 방법입니다. 예를 들어, {{issue.description.text}}는 다음을 생성합니다 :

This text is RED

HTML 전자 메일을 통해 생성된 이슈(예: 설명의 글꼴/색상 태그)에서 원하지 않는 Wiki 마크업을 제거할 수도 있습니다.

{{issue.description.text}}}

지원 필드

다음 필드에서는 HTML 또는 일반 텍스트의 렌더링을 지원합니다 :

  • 설명

  • 환경

  • 텍스트 영역 사용자 정의 필드

  • 댓글

자동화로 이슈 이동

Jira는 현재 자동화로 이슈를 옮기는 것을 지원하지 않습니다. 다음 프로세스는 이슈를 복제하고 원본을 삭제하는 다른 방법을 제안합니다.

자동화를 사용하여 이슈를 이동하려면:

  1. 규칙에 이슈 복제 액션을 추가하고 이슈를 이동할 프로젝트를 선택합니다.

  2. 원래 이슈를 삭제하려면 이슈 삭제 액션을 추가합니다.

기존 필드 값 중 많은 값이 보존되지만 첨부 파일과 같은 일부 항목은 이슈와 함께 복제되지 않습니다.

자동화로 이슈 전환

자동화를 사용하여 이슈를 전환할 때 다음 오류가 발생할 수 있습니다 :

No transitions to specified status could be found for issues.

이 오류 메시지는 상태가 존재하지 않음을 나타낼 수 있지만 종종 다른 것을 의미합니다.

전환은 워크플로우를 따라야 함

이슈를 전환하는 규칙을 만들 때 전환은 프로젝트의 워크플로우를 따라야 합니다.

버그를 조사하고 처리하려면 다음 워크플로우를 수행합니다. 이 워크플로우는 이슈 전환 액션으로 수행할 수 있는 작업을 제한합니다.

예를 들어, 버그가 중복된 경우 주석을 달고 완료로 전환하여 규칙을 닫을수 있는 수동 트리거 규칙을 만듭니다. 이 규칙은 "Awaiting triage"상태에 있는 이슈에서 성공적으로 실행되지 않습니다. 이 상태에서 "Under investigation"으로 진행합니다.

이 상태의 이슈에 대해 규칙이 실행되면 오류 상태가 발생합니다.

그러나 워크플로우에서 이러한 상태에서 완료로 전환할 수 있으므로 이 규칙은 “Under Investigation” 및 "In Progress" 이슈에서 성공적으로 실행됩니다.

규칙 행위자에는 올바른 권한이 필요합니다.

규칙 행위자는 규칙을 실행하는 사용자입니다. 이 사용자는 규칙을 트리거하고 수행할 수 있는 모든 액션을 완료하려면 관련 권한이 있어야 합니다.

앞의 예에서, "Selected for development"에서 "In progress"으로의 전환 세부사항은 개발 그룹의 구성원만이 이 전환을 실행할 수 있도록 조건이 있음을 보여줍니다.

이 사용자 그룹에서는 Automation 앱 규칙 행위자 사용자를 추가할 수 없습니다. 적절한 권한을 제공하려면 프로젝트 역할로 전환 조건을 구성해야 합니다. 기본적으로 자동화 규칙 행위자는 atlassian-addons-project-access 역할에 있습니다.

사용자 이름을 사용자 계정 ID로 변환

다음 지침에서는 사용자 스마트 값과 JQL을 사용자 계정 ID로 변환하여 Jira Cloud 내에서 사용자 데이터가 처리되는 방식에 대한 최근 변경 사항을 해결하는 방법을 간략히 설명합니다.

사용자 스마트 값 변환

2019년 4월 29일 이후에는 무엇이 바뀔까요?

다음 사용자 속성을 사용하는 모든 사용자 시스템 필드(보고자, 피할당자 또는 사용자 지정 필드)가 손상되거나 바람직하지 않은 결과로 이어질 수 있습니다 :

  • 기본값(사용자 이름 반환) :

    • {{reporter}}

    • {{issue.assignee}}

    • {{issue.My user custom field}}

    • 사용자를 포함하는 기타 이슈 필드

  • 사용자 키 :

    • {{reporter.key}}

    • {{issue.watchers.key}}

    • {{issue.My user custom field.key}}

    • 사용자를 포함하는 기타 이슈 필드

  • 사용자 이름 :

    • {{reporter.name}}

    • {{issue.creator.name}}

    • {{issue.My user custom field.name}}

    • 사용자를 포함하는 기타 이슈 필드

예를 들어, 다음 코멘트 본문을 사용하여 코멘트 추가 액션을 구성한 경우:

Hi {{reporter.name}}, Please respond. Cheers Atlassian

현재 런타임에 사용자 이름을 렌더링하고 다음을 생성합니다 :

Hi johns, Please respond. Cheers Atlassian

2019년 4월 29일 이후에는 다음이 렌더링됩니다 :

Hi 557058:5aedf933-2312-40bc-b328-0c21314167f0, Please respond. Cheers Atlassian

스마트 값 변환

사용자 스마트 값은 다음과 같은 방식으로 작동합니다.

모든 사용자 필드에 적용됩니다.

유형

예제

기존 값

새 계정 ID 값(4월 29일 이후)

기본

{{reporter}}

johns(사용자 이름)

557058:5aedf933-2312-40bc-b328-0c21314167f0

사용자 이름

{{reporter.name}}

johns

557058:5aedf933-2312-40bc-b328-0c21314167f0

사용자 키

{{reporter.key}}

johns(사용자 키)

557058:5aedf933-2312-40bc-b328-0c21314167f0

계정 ID

{{reporter.accountId}}

557058:5aedf933-2312-40bc-b328-0c21314167f0

557058:5aedf933-2312-40bc-b328-0c21314167f0

보이는 이름

{{reporter.displayName}}

John Smith

John Smith

기존 스마트 값은 용도에 따라 다른 방식으로 변환할 수 있습니다.

사용자 이름의 잘못된 사용

스마트 값은 사용자 이름이 아닌 사용자의 전체 이름을 사용해야 합니다.(기본값 또는 .name)

다음 항목으로 변경해야 합니다 :

{{reporter.name}} - INCORRECT: This returns the user's username, not full name {{reporter.displayName}} - CORRECT: renders the user's full name: John Smith {{reporter.displayName.split(" ").first}} - CORRECT: renders the user's first name: John

예를 들어 JQL 검색, 추가 옵션의 고급 JSON, 또는 발신 웹훅 등에서 API 호출을 위해 사용자를 고유하게 식별해야하는 경우 다음을 사용하십시오 :

{{reporter.accountId}}

Wiki 마크 업의 언급

위키 마크 업의 멘션도 변환해야합니다 :

Hi [~{{assignee}}] - INCORRECT Hi [~accountid:{{assignee.accountId}}] - CORRECT

고급 필드 값 (JSON)

사용자 필드 (보고자, 담당자 등)를 참조하려면 이제 "이름"을 사용하는 대신 사용자의 계정 ID로 속성 "id"를 설정해야합니다.

이러한 값은 다음과 같이 변환해야합니다 :

// INCORRECT: This will stop working since {{initiator.name}} will no longer return usernames { "fields": { "assignee": { "name": "{{initiator.name}}" } } } // CORRECT: { "fields": { "assignee": { "id": "{{initiator.accountId}}" } } }

JQL 변환

2019년 4월 29일 이후에는 무엇이 중단됩니까?

현재는, 사용자 이름이 포함된 JQL 검색을 할 수 있습니다. 예를 들면 다음과 같습니다 :

reporter = johns and assignee in (fred, barney)

2019년 4월 29일 이후에는 이러한 JQL 검색이 실패하고 더 이상 유효한 결과를 반환하지 않습니다. 모든 사용자 이름은 해당 계정 ID로 교체해야 합니다.

JQL 변환

JQL 자동 변환

저장된 모든 JQL 검색은 새 계정 ID 기반 형식으로 자동 변환됩니다.

이 경우 위의 예는 다음과 같습니다 :

reporter = 557058:5aedf933-2312-40bc-b328-0c21314167f0 and assignee in (5c00beb62434bf3a1a91d5d6, 123123adfafcadfd6)

그러나 더 이상 JQL 문자열에서 사용자를 식별할 수 없습니다. 이와 같은 쿼리를 입력하는 것도 어려울 수 있습니다.

이를 해결하기 위해 다음 컨트롤이 JQL 쿼리를 입력하고 읽을 때 도움이 될 수 있습니다.

계정 ID 삽입 :
기존 JQL에서 사용자 해결 :