성취
- GitLab 15.10에 도입되었습니다. 기본적으로 비활성화된
achievements
라는 플래그와 함께.
플래그:
자체 관리 GitLab에서는 기본적으로 이 기능을 사용할 수 없습니다. 이를 사용하려면 관리자가 achievements
라는 피처 플래그를 활성화할 수 있습니다. 이 기능은 프로덕션 환경에 사용하기에 적합하지 않습니다.
성취(Achievements)는 GitLab에서의 활동에 대한 보상 방법입니다. 네임스페이스 관리자 또는 소유자로서 특정 기여를 위해 사용자 지정 성취를 만들어 기준에 따라 사용자에게 수여하거나 회수할 수 있습니다.
사용자로서 여러 프로젝트나 그룹에 대한 기여를 강조하기 위해 프로필에서 여러 성취를 수집할 수 있습니다. 성취는 이름, 설명 및 아바타로 구성됩니다.
성취는 사용자가 소유하는 것으로 간주됩니다. 생성된 성취의 가시성 설정과 관계없이 사용자에게 표시됩니다.
이 기능은 실험적인 기능입니다. 더 많은 정보는 에픽 9429을 참조하세요. 해당 에픽에 의견을 남겨서 사용 사례에 대해 알려주세요.
성취 유형
프로그래밍적으로 성취를 만들거나 수여하거나 회수하거나 삭제하는 방법은 한 가지뿐입니다.
실제로 수여되는 성취를 구분할 수 있습니다:
- 한 번만 부여되고 철회할 수 없는 성취. 예: “첫 번째 기여가 병합됨” 성취.
- 한 번만 부여되고 철회할 수 있는 성취. 예: “코어 팀 멤버” 성취.
- 여러 번 부여될 수 있는 성취. 예: “이달의 기여자” 성취.
사용자의 성취 보기
사용자의 성취는 해당 사용자의 프로필 페이지에서 볼 수 있습니다.
전제 조건:
- 사용자 프로필은 공개되어 있어야 합니다.
사용자의 성취를 보려면:
- 사용자의 프로필 페이지로 이동합니다.
- 사용자의 아바타 아래에서 그의 성취를 볼 수 있습니다.
-
성취 위로 마우스를 올려 상세 정보를 볼 수 있습니다. 다음 정보가 표시됩니다:
- 성취의 이름
- 성취 설명
- 성취가 사용자에게 수여된 날짜
- 사용자가 네임스페이스의 구성원이거나 네임스페이스가 공개되어 있는 경우 성취를 부여한 네임스페이스
사용자의 성취 목록을 검색하려면 user
GraphQL 유형을 쿼리하세요.
query {
user(username: "<username>") {
userAchievements {
nodes {
achievement {
name
description
avatarUrl
namespace {
fullPath
name
}
}
}
}
}
}
성취 생성
특정 기여에 대해 수여할 사용자 지정 성취를 만들 수 있습니다.
전제 조건:
- 해당 네임스페이스에 대한 Maintainer 또는 Owner 역할이 필요합니다.
성취를 만들려면 achievementsCreate
GraphQL 뮤테이션을 호출하세요.
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"}}}}
성취 업데이트
언제든지 성취의 이름, 설명 및 아바타를 변경할 수 있습니다.
전제 조건:
- 해당 네임스페이스에 대한 Maintainer 또는 Owner 역할이 필요합니다.
성취를 업데이트하려면 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
}
}
}
업적 수여
사용자에게 업적을 수여하여 그들의 기여를 인정할 수 있습니다. 사용자가 업적을 받으면 이메일로 알림이 전송됩니다.
전제 조건:
- 해당 네임스페이스의 Maintainer 또는 Owner 역할이 있어야 합니다.
사용자에게 업적을 수여하려면 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
}
}
업적 회수
사용자가 수상 기준을 더 이상 충족하지 않는다고 판단하는 경우 사용자의 업적을 회수할 수 있습니다.
전제 조건:
- 해당 네임스페이스의 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
}
}
업적 숨기기
프로필에 업적을 표시하고 싶지 않은 경우 “안 함”을 선택할 수 있습니다. 아래와 같이 진행하십시오:
- 왼쪽 사이드바에서 아바타를 선택합니다.
- 프로필 편집을 선택합니다.
- 주요 설정 섹션에서 프로필에 업적 표시 확인란을 해제합니다.
- 프로필 설정 업데이트를 선택합니다.
업적 순서 변경
기본적으로 프로필의 업적은 수여 날짜를 기준으로 오름차순으로 표시됩니다.
업적 순서를 변경하려면 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
}
}