InfoGrab DocsInfoGrab Docs

업적

요약

업적은 GitLab에서의 활동에 대해 사용자에게 보상하는 방법입니다. 사용자는 여러 프로젝트나 그룹에 대한 자신의 기여를 프로필에서 강조하기 위해 업적을 모을 수 있습니다. 업적은 사용자의 소유로 간주됩니다. 계획된 작업에 대한 자세한 내용은 에픽 9429를 참고합니다.

히스토리

업적은 GitLab에서의 활동에 대해 사용자에게 보상하는 방법입니다. 네임스페이스의 Maintainer 또는 Owner 권한이 있으면 특정 기여에 대한 사용자 지정 업적을 만들 수 있습니다. 정해진 기준에 따라 사용자에게 이 업적을 수여하거나 취소할 수 있습니다.

사용자는 여러 프로젝트나 그룹에 대한 자신의 기여를 프로필에서 강조하기 위해 업적을 모을 수 있습니다. 업적은 이름, 설명, 아바타로 구성됩니다.

사용자 프로필 페이지의 업적

업적은 사용자의 소유로 간주됩니다. 업적을 생성한 네임스페이스의 공개 설정과 관계없이 표시됩니다.

계획된 작업에 대한 자세한 내용은 에픽 9429를 참고합니다. 사용 사례는 해당 에픽에 댓글로 알려 주시면 됩니다.

업적 유형#

프로그래밍 방식으로는 업적을 생성, 수여, 취소, 삭제하는 방법이 하나뿐입니다.

실질적으로는 수여 방식에 따라 업적을 다음과 같이 구분할 수 있습니다.

  • 한 번만 수여하며 취소할 수 없는 업적입니다. 예를 들어 "First contribution merged" 업적이 있습니다.
  • 한 번만 수여하며 취소할 수 있는 업적입니다. 예를 들어 "Core team member" 업적이 있습니다.
  • 여러 번 수여할 수 있는 업적입니다. 예를 들어 "Contributor of the month" 업적이 있습니다.

그룹 업적 보기#

그룹에서 사용할 수 있는 업적과 수여된 업적을 모두 보려면 다음을 수행합니다.

  • https://gitlab.com/groups/<group-path>/-/achievements로 이동합니다.

이 페이지에는 업적 목록과 해당 업적을 받은 구성원이 표시됩니다.

사용자 업적 보기#

사용자의 프로필 페이지에서 해당 사용자의 업적을 볼 수 있습니다.

사전 요구 사항:

  • 사용자 프로필이 공개 상태여야 합니다.

사용자의 업적을 보려면 다음을 수행합니다.

  1. 사용자의 프로필 페이지로 이동합니다.

  2. 사용자 아바타 아래에서 업적을 확인합니다.

  3. 업적의 세부 정보를 보려면 해당 업적 위에 마우스를 올립니다. 다음 정보가 표시됩니다.

    • 업적의 이름
    • 업적의 설명
    • 사용자에게 업적이 수여된 날짜
    • 사용자가 네임스페이스의 구성원이거나 네임스페이스가 공개인 경우, 업적을 수여한 네임스페이스

사용자의 업적 목록을 가져오려면 user GraphQL 유형을 쿼리합니다.

User.userAchievements 필드는 선택적 includeHidden 파라미터를 받습니다. 값이 true 이면 프로필에서 숨겨진 업적까지 응답에 포함됩니다. 숨겨진 업적은 다음 경우에만 포함됩니다.

  • 요청한 사용자와 대상 사용자가 같은 경우
  • 요청한 사용자가 해당 업적이 속한 그룹에서 Maintainer 또는 Owner 권한을 가진 경우
query {
  user(username: "<username>") {
    userAchievements(includeHidden: true) {
      nodes {
        achievement {
          name
          description
          avatarUrl
          namespace {
            fullPath
            name
          }
        }
      }
    }
  }
}

업적 생성#

특정 기여에 수여할 사용자 지정 업적을 만들 수 있습니다.

사전 요구 사항:

  • 네임스페이스에 대한 Maintainer 또는 Owner 권한이 있어야 합니다.

업적을 만들려면 다음을 수행합니다.

  • UI에서 수행하는 경우:

    1. 업적 페이지에서 New achievement를 선택합니다.
    2. 업적의 이름을 입력합니다.
    3. 선택 사항. 업적의 설명을 입력하고 아바타를 업로드합니다.
    4. Save changes를 선택합니다.
  • GraphQL API에서는 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
    }
  }
}

업적 수여#

히스토리

사용자에게 업적을 수여하여 기여를 인정할 수 있습니다. 업적을 수여하면 해당 사용자는 업적을 수락할 수 있는 링크가 담긴 이메일 알림을 받습니다. 업적은 사용자가 수락하기 전까지 프로필에 표시되지 않습니다.

수락 링크는 30일 동안 유효합니다. 그 기간이 지난 뒤에는 userAchievementsUpdate GraphQL 뮤테이션을 호출하여 업적을 수락합니다.

관리자는 새로 수여된 업적을 모든 수신자에 대해 자동으로 수락하도록 설정할 수 있습니다.

사전 요구 사항:

  • 네임스페이스에 대한 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. Edit profile을 선택합니다.
  3. Main settings 섹션에서 Display achievements on your profile 체크박스를 선택 해제합니다.
  4. Update profile settings를 선택합니다.

특정 업적의 표시 여부 변경#

히스토리

프로필에 모든 업적을 표시하고 싶지 않다면 특정 업적의 표시 여부를 변경할 수 있습니다.

업적 중 하나를 숨기려면 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
  }
}

업적

