성취
- GitLab 15.10에 도입됨, 기본적으로 ‘성취’라는 플래그가 있는 feature flag이 있습니다.
성취는 GitLab에서 사용자 활동에 대한 보상 수단입니다. Namespace 관리자 또는 소유자로서 특정 기여를 위해 사용자 정의 성취를 만들 수 있습니다. 이러한 성취를 사용자에게 수여하거나 정의된 기준에 따라 철회할 수 있습니다.
사용자로서는 프로필에서 다양한 프로젝트나 그룹에 대한 기여를 강조하기 위해 성취를 수집할 수 있습니다. 성취는 이름, 설명 및 아바타로 구성됩니다.
성취는 사용자에 의해 소유되는 것으로 간주됩니다. Namespace의 가시성 설정과 관계없이 표시됩니다.
이 기능은 실험적인 것입니다. 계획된 작업에 대한 자세한 내용은 epic 9429를 참조하세요. epic에 의겼 후 사용 사례를 알려주세요.
성취유형
프로그래밍적으로, 성취를 생성, 수여, 철회 또는 삭제하는 방법은 한 가지입니다.
실제로, 상여할 수 있는 성취의 유형을 구분할 수 있습니다.
- 한 번만 부여되고 철회할 수 없음. 예를 들어 “첫 번째 기여 병합” 성취.
- 한 번만 부여되고 철회할 수 있는 성취. 예를 들어 “핵심 팀 구성원” 성취.
- 여러 번 부여됨. 예를 들어 “이달의 기여자” 성취.
그룹 성취보기
그룹에 대한 모든 가능한 및 부여된 성취를 보려면:
-
https://gitlab.com/groups/<group-path>/-/achievements
으로 이동하십시오.
페이지에는 성취 목록과 해당 성취를 받은 회원 목록이 표시됩니다.
사용자 성취 보기
사용자의 성취를 사용자 프로필 페이지에서 볼 수 있습니다.
전제 조건:
- 사용자 프로필은 공개여야 합니다.
사용자의 성취를 보려면:
- 사용자 프로필 페이지로 이동합니다.
- 사용자 아바타 아래에서 그들의 성취를 볼 수 있습니다.
-
성취에 대한 자세한 정보를 보려면 해당 성취 위로 마우스를 가져가세요. 다음 정보가 표시됩니다.
- 성취명
- 성취 설명
- 사용자에게 성취가 수여된 날짜
- 사용자가 Namespace의 구성원이거나 Namespace가 공개되어 있을 경우 성취를 수여한 Namespace
사용자의 성취 목록을 검색하려면 user
GraphQL type을 쿼리하세요.
query {
user(username: "<username>") {
userAchievements {
nodes {
achievement {
name
description
avatarUrl
namespace {
fullPath
name
}
}
}
}
}
}
성취 만들기
특정 기여를 위해 사용자 정의 성취를 만들 수 있습니다.
전제 조건:
- Namespace에 대한 Maintainer 또는 Owner 역할이어야 합니다.
성취를 만들려면:
- UI에서:
- 성취 페이지에서 새로운 성취를 선택합니다.
- 성취 이름을 입력합니다.
- 선택 사항. 성취에 대한 설명을 입력하고 성취용 아바타를 업로드합니다.
- 변경 사항 저장을 선택합니다.
-
GraphQL API를 사용하여,
achievementsCreate
GraphQL mutation을 호출하세요.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"}}}}
성취 업데이트
언제든지 성취의 이름, 설명 및 아바타를 변경할 수 있습니다.
전제 조건:
- Namespace에 대한 Maintainer 또는 Owner 역할이어야 합니다.
성취를 업데이트하려면, achievementsUpdate
GraphQL mutation을 호출하세요.
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
}
}
}
성취 수여
기여를 인정하기 위해 사용자에게 성취를 부여할 수 있습니다. 사용자에게 성취를 수여하면 이메일 알림을 받습니다.
전제 조건:
- Namespace에 대한 Maintainer 또는 Owner 역할이어야 합니다.
사용자에게 성취를 수여하려면, achievementsAward
GraphQL mutation을 호출하세요.
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
}
}
업적 취소
사용자가 수상 기준을 더 이상 충족하지 않는다고 판단하는 경우 사용자의 업적을 취소할 수 있습니다.
사전 요구 사항:
- 해당 네임스페이스의 Maintainer 또는 Owner 역할이 있어야 합니다.
업적을 취소하려면 achievementsRevoke
GraphQL 뮤테이션을 호출하십시오.
mutation {
achievementsRevoke(input: {
userAchievementId: "gid://gitlab/Achievements::UserAchievement/<user achievement id>" }) {
userAchievement {
id
achievement {
id
name
}
user {
id
username
}
revokedAt
}
errors
}
}
수여된 업적 삭제
실수로 사용자에게 업적을 수여한 경우 삭제할 수 있습니다.
사전 요구 사항:
- 해당 네임스페이스의 Owner 역할이 있어야 합니다.
수여된 업적을 삭제하려면 userAchievementsDelete
GraphQL 뮤테이션을 호출하십시오.
mutation {
userAchievementsDelete(input: {
userAchievementId: "gid://gitlab/Achievements::UserAchievement/<user achievement id>" }) {
userAchievement {
id
achievement {
id
name
}
user {
id
username
}
}
errors
}
}
업적 삭제
더 이상 업적이 필요하지 않다고 판단하는 경우 삭제할 수 있습니다. 이로 인해 해당 업적과 관련된 모든 수여 및 취소된 인스턴스가 삭제됩니다.
사전 요구 사항:
- 해당 네임스페이스의 Maintainer 또는 Owner 역할이 있어야 합니다.
업적을 삭제하려면 achievementsDelete
GraphQL 뮤테이션을 호출하십시오.
mutation {
achievementsDelete(input: {
achievementId: "gid://gitlab/Achievements::Achievement/<achievement id>" }) {
achievement {
id
name
}
errors
}
}
업적 숨기기
프로필에 업적을 표시하지 않으려면 선택할 수 있습니다. 다음을 수행하십시오:
- 왼쪽 사이드바에서 아바타를 선택합니다.
- 프로필 편집을 선택합니다.
- 주요 설정 섹션에서 프로필에 업적 표시 확인란을 해제합니다.
- 프로필 설정 업데이트를 선택합니다.
특정 업적의 가시성 변경
프로필에 모든 업적을 표시하지 않으려면 특정 업적의 가시성을 변경할 수 있습니다.
자신의 업적 중 하나를 숨기려면 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
}
}