성취

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated Status: Experiment
  • GitLab 15.10에 도입되었습니다. 기본적으로 비활성화된 achievements라는 플래그와 함께.

플래그: 자체 관리 GitLab에서는 기본적으로 이 기능을 사용할 수 없습니다. 이를 사용하려면 관리자가 achievements라는 피처 플래그를 활성화할 수 있습니다. 이 기능은 프로덕션 환경에 사용하기에 적합하지 않습니다.

성취(Achievements)는 GitLab에서의 활동에 대한 보상 방법입니다. 네임스페이스 관리자 또는 소유자로서 특정 기여를 위해 사용자 지정 성취를 만들어 기준에 따라 사용자에게 수여하거나 회수할 수 있습니다.

사용자로서 여러 프로젝트나 그룹에 대한 기여를 강조하기 위해 프로필에서 여러 성취를 수집할 수 있습니다. 성취는 이름, 설명 및 아바타로 구성됩니다.

사용자 프로필 페이지의 성취

성취는 사용자가 소유하는 것으로 간주됩니다. 생성된 성취의 가시성 설정과 관계없이 사용자에게 표시됩니다.

이 기능은 실험적인 기능입니다. 더 많은 정보는 에픽 9429을 참조하세요. 해당 에픽에 의견을 남겨서 사용 사례에 대해 알려주세요.

성취 유형

프로그래밍적으로 성취를 만들거나 수여하거나 회수하거나 삭제하는 방법은 한 가지뿐입니다.

실제로 수여되는 성취를 구분할 수 있습니다:

  • 한 번만 부여되고 철회할 수 없는 성취. 예: “첫 번째 기여가 병합됨” 성취.
  • 한 번만 부여되고 철회할 수 있는 성취. 예: “코어 팀 멤버” 성취.
  • 여러 번 부여될 수 있는 성취. 예: “이달의 기여자” 성취.

사용자의 성취 보기

사용자의 성취는 해당 사용자의 프로필 페이지에서 볼 수 있습니다.

전제 조건:

  • 사용자 프로필은 공개되어 있어야 합니다.

사용자의 성취를 보려면:

  1. 사용자의 프로필 페이지로 이동합니다.
  2. 사용자의 아바타 아래에서 그의 성취를 볼 수 있습니다.
  3. 성취 위로 마우스를 올려 상세 정보를 볼 수 있습니다. 다음 정보가 표시됩니다:

    • 성취의 이름
    • 성취 설명
    • 성취가 사용자에게 수여된 날짜
    • 사용자가 네임스페이스의 구성원이거나 네임스페이스가 공개되어 있는 경우 성취를 부여한 네임스페이스

사용자의 성취 목록을 검색하려면 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
  }
}

업적 숨기기

프로필에 업적을 표시하고 싶지 않은 경우 “안 함”을 선택할 수 있습니다. 아래와 같이 진행하십시오:

  1. 왼쪽 사이드바에서 아바타를 선택합니다.
  2. 프로필 편집을 선택합니다.
  3. 주요 설정 섹션에서 프로필에 업적 표시 확인란을 해제합니다.
  4. 프로필 설정 업데이트를 선택합니다.

업적 순서 변경

기본적으로 프로필의 업적은 수여 날짜를 기준으로 오름차순으로 표시됩니다.

업적 순서를 변경하려면 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
  }
}