# 공개 포크

Panther가 관리하는 Python 디텍션을 귀하의 [CI/CD 워크플로우](https://docs.panther.com/ko/panther/detections-repo/ci-cd) 를 활용하기 위해 사용할 수 있는 한 가지 방법은 [panther-analysis](https://github.com/panther-labs/panther-analysis).

공개 포크를 만드는 것입니다. 조직에서 디텍션 콘텐츠를 공개적으로 공유하거나 콘텐츠를 [panther-labs/panther-analysis](https://github.com/panther-labs/panther-analysis).

로 업스트림에 반영하려는 경우 공개 포크를 권장합니다. 저장소의 비공개 복제본 생성에 대한 정보는 [비공개 복제](https://docs.panther.com/ko/panther/detections-repo/setup/deprecated/private-cloned-repo).

{% hint style="info" %}
를 참조하세요. 새 [태그된 릴리스](https://github.com/panther-labs/panther-analysis/releases). 또한 [메인 브랜치](https://github.com/panther-labs/panther-analysis/tree/main)에서 가져오는 것도 가능합니다. 다른 브랜치는 안정적이라고 간주해서는 안 됩니다.
{% endhint %}

## panther-analysis의 공개 포크 구성

이 프로세스는 귀하의 조직에 있는 `panther-analysis` 저장소의 공개 포크를 생성합니다. 이는 귀하의 작업 복사본으로 사용되며 `panther-analysis`여기에서 조직에서 필요한 모든 변경을 수행할 수 있고, 정의한 구성된 CI 검사를 거치게 됩니다.

참고 자료로는 [여기 GitHub의 저장소 포크에 대한 전체 지침을 참조하세요](https://docs.github.com/en/get-started/quickstart/fork-a-repo).

1. GitHub에 로그인하고 다음으로 이동하세요 [panther-labs/panther-analysis](https://github.com/panther-labs/panther-analysis).\
   ![The image shows the upper right corner of the panther-analysis repo in Github. There is an arrow pointing to the "Fork" button.](https://2400888838-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LgdiSWdyJcXPahGi9Rs-2910905616%2Fuploads%2Fgit-blob-6f64d6a7dd38252b33364b9bb24d0f0a4bf1edb2%2Fgithub-fork.png?alt=media)
2. 저장소 메인 페이지의 오른쪽 상단에서 **Fork**.
3. 에서 **새 포크 생성** 페이지:
   1. 다음의 선택을 해제하세요 **다음을 복사 `develop` 브랜치만** 박스.\
      ![A "Create a new fork" page in GitHub has a few form fields, like "Repository name" and "Copy the develop branch only," which is circled.](https://2400888838-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LgdiSWdyJcXPahGi9Rs-2910905616%2Fuploads%2Fgit-blob-92674a8fdcb630ffe2c0c158ec3bdbc45454d1b8%2Fdevelop%20branch.jpg?alt=media)
   2. 클릭하세요 **포크 생성**.
4. 포크한 저장소의 **설정** 페이지로 이동하세요.
5. 내의 **기본 브랜치**에서 기본 브랜치를 편집하려면 연필 아이콘을 클릭하세요.
   1. 다음의 **기본 브랜치를 다른 브랜치로 전환** 팝업 모달에서, `main`.\
      ![A "Switch default branch to another branch" modal is shown, with a dropdown field with a "main" value. There is also an "Update" button.](https://2400888838-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LgdiSWdyJcXPahGi9Rs-2910905616%2Fuploads%2Fgit-blob-76bd72fd64d7b06b241a3e719b9178c68ce69e84%2Fpartial_blur.jpg?alt=media)
   2. 클릭하세요 **을 선택하고**.
6. 업데이트 `panther-analysis`.

## (선택 사항) 사용자 정의 디텍션을 귀하의 포크 버전과 동일한 디렉터리에 압축 해제하세요.

업스트림 panther-analysis 업데이트와 공개 포크 동기화 유지 [업스트림 변경 사항과 동기화 상태를 유지하려면](https://github.com/panther-labs/panther-analysis/blob/main/.github/workflows/sync-from-upstream.yml) Sync Panther Analysis from Upstream `panther-analysis`.

GitHub Action을 사용하는 것이 권장됩니다. 이 Action은 주기적으로 귀하 저장소의 기본 브랜치에

1. 다음 권한으로 GitHub 토큰을 생성하세요:
   * `Administration - 읽기`
   * `Contents - 읽기 및 쓰기`
   * `Metadata - 읽기`
   * `Pull Requests - 읽기 및 쓰기`
   * `Workflows - 읽기 및 쓰기`
2. 포크한 저장소에서 `PANTHER_SYNC_UPSTREAM` 라는 이름의 새 시크릿을 추가하고, 이전 단계에서 생성한 토큰 값을 설정하세요.

{% hint style="warning" %}
이 단계를 건너뛰면 업스트림 저장소의 `.github/workflows` 디렉터리에 변경이 있을 때마다 Action이 PR을 열지 못하고 실패합니다.
{% endhint %}

3. 처음으로 Action을 트리거하여 포크를 업스트림 저장소와 동기화하려면, GitHub의 귀하 저장소에서 **Actions** > **업스트림 변경 사항과 동기화 상태를 유지하려면**.
4. 클릭하세요 **Run Workflow > Run workflow.**
   * Action이 완료되면 워크플로우 실행 옆에 녹색 원이 표시됩니다. 변경 사항이 있으면 GitHub Actions가 작성한 새 열려 있는 풀 리퀘스트를 볼 수 있습니다. 변경 사항이 없으면 “로컬 저장소는 이미 최신 릴리스와 동기화되어 있습니다.”와 유사한 메시지가 표시됩니다.
   * The **업스트림 변경 사항과 동기화 상태를 유지하려면** Action은 매주 화요일 15:00Z에 cron 스케줄로 실행되도록 구성되어 있습니다. 이 스케줄은 `.github/workflows/sync-from-upstream.yml`.
5. 의 6행에서 수정할 수 있습니다.

풀 리퀘스트를 일반 풀 리퀘스트와 마찬가지로 기본 브랜치에 병합하세요.

귀하의 저장소는 병합을 최신 변경으로 반영하며, 귀하는 개인 저장소와 panther-analysis의 git 히스토리를 모두 볼 수 있습니다. [병합 충돌로 문제가 발생하거나 “모든 작업이 실패했습니다(all jobs have failed)”라는 오류가 표시되면 다음 문제 해결 문서를 참조하세요:](https://help.panther.com/Panther_Developer_Workflows/panther-analysis/How_do_I_resolve_merge_conflicts_and_failed_syncs_when_using_the_GitHub_Action_sync-panther-analysis-from-upstream%3F)

### 병합 문제 해결

또는 수동으로 포크를 업데이트할 수도 있습니다. 수동으로 포크를 원본(이 경우 panther-labs/panther-analysis)에서 업데이트하는 과정에 대해 자세히 알아보려면 [GitHub 문서](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork) 를 참조하세요.

이 문서들에 자세히 설명된 "비교(compare)" 옵션을 항상 사용하는 것이 권장됩니다. 이를 통해 업데이트가 풀 리퀘스트로 표시되고 변경 사항과 주석을 달 수 있습니다.

## 다음 단계

저장소를 포크한 후에는 Panther 디텍션을 CI/CD 워크플로우에 통합할 수 있습니다 — 자세한 내용은 [CircleCI](https://docs.panther.com/ko/panther/detections-repo/ci-cd/deployment-workflows/circle-ci) 및 [GitHub Actions](https://docs.panther.com/ko/panther/detections-repo/ci-cd/deployment-workflows/github-actions).

### GitHub Actions

을 참조하세요. 자체 GitHub Action을 만들어 디텍션 콘텐츠를 귀하의 Panther 인스턴스에 업로드할 수 있으며, 각 병합된 풀 리퀘스트마다 자동으로 실행되도록 구성할 수 있습니다.

참조: [GitHub Actions를 통한 콘텐츠 관리](https://docs.panther.com/ko/panther/detections-repo/ci-cd/deployment-workflows/github-actions) 에서 자세한 정보를 확인하세요.

### 고객 기여 콘텐츠

콘텐츠를 panther-analysis 업스트림으로 되돌려 기여하는 것을 권장합니다. 그렇게 하려면 panther-analysis 저장소에 대한 풀 리퀘스트를 생성하면 Panther의 위협 조사 팀이 검토할 것입니다.
