Skip to main content

업그레이드 자동화

REST API 또는 확장을 사용하여 업그레이드 작업을 자동화할 GitHub CLI 수 있습니다.

Manage GitHub Enterprise Server API 또는 GitHub Enterprise Server용 gh es 확장 프로그램을 사용하여 GitHub CLI 인스턴스를 업그레이드할 수 있습니다. 이러한 도구는 업그레이드 패키지를 다운로드하고, 업그레이드 전 검사를 실행하고, 새 버전을 적용하는 프로세스를 자동화합니다.

사전 요구 사항

REST API를 사용하여 업그레이드 자동화

  1. 업그레이드 패키지를 다운로드합니다.

    curl -L \
      -X POST \
      -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \
      -H "Content-Type: application/json" \
      https://HOSTNAME:8443/manage/v1/upgrade/download \
      -d '{"version":"VERSION"}'
    
  2. 계속하기 전에 다운로드가 완료되었는지 확인합니다.

    curl -L \
      -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \
      -H "Content-Type: application/json" \
      https://HOSTNAME:8443/manage/v1/upgrade/download/status
    

statusCOMPLETED이 표시될 때까지 기다립니다.

  1. 업그레이드의 업그레이드 전 단계를 적용합니다.

    curl -L \
      -X POST \
      -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \
      -H "Content-Type: application/json" \
      https://HOSTNAME:8443/manage/v1/upgrade/apply \
      -d '{"version":"VERSION", "phase":"pre-upgrade"}'
    
  2. 완료될 때까지 업그레이드 전 단계를 모니터링합니다.

    curl -L \
      -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \
      -H "Content-Type: application/json" \
      "https://HOSTNAME:8443/manage/v1/upgrade/status?is_verbose=true"
    

statuscompleted이(가) 표시되고 is_runningfalse이(가) 표시될 때까지 기다립니다.

  1. 유지 관리 모드를 사용하도록 설정합니다.

    curl -L \
      -X POST \
      -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \
      -H "Content-Type: application/json" \
      https://HOSTNAME:8443/manage/v1/maintenance \
      -d '{"enabled":true}'
    
  2. 업그레이드의 업그레이드 단계를 적용합니다.

    curl -L \
      -X POST \
      -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \
      -H "Content-Type: application/json" \
      https://HOSTNAME:8443/manage/v1/upgrade/apply \
      -d '{"version":"VERSION", "phase":"upgrade"}'
    
  3. 릴리스 버전이 업데이트되었는지 확인합니다.

    curl -L \
      -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \
      -H "Content-Type: application/json" \
      https://HOSTNAME:8443/manage/v1/version
    
  4. 유지 관리 모드 사용 중지.

    curl -L \
      -X POST \
      -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \
      -H "Content-Type: application/json" \
      https://HOSTNAME:8443/manage/v1/maintenance \
      -d '{"enabled":false}'
    

GitHub CLI 확장을 사용하여 업그레이드 자동화

  1. 업그레이드 패키지를 다운로드합니다. 특정 버전을 다운로드하려면 플래그를 --version 지정합니다. 그렇지 않으면 사용 가능한 최신 버전이 다운로드됩니다.

    # Download a specific version
    gh es upgrade download --version VERSION
    
    # Or download the latest available version
    gh es upgrade download
    
  2. 계속하기 전에 다운로드가 완료되었는지 확인합니다.

    gh es upgrade download status
    

statusCOMPLETED이 표시될 때까지 기다립니다.

  1. 업그레이드의 업그레이드 전 단계를 적용합니다.

    gh es upgrade apply --version VERSION --phase pre-upgrade
    
  2. 완료될 때까지 업그레이드 전 단계를 모니터링합니다.

    gh es upgrade status --verbose
    

statuscompleted이 표시되고 is_runningfalse이 표시될 때까지 기다립니다.

  1. 유지 관리 모드를 사용하도록 설정합니다.

    gh es maintenance set --enabled true
    
  2. 업그레이드의 업그레이드 단계를 적용합니다.

    gh es upgrade apply --version VERSION --phase upgrade
    
  3. 릴리스 버전이 업데이트되었는지 확인합니다.

    gh es release version
    
  4. 유지 관리 모드 사용 중지.

    gh es maintenance set --enabled false
    

고가용성 배포 환경 업그레이드하기

HA(고가용성) 복제본이 있는 인스턴스의 경우 다운로드 및 업그레이드 전 단계는 중단이 없으며 모든 노드에서 한 번에 실행할 수 있습니다. UUID 대상 지정은 다시 부팅을 트리거하는 업그레이드 단계 자체에만 필요합니다. 이렇게 하면 노드가 재부팅되는 순서를 제어할 수 있습니다. 즉, 복제본을 먼저 업그레이드한 다음 기본 노드를 업그레이드합니다.

노드 UUID를 가져오려면 gh es config get-metadata를 실행하거나 GET /manage/v1/config/nodes를 조회하십시오.