GitLab v19.5
Tier: Free, Premium, Ultimate
Offering: GitLab.com, GitLab Self-Managed
원문 보기

요약

업적은 GitLab에서의 활동에 대해 사용자에게 보상하는 방법입니다. 사용자는 여러 프로젝트나 그룹에 대한 자신의 기여를 프로필에서 강조하기 위해 업적을 모을 수 있습니다. 업적은 사용자의 소유로 간주됩니다. 계획된 작업에 대한 자세한 내용은 에픽 9429를 참고합니다.

히스토리

업적은 GitLab에서의 활동에 대해 사용자에게 보상하는 방법입니다. 네임스페이스의 Maintainer 또는 Owner 권한이 있으면 특정 기여에 대한 사용자 지정 업적을 만들 수 있습니다. 정해진 기준에 따라 사용자에게 이 업적을 수여하거나 취소할 수 있습니다.

사용자는 여러 프로젝트나 그룹에 대한 자신의 기여를 프로필에서 강조하기 위해 업적을 모을 수 있습니다. 업적은 이름, 설명, 아바타로 구성됩니다.

사용자 프로필 페이지의 업적

업적은 사용자의 소유로 간주됩니다. 업적을 생성한 네임스페이스의 공개 설정과 관계없이 표시됩니다.

계획된 작업에 대한 자세한 내용은 에픽 9429를 참고합니다. 사용 사례는 해당 에픽에 댓글로 알려 주시면 됩니다.

업적 유형#

프로그래밍 방식으로는 업적을 생성, 수여, 취소, 삭제하는 방법이 하나뿐입니다.

실질적으로는 수여 방식에 따라 업적을 다음과 같이 구분할 수 있습니다.

  • 한 번만 수여하며 취소할 수 없는 업적입니다. 예를 들어 "First contribution merged" 업적이 있습니다.
  • 한 번만 수여하며 취소할 수 있는 업적입니다. 예를 들어 "Core team member" 업적이 있습니다.
  • 여러 번 수여할 수 있는 업적입니다. 예를 들어 "Contributor of the month" 업적이 있습니다.

그룹 업적 보기#

그룹에서 사용할 수 있는 업적과 수여된 업적을 모두 보려면 다음을 수행합니다.

  • https://gitlab.com/groups/<group-path>/-/achievements로 이동합니다.

이 페이지에는 업적 목록과 해당 업적을 받은 구성원이 표시됩니다.

사용자 업적 보기#

사용자의 프로필 페이지에서 해당 사용자의 업적을 볼 수 있습니다.

사전 요구 사항:

  • 사용자 프로필이 공개 상태여야 합니다.

사용자의 업적을 보려면 다음을 수행합니다.

  1. 사용자의 프로필 페이지로 이동합니다.

  2. 사용자 아바타 아래에서 업적을 확인합니다.

  3. 업적의 세부 정보를 보려면 해당 업적 위에 마우스를 올립니다. 다음 정보가 표시됩니다.

    • 업적의 이름
    • 업적의 설명
    • 사용자에게 업적이 수여된 날짜
    • 사용자가 네임스페이스의 구성원이거나 네임스페이스가 공개인 경우, 업적을 수여한 네임스페이스

사용자의 업적 목록을 가져오려면 user GraphQL 유형을 쿼리합니다.

User.userAchievements 필드는 선택적 includeHidden 파라미터를 받습니다. 값이 true 이면 프로필에서 숨겨진 업적까지 응답에 포함됩니다. 숨겨진 업적은 다음 경우에만 포함됩니다.

  • 요청한 사용자와 대상 사용자가 같은 경우
  • 요청한 사용자가 해당 업적이 속한 그룹에서 Maintainer 또는 Owner 권한을 가진 경우
query {
  user(username: "<username>") {
    userAchievements(includeHidden: true) {
      nodes {
        achievement {
          name
          description
          avatarUrl
          namespace {
            fullPath
            name
          }
        }
      }
    }
  }
}

업적 생성#

특정 기여에 수여할 사용자 지정 업적을 만들 수 있습니다.

사전 요구 사항:

  • 네임스페이스에 대한 Maintainer 또는 Owner 권한이 있어야 합니다.

업적을 만들려면 다음을 수행합니다.

  • UI에서 수행하는 경우:

    1. 업적 페이지에서 New achievement를 선택합니다.
    2. 업적의 이름을 입력합니다.
    3. 선택 사항. 업적의 설명을 입력하고 아바타를 업로드합니다.
    4. Save changes를 선택합니다.
  • GraphQL API에서는 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
    }
  }
}

업적 수여#

히스토리

사용자에게 업적을 수여하여 기여를 인정할 수 있습니다. 업적을 수여하면 해당 사용자는 업적을 수락할 수 있는 링크가 담긴 이메일 알림을 받습니다. 업적은 사용자가 수락하기 전까지 프로필에 표시되지 않습니다.

수락 링크는 30일 동안 유효합니다. 그 기간이 지난 뒤에는 userAchievementsUpdate GraphQL 뮤테이션을 호출하여 업적을 수락합니다.

관리자는 새로 수여된 업적을 모든 수신자에 대해 자동으로 수락하도록 설정할 수 있습니다.

사전 요구 사항:

  • 네임스페이스에 대한 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. Edit profile을 선택합니다.
  3. Main settings 섹션에서 Display achievements on your profile 체크박스를 선택 해제합니다.
  4. Update profile settings를 선택합니다.

특정 업적의 표시 여부 변경#

히스토리

프로필에 모든 업적을 표시하고 싶지 않다면 특정 업적의 표시 여부를 변경할 수 있습니다.

업적 중 하나를 숨기려면 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
  }
}