연동: Jira, Xray, Azure DevOps, Slack 및 Telegram
Nexus Studio는 Jira Cloud, Xray Cloud, Azure DevOps, Slack, Telegram의 다섯 가지 서비스에 연결됩니다. 각 서비스는 직접 켜기 전까지 꺼져 있으며, 당사 서버를 거치지 않고 사용자 컴퓨터에서 직접 연결됩니다. 이 페이지에서는 각 서비스의 기능, 읽어 오는 키, 그리고 절대 수행하지 않는 작업을 설명합니다.
작성: Nexus Studio 팀, Verdict System LLC. 2026년 10월 9일.
모든 연동의 작동 방식
- 직접 켜기 전까지 꺼져 있습니다. 각 서비스에는
JIRA_ENABLED,XRAY_ENABLED,AZURE_BOARDS_ENABLED,SLACK_ENABLED,TELEGRAM_ENABLED라는 개별 스위치가 있습니다. 기본값은 모두false입니다. - 사용자 컴퓨터에서 직접 연결합니다. 엔진은 테스트를 실행하는 컴퓨터에서 각 서비스의 API를 직접 호출합니다. 당사 서버를 거치는 데이터는 없으며, 당사는 사용자의 이슈, 알림, 결과를 볼 수 없습니다.
- 키는 작업 공간에 보관됩니다. 토큰과 키는 사용자 디스크에 있는 작업 공간의
.env파일에 한 줄씩 저장됩니다. 설정의 연동 항목에서 이를 편집할 수 있으며, 모든 토큰, 키, 웹훅은 가려진 상태로 표시됩니다. - 샌드박스 실행은 제외됩니다. 샌드박스 실행은 아직 작성 중인 테스트이지 발견된 문제가 아니므로, 이슈를 생성하거나 이슈에 댓글을 달거나 이슈를 종료하지 않습니다.
테스트가 계속 실패하는 동안 이슈는 테스트당 하나만 유지됩니다
Jira와 Azure Boards는 동일한 수명 주기를 따릅니다. 이슈는 실행이 아닌 테스트에 연결되므로, 매일 밤 실패하는 테스트는 매일 밤 새 이슈를 만드는 대신 하나의 이슈에 이력을 쌓습니다.
- 첫 실패 시 이슈 하나를 생성합니다. 실행이 BREACHED, BREACHED_FLAKY, CHAOS_BREACHED 또는 TIMEOUT으로 끝나면 해당 테스트에 대해 이슈 하나를 생성하고, 오류와 실패 시점의 스크린샷을 첨부합니다.
- 반복해서 실패하면 기존 이슈에 댓글을 추가합니다. 해당 이슈가 열려 있는 동안 다시 실패하면 새 스크린샷을 첨부한 댓글을 추가합니다. 두 브라우저에서 동시에 실패해도 같은 이슈에 추가합니다.
- 문제없이 통과하면 이슈를 종료합니다. 한 실행의 모든 브라우저에서 테스트가 문제없이 통과하면, 이슈에 이를 알리는 댓글을 추가하고 완료 상태로 전환합니다. 워크플로에 해당 전환이나 상태가 없으면 댓글만 추가합니다.
- 그 이후에 실패하면 새 이슈를 생성합니다. 기존 이슈가 삭제되었거나 이동된 상태에서 실패한 경우에도 새 이슈를 생성합니다.
첨부 파일: 기본적으로 스크린샷만 첨부합니다. Playwright 추적 파일과 실행 로그에는 쿠키, 인증 헤더, 입력한 비밀번호 등의 세션 데이터가 포함될 수 있으므로, 설정에서 NEXUS_ISSUE_ATTACH_TRACE=true로 명시적으로 허용한 경우에만 함께 첨부합니다. 파일당 최대 10 MB까지 첨부할 수 있습니다.
FLAKY는 이슈를 생성하지 않습니다: 실패 후 재시도에서 통과한 실행은 버그가 아닙니다. BLOCKED, UNREACHABLE, CRASHED 또는 구성 오류 역시 애플리케이션이 아닌 환경에 관한 문제이므로 이슈를 생성하지 않습니다 (판정 결정 방식). 각 테스트에 연결된 이슈 정보는 작업 공간의 evidence/integrations/issue-map.json에 보관됩니다.
Jira Cloud
- 연결: Atlassian 계정 이메일과 id.atlassian.com에서 생성한 API 토큰을 사용합니다. 설정의 연동 항목에 Jira 사이트의 링크를 아무거나 붙여 넣으면 Studio가 사이트와 프로젝트 키를 저장합니다. 사이트 주소인
JIRA_BASE_URL은 https여야 합니다. 연결 확인은 연결 정보를 테스트할 뿐, 아무것도 생성하지 않습니다. - 이슈:
JIRA_PROJECT_KEY에 위 수명 주기를 따르는 Bug를 생성합니다. 문제없이 통과하면 이슈는JIRA_DONE_TRANSITION에 지정된 이름의 전환을 통해 이동합니다. 기본값은 Done이며, 이름은 대소문자를 구분하지 않고 일치 여부를 확인합니다. - 중복 방지: 지난 24시간 이내에 동일한 요약의 Bug가 생성되었다면 새로 생성하지 않습니다.
- 수동 전송: 원할 때 Evidence Locker에서 실패 내용을 Jira로 보낼 수 있습니다.
Xray Cloud
XRAY_ENABLED=true이면 nexus ci를 실행할 때마다 JUnit XML을 Xray Cloud의 Test Execution으로 가져옵니다. 대상 프로젝트는 XRAY_PROJECT_KEY이며, 이 값이 비어 있으면 JIRA_PROJECT_KEY를 사용합니다. XRAY_TEST_PLAN_KEY를 설정하면 해당 Test Plan 아래에 가져옵니다.
- 연결: Jira의 앱, Xray, 전역 설정, API 키에서 생성한 API 키 쌍인
XRAY_CLIENT_ID와XRAY_CLIENT_SECRET을 사용합니다. - 외부로 전송되는 항목: 해당 실행의 JUnit 파일뿐입니다. 이전 실행에서 남은 JUnit 파일은 절대 가져오지 않습니다.
- 실행을 실패로 처리하지 않음: 가져오기에 실패하면 실행 로그에 그 이유가 한 줄로 표시되며, 비밀 정보는 가려집니다.
Azure DevOps: Boards, Test Plans 및 Pipelines
개인용 액세스 토큰(PAT) 하나와 프로젝트 하나를 사용하며, AZURE_DEVOPS_ORG_URL(https://dev.azure.com/<org> 또는 https://<org>.visualstudio.com)과 AZURE_DEVOPS_PROJECT에 설정합니다. PAT는 Azure DevOps 자체 호스트에만 전송되며 로그에는 절대 표시되지 않습니다. 설정의 통합에서 Azure DevOps 연결을 선택하면 프로젝트와 작업 항목 유형을 확인하며, 아무것도 생성하지 않습니다.
- Azure Boards:
AZURE_BOARDS_ENABLED=true이면 실패 시 위의 수명 주기에 따라AZURE_BOARDS_WORK_ITEM_TYPE유형의 작업 항목이 생성되며, 기본값은 Bug입니다. 문제없이 통과하면AZURE_BOARDS_DONE_STATE에 지정된 상태로 전환되며, 기본값은 Resolved입니다; 프로세스에서 해당 상태를 허용하지 않으면 댓글만 추가됩니다. PAT에는 Work Items(읽기 & 쓰기) 권한이 필요합니다. Evidence Locker에서도 실패를 Azure Boards로 수동 전송할 수 있습니다. - Azure Test Plans: CI/CD 화면에서 생성하는
azure-pipelines.yml은PublishTestResults@2작업을 통해 실행의 JUnit XML을 게시하므로, 모든 파이프라인 실행이 Test Plans의 Runs에 표시됩니다. - Azure Pipelines:
nexus ci-remote --provider=azure는AZURE_PIPELINE_ID에 지정된 파이프라인 실행을 대기열에 추가하고, 완료될 때까지 기다린 후 JUnit XML을 이 컴퓨터로 가져옵니다. 이를 위해 PAT에는 Build(읽기 & 실행) 권한이 필요합니다.
Slack
- 연결:
SLACK_WEBHOOK_URL에 수신 웹후크 URL 하나를 설정합니다. 설정에 테스트 메시지 보내기 버튼이 있습니다. - 수신 항목: Block Kit 메시지로 실행 요약을 받으며,
NEXUS_SLACK_NOTIFY=true이면 실패한 테스트, 결과가 불안정한 테스트, 카오스 테스트 또는 시각적 회귀 테스트마다 메시지를 하나씩 받습니다. 실패 메시지에는 관련 Jira 이슈가 있는 경우 해당 링크가 포함됩니다. - 수동 전송: Evidence Locker에서 실패의 텍스트 요약을 Slack에 게시할 수 있습니다. Slack에는 파일이 전송되지 않습니다.
Telegram
- 연결: @BotFather로 한 번 생성한 나만의 봇을
TELEGRAM_TOKEN에 설정합니다. 설정에서 QR로 연결을 선택하면 채팅이 연결되고TELEGRAM_CHAT_ID가 채워집니다. 공유 봇은 없습니다. - 수신 항목: 실패 알림을 받으며,
NEXUS_TELEGRAM_NOTIFY=true이면 테스트마다 하나씩 받습니다. 또한 Studio에서 공유하기로 선택한 보고서와 파일을 받습니다. - 활성화하기 전에: Telegram은 보고서와 PDF 등의 파일을 수신할 수 있으며, 이 파일은 Telegram 서버로 전송됩니다. 규제가 적용되는 환경에서는 먼저 규정 준수 담당 팀에 문의하세요.
키
각 키는 작업 공간의 .env에 한 줄씩 저장됩니다. 모두 설정에서 편집할 수 있습니다.
| 서비스 | 키 | 기본값 |
|---|---|---|
| Jira Cloud | JIRA_ENABLED, JIRA_BASE_URL, JIRA_EMAIL, JIRA_API_TOKEN, JIRA_PROJECT_KEY, JIRA_DONE_TRANSITION | 꺼짐; 프로젝트 QA; 전환 상태 Done |
| Xray Cloud | XRAY_ENABLED, XRAY_CLIENT_ID, XRAY_CLIENT_SECRET, XRAY_PROJECT_KEY, XRAY_TEST_PLAN_KEY | 꺼짐; 비어 있으면 Jira 프로젝트 사용 |
| Azure DevOps | AZURE_BOARDS_ENABLED, AZURE_DEVOPS_ORG_URL, AZURE_DEVOPS_PROJECT, AZURE_DEVOPS_PAT, AZURE_BOARDS_WORK_ITEM_TYPE, AZURE_BOARDS_DONE_STATE, AZURE_PIPELINE_ID | 꺼짐; 유형 버그; 상태 해결됨 |
| 이슈 첨부 파일 | NEXUS_ISSUE_ATTACH_TRACE | 꺼짐: 스크린샷만 |
| Slack | SLACK_ENABLED, SLACK_WEBHOOK_URL, NEXUS_SLACK_NOTIFY | 꺼짐 |
| Telegram | TELEGRAM_ENABLED, TELEGRAM_TOKEN, TELEGRAM_CHAT_ID, NEXUS_TELEGRAM_NOTIFY | 꺼짐 |
파이프라인에서는 AZURE_PIPELINE_ID를 제외한 동일한 키를 파이프라인의 비밀 변수로 사용하며, 키를 설정하지 않으면 해당 서비스는 꺼진 상태로 유지됩니다 (CI/CD의 비밀 정보).
질문
Nexus Studio에서 제 Jira 또는 Azure DevOps 데이터를 볼 수 있나요?
아니요. 엔진은 사용자의 컴퓨터에서 사용자의 키로 Jira, Xray, Azure DevOps, Slack 및 Telegram과 통신합니다. 어떤 데이터도 저희 서버를 거치지 않습니다.
불안정한 테스트도 티켓을 생성하나요?
아니요. FLAKY는 아무것도 등록하지 않습니다. BREACHED_FLAKY는 등록합니다: 실패 자체가 일관되지 않았으며, 재시도해도 이 실패가 숨겨지지 않습니다.
이번 주에 테스트가 30번 실패했습니다. 이슈는 몇 개 생성되나요?
하나입니다. 모든 브라우저에서 테스트가 문제없이 통과할 때까지, 첫 실패 이후 실패할 때마다 댓글과 새 스크린샷이 추가됩니다.
Jira와 Azure Boards를 동시에 사용할 수 있나요?
네. 각 서비스는 테스트마다 별도의 이슈를 유지합니다.