> ## Documentation Index
> Fetch the complete documentation index at: https://docs.logbrew.co/llms.txt
> Use this file to discover all available pages before exploring further.

# GitHub Actions로 배포를 기록하고 소스맵 업로드하기

> LogBrew GitHub Action으로 GitHub Actions 워크플로에서 JavaScript 소스맵과 네이티브 디버그 파일을 업로드하고 배포를 매번 기록하세요.

LogBrew GitHub Action은 배포 작업의 마지막에 실행됩니다. 릴리스의 JavaScript 소스맵과 네이티브 디버그 파일을 업로드한 다음 배포 마커를 기록합니다. LogBrew는 이 파일로 스택 프레임을 소스 코드에 매핑하고, 배포 마커로 릴리스를 직전 릴리스와 비교합니다.

이 액션은 `LogBrewCo/cli` 저장소에 있습니다. npm에서 LogBrew CLI를 설치하므로 러너에 Node.js가 있어야 합니다. GitHub 호스팅 Linux, macOS, Windows 러너에는 Node.js가 이미 있습니다.

## 아티팩트 키 만들기

[LogBrew CLI](https://docs.logbrew.co/ko/guides/cli.md)로 로그인하고 프로젝트 ID를 찾으세요.

```bash theme={null}
logbrew projects --json
```

프로젝트의 아티팩트 키를 만드세요. 소유자만 접근할 수 있는 디렉터리에 새 파일 경로를 사용하세요.

```bash theme={null}
install -d -m 700 "$HOME/.logbrew" &&
logbrew projects keys create "<project_id>" \
  --ingest-key-file "$HOME/.logbrew/github-deploys.artifact" \
  --label "GitHub deploys" \
  --kind artifact \
  --json
```

아티팩트 키는 프로젝트 범위의 쓰기 전용 키입니다. 해당 프로젝트의 소스맵과 디버그 파일을 업로드하고 배포를 기록할 수 있습니다. 데이터를 읽거나 텔레메트리를 보낼 수는 없습니다.

키 파일의 내용을 `LOGBREW_ARTIFACT_KEY`라는 이름의 저장소 시크릿으로 저장하세요. GitHub에서 **Settings**, **Secrets and variables**, **Actions** 순서로 이동하세요. 그런 다음 로컬 파일을 삭제하세요.

## 단계 추가하기

앱을 배포하는 단계 다음에 액션을 추가하세요. 액션은 CLI의 릴리스 태그에 고정하세요. 이 태그는 액션이 설치할 CLI 버전도 정합니다.

```yaml theme={null}
- name: Report the deploy to LogBrew
  if: always()
  uses: LogBrewCo/cli@v0.1.93
  with:
    token: ${{ secrets.LOGBREW_ARTIFACT_KEY }}
    project: <project_id>
    release: web@${{ github.sha }}
    environment: production
    service: checkout-web
    sourcemaps: dist
    status: ${{ job.status == 'success' && 'succeeded' || 'failed' }}
```

앱이 런타임에 보내는 것과 같은 `release`, `environment`, `service` 값을 사용하세요. 릴리스 이름은 [릴리스](https://docs.logbrew.co/ko/concepts/releases.md)를 참고하세요.

`if: always()`를 쓰면 배포가 실패해도 단계가 실행되므로 LogBrew가 실패한 배포를 기록합니다. 이 경우 `status` 표현식은 `failed`를 보냅니다.

## 입력

| 입력 | 기본값 | 용도 |
| - | - | - |
| `token` | 필수 | 아티팩트 키 |
| `project` | 필수 | 프로젝트 ID |
| `release` | 필수 | 릴리스 이름 |
| `environment` | 필수 | 환경(예: `production`) |
| `service` | 필수 | 서비스 이름 |
| `sourcemaps` | 비어 있음 | Vite 플러그인이 만든 매니페스트가 있는 빌드 디렉터리 |
| `sourcemaps-manifest` | 빌드 디렉터리의 `logbrew-release-artifacts.json` | 매니페스트 경로 |
| `debug-files` | 비어 있음 | dSYM, ZIP, Mach-O 또는 Android ELF 경로 |
| `deploy` | `true` | 파일만 업로드하려면 `false`로 설정 |
| `deployment-id` | `github-<run_id>-<run_attempt>` | 배포 ID |
| `status` | `succeeded` | `succeeded` 또는 `failed` |
| `started-at` | 단계가 시작된 시각 | 배포가 시작된 RFC 3339 시각 |
| `commit-sha` | `github.sha` | 배포한 빌드의 커밋 |
| `cli-version` | 태그의 버전 또는 `latest` | 설치할 CLI 버전 |
| `working-directory` | `.` | 실행할 디렉터리 |

액션은 `deployment-id` 출력을 설정합니다.

배포 시간 범위를 더 정확하게 기록하려면 `started-at`을 배포 단계가 시작된 시각으로 설정하세요.

## 소스맵 업로드하기

`sourcemaps` 입력은 Vite 플러그인이 준비한 빌드를 업로드합니다. 먼저 플러그인을 설정하세요. [JavaScript 소스맵](https://docs.logbrew.co/ko/guides/source-maps.md)을 참고하세요. 액션은 `npx --no-install`로 업로드 헬퍼를 실행하므로 프로젝트에 `@logbrew/sdk`가 설치되어 있어야 합니다. 액션보다 먼저 `npm ci`를 실행하세요.

`.map` 파일이나 매니페스트를 공개 웹사이트나 CDN에 배포하지 마세요.

## 디버그 파일 업로드하기

`debug-files` 입력은 같은 프로젝트, 릴리스, 환경, 서비스로 `logbrew debug-artifacts upload`를 실행합니다. dSYM 파일은 [Apple 크래시와 멈춤](https://docs.logbrew.co/ko/guides/apple-crashes-and-hangs.md)을 참고하세요.

## 단계 다시 실행하기

같은 배포 ID를 같은 값으로 다시 보낼 수 있습니다. LogBrew는 배포를 1건만 유지합니다. 같은 ID를 다른 값으로 보내면 실패합니다. 워크플로를 다시 실행하면 GitHub가 `run_attempt`를 늘립니다. 기본 ID가 바뀌므로 액션은 새 배포를 기록합니다.

## 배포 확인하기

워크플로가 끝나면 CLI로 릴리스를 읽으세요.

```bash theme={null}
logbrew explain release "web@<commit_sha>" --project "<project_id>" \
  --environment production --service checkout-web
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.