업적
Offering: GitLab.com, GitLab Self-Managed
On GitLab Self-Managed, by default this feature is not available. 업적은 GitLab에서의 활동에 대해 사용자에게 보상을 주는 방법입니다. 사용자로서 다양한 프로젝트나 그룹에 대한 기여를 프로필에서 강조 표시하기 위해 업적을 수집할 수 있습니다.
히스토리
- Introduced in GitLab 15.10 with a flag named
achievements. Disabled by default.
On GitLab Self-Managed, by default this feature is not available. To make it available,
an administrator can enable the feature flag named achievements.
업적은 GitLab에서의 활동에 대해 사용자에게 보상을 주는 방법입니다. 네임스페이스 유지 관리자 또는 소유자로서 특정 기여에 대한 사용자 정의 업적을 만들 수 있습니다. 정의된 기준에 따라 사용자에게 이 업적을 수여하거나 취소할 수 있습니다.
사용자로서 다양한 프로젝트나 그룹에 대한 기여를 프로필에서 강조 표시하기 위해 업적을 수집할 수 있습니다. 업적은 이름, 설명, 아바타로 구성됩니다.

업적은 사용자 소유로 간주됩니다. 업적을 생성한 네임스페이스의 공개 설정에 관계없이 표시됩니다.
이 기능은 실험적입니다. 계획된 작업에 대한 자세한 내용은 에픽 9429를 참조하세요. 에픽에 댓글을 남겨 사용 사례를 알려주세요.
업적 유형#
프로그래밍 방식으로는 업적을 생성, 수여, 취소 또는 삭제하는 방법이 하나뿐입니다.
실질적으로는 다음과 같이 수여되는 업적을 구분할 수 있습니다:
- 한 번이고 취소 불가능한 경우. 예를 들어 "첫 번째 기여 병합" 업적.
- 한 번이고 취소 가능한 경우. 예를 들어 "핵심 팀원" 업적.
- 여러 번. 예를 들어 "이달의 기여자" 업적.
그룹 업적 보기#
그룹에서 사용 가능하고 수여된 모든 업적을 보려면:
https://gitlab.com/groups/<group-path>/-/achievements로 이동합니다.
페이지에는 업적 목록과 해당 업적을 받은 구성원이 표시됩니다.
사용자 업적 보기#
사용자의 프로필 페이지에서 해당 사용자의 업적을 볼 수 있습니다.
사전 요구 사항:
- 사용자 프로필이 공개여야 합니다.
사용자의 업적을 보려면:
-
사용자의 프로필 페이지로 이동합니다.
-
사용자의 아바타 아래에서 업적을 확인합니다.
-
업적에 대한 세부 정보를 보려면 해당 업적 위에 마우스를 올립니다. 다음 정보가 표시됩니다:
- 업적의 이름
- 업적의 설명
- 사용자에게 업적이 수여된 날짜
- 사용자가 네임스페이스의 구성원이거나 네임스페이스가 공개인 경우 업적을 수여한 네임스페이스
사용자의 업적 목록을 가져오려면 user GraphQL 유형을 쿼리합니다.
query {
user(username: "<username>") {
userAchievements {
nodes {
achievement {
name
description
avatarUrl
namespace {
fullPath
name
}
}
}
}
}
}
업적 만들기#
특정 기여에 수여할 사용자 정의 업적을 만들 수 있습니다.
사전 요구 사항:
- 네임스페이스에 대한 유지 관리자 또는 소유자 역할이 있어야 합니다.
업적을 만들려면:
-
UI에서:
- 업적 페이지에서 새 업적을 선택합니다.
- 업적의 이름을 입력합니다.
- 선택 사항. 설명을 입력하고 업적의 아바타를 업로드합니다.
- 변경 사항 저장을 선택합니다.
-
GraphQL API를 사용하여
achievementsCreateGraphQL 뮤테이션을 호출합니다:mutation achievementsCreate($file: Upload!) { achievementsCreate( input: { namespaceId: "gid://gitlab/Namespace/<namespace id>", name: "<name>", description: "<description>", avatar: $file} ) { errors achievement { id name description avatarUrl } } }아바타 파일을 제공하려면
curl을 사용하여 뮤테이션을 호출합니다:curl "https://gitlab.com/api/graphql" \ -H "Authorization: Bearer <your-pat-token>" \ -H "Content-Type: multipart/form-data" \ -F operations='{ "query": "mutation ($file: Upload!) { achievementsCreate(input: { namespaceId: \"gid://gitlab/Namespace/<namespace-id>\", name: \"<name>\", description: \"<description>\", avatar: $file }) { achievement { id name description avatarUrl } } }", "variables": { "file": null } }' \ -F map='{ "0": ["variables.file"] }' \ -F 0='@/path/to/your/file.jpg'성공하면 응답에 업적 ID가 반환됩니다:
{"data":{"achievementsCreate":{"achievement":{"id":"gid://gitlab/Achievements::Achievement/1","name":"<name>","description":"<description>","avatarUrl":"https://gitlab.com/uploads/-/system/achievements/achievement/avatar/1/file.jpg"}}}}
업적 업데이트#
언제든지 업적의 이름, 설명, 아바타를 변경할 수 있습니다.
사전 요구 사항:
- 네임스페이스에 대한 유지 관리자 또는 소유자 역할이 있어야 합니다.
업적을 업데이트하려면 achievementsUpdate GraphQL 뮤테이션을 호출합니다.
mutation achievementsUpdate($file: Upload!) {
achievementsUpdate(
input: {
achievementId: "gid://gitlab/Achievements::Achievement/<achievement id>",
name: "<new name>",
description: "<new description>",
avatar: $file}
) {
errors
achievement {
id
name
description
avatarUrl
}
}
}
업적 수여#
사용자에게 업적을 수여하여 그들의 기여를 인정할 수 있습니다. 업적이 수여되면 사용자는 이메일 알림을 받습니다.
사전 요구 사항:
- 네임스페이스에 대한 유지 관리자 또는 소유자 역할이 있어야 합니다.
사용자에게 업적을 수여하려면 achievementsAward GraphQL 뮤테이션을 호출합니다.
mutation {
achievementsAward(input: {
achievementId: "gid://gitlab/Achievements::Achievement/<achievement id>",
userId: "gid://gitlab/User/<user id>" }) {
userAchievement {
id
achievement {
id
name
}
user {
id
username
}
}
errors
}
}
업적 취소#
사용자가 수여 기준을 더 이상 충족하지 않는다고 판단되면 해당 사용자의 업적을 취소할 수 있습니다.
사전 요구 사항:
- 네임스페이스에 대한 유지 관리자 또는 소유자 역할이 있어야 합니다.
업적을 취소하려면 achievementsRevoke GraphQL 뮤테이션을 호출합니다.
mutation {
achievementsRevoke(input: {
userAchievementId: "gid://gitlab/Achievements::UserAchievement/<user achievement id>" }) {
userAchievement {
id
achievement {
id
name
}
user {
id
username
}
revokedAt
}
errors
}
}
수여된 업적 삭제#
실수로 사용자에게 업적을 수여한 경우 삭제할 수 있습니다.
사전 요구 사항:
- 네임스페이스에 대한 소유자 역할이 있어야 합니다.
수여된 업적을 삭제하려면 userAchievementsDelete GraphQL 뮤테이션을 호출합니다.
mutation {
userAchievementsDelete(input: {
userAchievementId: "gid://gitlab/Achievements::UserAchievement/<user achievement id>" }) {
userAchievement {
id
achievement {
id
name
}
user {
id
username
}
}
errors
}
}
업적 삭제#
업적이 더 이상 필요하지 않다고 판단되면 삭제할 수 있습니다. 이렇게 하면 업적의 모든 관련 수여 및 취소된 인스턴스가 삭제됩니다.
사전 요구 사항:
- 네임스페이스에 대한 유지 관리자 또는 소유자 역할이 있어야 합니다.
업적을 삭제하려면 achievementsDelete GraphQL 뮤테이션을 호출합니다.
mutation {
achievementsDelete(input: {
achievementId: "gid://gitlab/Achievements::Achievement/<achievement id>" }) {
achievement {
id
name
}
errors
}
}
업적 숨기기#
프로필에 업적을 표시하지 않으려면 거부할 수 있습니다. 이렇게 하려면:
- 오른쪽 상단에서 아바타를 선택합니다.
- 프로필 편집을 선택합니다.
- 기본 설정 섹션에서 프로필에 업적 표시 체크박스를 선택 취소합니다.
- 프로필 설정 업데이트를 선택합니다.
특정 업적의 공개 여부 변경#
히스토리
- Introduced in GitLab 17.3.
프로필에 모든 업적을 표시하고 싶지 않은 경우 특정 업적의 공개 여부를 변경할 수 있습니다.
업적 중 하나를 숨기려면 userAchievementsUpdate GraphQL 뮤테이션을 호출합니다.
mutation {
userAchievementsUpdate(input: {
userAchievementId: "gid://gitlab/Achievements::UserAchievement/<user achievement id>"
showOnProfile: false
}) {
userAchievement {
id
showOnProfile
}
errors
}
}
업적 중 하나를 다시 표시하려면 showOnProfile 인수에 true 값을 사용하여 동일한 뮤테이션을 호출합니다.
업적 순서 변경#
기본적으로 프로필의 업적은 수여 날짜 오름차순으로 표시됩니다.
업적의 순서를 변경하려면 우선순위가 지정된 모든 업적의 정렬된 목록과 함께 userAchievementPrioritiesUpdate GraphQL 뮤테이션을 호출합니다.
mutation {
userAchievementPrioritiesUpdate(input: {
userAchievementIds: ["gid://gitlab/Achievements::UserAchievement/<first user achievement id>", "gid://gitlab/Achievements::UserAchievement/<second user achievement id>"],
}) {
userAchievements {
id
priority
}
errors
}
}