GitHub CLI를 사용한 고가용성 배포 업그레이드

  1. 패키지를 모든 노드에 다운로드합니다.

    gh es upgrade download --version VERSION
    
  2. 모든 노드에서 다운로드가 완료되기를 기다립니다.

    gh es upgrade download status
    
  3. 모든 노드에서 업그레이드 전 단계를 한 번에 실행합니다. 이 단계는 중단이 없습니다.

    gh es upgrade apply --version VERSION --phase pre-upgrade
    
  4. 업그레이드 전 단계가 완료되기를 기다립니다.

    gh es upgrade status --verbose
    
  5. 유지 관리 모드를 사용하도록 설정합니다.

    gh es maintenance set --enabled true
    
  6. 복제본에서 복제를 중지합니다.

    ghe-repl-stop
    
  7. 먼저 주 복제본을 업그레이드하여 다시 부팅을 트리거한 다음 진행률을 모니터링합니다.

    gh es upgrade apply --version VERSION --phase upgrade --uuid PRIMARY-UUID
    gh es upgrade status --uuid PRIMARY-UUID --verbose
    
  8. 주 서버가 완료되면 복제본을 업그레이드한 다음 진행 상황을 모니터링합니다.

    gh es upgrade apply --version VERSION --phase upgrade --uuid REPLICA-UUID
    gh es upgrade status --uuid REPLICA-UUID --verbose
    
  9. 복제본에서 복제를 다시 시작합니다.

    ghe-repl-start
    
  10. 복제 상태 및 버전을 확인한 다음 유지 관리 모드를 사용하지 않도록 설정합니다.

    gh es replication status
    gh es release version
    gh es maintenance set --enabled false
    

REST API를 사용하여 고가용성 배포 업그레이드

  1. 패키지를 모든 노드에 다운로드합니다.

    curl -L -X POST \
      -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \
      -H "Content-Type: application/json" \
      https://HOSTNAME:8443/manage/v1/upgrade/download \
      -d '{"version":"VERSION"}'
    
  2. 모든 노드에서 다운로드가 완료되기를 기다립니다.

    curl -L \
      -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \
      -H "Content-Type: application/json" \
      https://HOSTNAME:8443/manage/v1/upgrade/download/status
    
  3. 모든 노드에서 업그레이드 전 단계를 한 번에 실행합니다. 이 단계는 중단이 없습니다.

    curl -L -X POST \
      -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \
      -H "Content-Type: application/json" \
      https://HOSTNAME:8443/manage/v1/upgrade/apply \
      -d '{"version":"VERSION","phase":"pre-upgrade"}'
    
  4. 업그레이드 전 단계가 완료되기를 기다립니다.

    curl -L \
      -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \
      -H "Content-Type: application/json" \
      "https://HOSTNAME:8443/manage/v1/upgrade/status?is_verbose=true"
    
  5. 유지 관리 모드를 사용하도록 설정합니다.

    curl -L -X POST \
      -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \
      -H "Content-Type: application/json" \
      https://HOSTNAME:8443/manage/v1/maintenance \
      -d '{"enabled":true}'
    
  6. 복제본에서 복제를 중지합니다.

    ghe-repl-stop
    
  7. 먼저 주 복제본을 업그레이드하여 다시 부팅을 트리거한 다음 진행률을 모니터링합니다.

    curl -L -X POST \
      -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \
      -H "Content-Type: application/json" \
      https://HOSTNAME:8443/manage/v1/upgrade/apply \
      -d '{"version":"VERSION","phase":"upgrade","uuid":"PRIMARY-UUID"}'
    
    curl -L \
      -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \
      -H "Content-Type: application/json" \
      "https://HOSTNAME:8443/manage/v1/upgrade/status?uuid=PRIMARY-UUID&is_verbose=true"
    
  8. 주 서버가 완료되면 복제본을 업그레이드한 다음 진행 상황을 모니터링합니다.

    curl -L -X POST \
      -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \
      -H "Content-Type: application/json" \
      https://HOSTNAME:8443/manage/v1/upgrade/apply \
      -d '{"version":"VERSION","phase":"upgrade","uuid":"REPLICA-UUID"}'
    
    curl -L \
      -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \
      -H "Content-Type: application/json" \
      "https://HOSTNAME:8443/manage/v1/upgrade/status?uuid=REPLICA-UUID&is_verbose=true"
    
  9. 복제본에서 복제를 다시 시작합니다.

    ghe-repl-start
    
  10. 복제 상태 및 버전을 확인한 다음 유지 관리 모드를 사용하지 않도록 설정합니다.

    curl -L \
      -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \
      -H "Content-Type: application/json" \
      https://HOSTNAME:8443/manage/v1/replication/status
    
    curl -L \
      -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \
      -H "Content-Type: application/json" \
      https://HOSTNAME:8443/manage/v1/version
    
    curl -L -X POST \
      -u "api_key:ROOT-SITE-ADMINISTRATOR-PASSWORD" \
      -H "Content-Type: application/json" \
      https://HOSTNAME:8443/manage/v1/maintenance \
      -d '{"enabled":false}'