Confluence에서 페이지를 업데이트할 때 두 가지 옵션이 있습니다. 그냥 [업데이트]와 [업데이트 설정 조정을 통해 버전 댓글을 남겨 업데이트]가 있습니다.

버전 댓글을 남기게 된다면 Git에서 Commit 같이 어떤 내용이 변경되었는지 버전 별로 간단하게 메시지를 남길 수 있어 필요한 기능이라고 생각이 되는데 이를 강제할 수 있는 방법은 현재 없는 것으로 보입니다.


그래서 사용자가 버전 댓글을 남기지 않고 그냥 업데이트 했을 때 관리자에게 메일을 통해 알려서 버전 댓글을 달 수 있게 하는 방법에 대해 소개하려고 합니다.
먼저 gmail의 smtp를 이용하기 위해서 Google [앱 비밀번호]를 먼저 발급받아야 합니다.


발급된 [기기용 앱 비밀번호]를 따로 복사 해둡니다.

[ScriptRunner] > [Script Listeners]에서 [Add Listener]를 눌러줍니다. Called에 간단히 제목이나 설명을 추가하고 [On these events]에 우리는 버전 댓글 없이 업데이트 됐을 때니 [Page updated]를 선택합니다.
그리고 Code to Run에 아래 코드를 입력 후 [Save] 합니다.
import javax.mail.internet.*
import javax.mail.*
def pageID = page["id"] // 현재 업데이트 된 페이지 ID
def curVerID = page["version"] // 업데이트 된 페이지 현재 버전
def res = get("/wiki/api/v2/pages/${pageID}/versions").asObject(Map).body
def value = get("/wiki/api/v2/pages/${pageID}?expand=body.storage").asObject(Map).body
def lastVersionRes = res["results"].find { ver ->
ver["number"] == curVerID
} // 마지막으로 update 된 버전의 정보
if ( lastVersionRes["message"] == "" ) {
Properties prop = new Properties()
//Enter the details of your SMTP server
prop.put("mail.smtp.auth", true)
prop.put("mail.smtp.host", "smtp.gmail.com")
prop.put("mail.smtp.port", "587")
prop.put("mail.smtp.starttls.enable", "true")
String emailId = "Gmail ID"
String password = "App Password"
Session session = Session.getInstance(prop, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
new PasswordAuthentication(emailId, password)
}
})
MimeMessage msg = new MimeMessage(session)
msg.setFrom(new InternetAddress(emailId, "Confluence Alert"))
msg.setSubject("[Confluence] 페이지 업데이트 버전 댓글이 제대로 기록되지 않았습니다.", "UTF-8")
String htmlBody = """
<html>
<body>
<p><strong> 업데이트 한 ${page["title"]}에 버전 댓글이 입력되지 않았습니다.</strong></p>
<p><strong> Url = <a href="${page["self"]}">${page["self"]}</a></strong></p>
</body>
</html>
"""
msg.setContent(htmlBody, "text/html; charset=UTF-8")
msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse("Admin Email", false))
Transport.send(msg)
logger.info("Email Sent Successfully!!")
} // 버전 정보가 비어져 있으면 버전 메시지를 추가해서 다시 업데이트
이제 Listener를 등록해 놨으니 버전 댓글 없이 업데이트 시 아래처럼 메일이 오게 됩니다.

그리고 만약에 버전 댓글을 기록하지 않은 버전을 지우고 싶다면 먼저 버전 댓글이 입력되지 않은 상태에서 업데이트 버튼을 누른 후 글의 내용은 일절 수정하지 않고 버전 기록만 남긴 후 업데이트 합니다.

다음으로 [버전 이력]으로 들어가 버전 이력을 남기지 않은 버전을 삭제합니다.(관리자 계정으로만 가능)

그렇게 되면 버전 이력이 추가된 버전과 그 이전 버전만 남게 되게 됩니다.

'Programming > Jira&Confluence' 카테고리의 다른 글
[Jira] ScriptRunner를 이용하여 이슈 상태 바꾸기, 버전 수정하기 (0) | 2025.03.17 |
---|---|
[Confluence] 페이지 상태 사용하기 (0) | 2025.02.12 |
[Confluence] ScriptRunner를 이용하여 Jira Issue 정보 파싱하기 (0) | 2025.02.07 |