Skip to content

Conversation

@sxunea
Copy link
Collaborator

@sxunea sxunea commented Jul 20, 2025

작업 내용

  • github actions를 이용한 ci/cd 구축

이건 꼭 봐주세요

  • coderabbit 환경 설정 테스트 중
    • 언어 변경이 안되고 있네요 ... ㅎㅎ 이건 좀 더 알아보고있을게요 ! -> 한글 설정 완료했습니다.
  • 기존 계획대로 CD 파일을 다음과 같이 작성했었습니다
    • firebase_distribution.yml
    • internal_test.yml
    • production.yml
  • 위의 cd 파일을 위해서는 firebase 프로젝트 등록이 필요한데, 패키지명은 변경할 수 없어 서비스명이 확정되면 패키지 수정 후, 필요한 등록 + 키 발급을 진행 후 on (트리거 관련 코드) 를 주석 해제하도록 하겠습니다. 또, 그때 kmp/cmp 관련해서 수정도해볼게요

Summary by CodeRabbit

  • Chores
    • 코드 소유자 지정 파일이 추가되어 모든 파일에 대해 자동으로 리뷰어가 할당됩니다.
    • GitHub Actions 워크플로우가 추가되어 PR CI 빌드, Firebase App Distribution 배포, Google Play 내부 테스트 및 프로덕션 배포가 자동화됩니다.
    • 빌드 및 배포 성공/실패 시 Slack 알림이 전송됩니다.

sxunea added 5 commits July 20, 2025 13:53
- jdk 17
- apk 빌드
- 슬랙 알림
- PR 리뷰 자동 지정
- develop으로의 푸쉬 시 트리거
- firebase 환경 설정
- firebase app distribution 업로드
- main으로의 푸쉬 시 트리거
- google 환경 설정
- aab 구글 내부 테스트 배포
- 버전 태그 생성 시 트리거
- google 환경 설정
- aab 프로덕션 배포
@sxunea sxunea self-assigned this Jul 20, 2025
@coderabbitai
Copy link

coderabbitai bot commented Jul 20, 2025

Walkthrough

Several new GitHub Actions workflows have been added to automate continuous integration and deployment for an Android app, covering debug builds, Firebase distribution, Google Play internal testing, and production releases. Additionally, a CODEOWNERS file was introduced to assign review responsibilities for all repository files.

Changes

File(s) Change Summary
.github/CODEOWNERS Added file assigning @sxunea, @haeti-dev, and @jife-archive as code owners for all files.
.github/workflows/ace_build.yml New CI workflow: builds debug APK on PR events, caches dependencies, and sends Slack notifications on build success/failure.
.github/workflows/ace_firebase_distribution.yml New CD workflow: builds release APK, uploads to Firebase App Distribution, and notifies Slack on deployment status.
.github/workflows/ace_internal_test.yml New CD workflow: builds signed release AAB, uploads to Google Play internal test track, and sends Slack notifications.
.github/workflows/ace_production.yml New CD workflow: builds signed release AAB, uploads to Google Play production track, and sends Slack notifications with release info.

Sequence Diagram(s)

sequenceDiagram
    participant Developer
    participant GitHub
    participant GitHub Actions
    participant Firebase
    participant Google Play
    participant Slack

    Developer->>GitHub: Push code / Open PR
    GitHub->>GitHub Actions: Trigger workflow (CI/CD)
    GitHub Actions->>GitHub Actions: Checkout, setup JDK, cache dependencies
    alt CI (PR Build)
        GitHub Actions->>GitHub Actions: Build debug APK
        GitHub Actions->>Slack: Notify build status
    else Firebase Distribution
        GitHub Actions->>GitHub Actions: Build release APK
        GitHub Actions->>Firebase: Upload APK
        GitHub Actions->>Slack: Notify deployment status
    else Google Play Internal Test
        GitHub Actions->>GitHub Actions: Build signed AAB
        GitHub Actions->>Google Play: Upload to internal test
        GitHub Actions->>Slack: Notify deployment status
    else Google Play Production
        GitHub Actions->>GitHub Actions: Build signed AAB
        GitHub Actions->>Google Play: Upload to production
        GitHub Actions->>Slack: Notify release status
    end
Loading

Poem

토끼 굴 속에 CI/CD 춤을 춰,
CODEOWNERS가 모두 지켜보네.
Firebase와 Play로 배포해,
슬랙 알림에 기쁨이 넘쳐나!
빌드와 릴리즈를 뛰어넘어,
자동화 마법으로 코드가 날아가네.
🐇✨


🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@sxunea sxunea changed the title [setting] ci 구축 [setting] ci/cd 구축, 코드 리뷰어 자동지정 Jul 20, 2025
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Nitpick comments (3)
.github/workflows/ace_build.yml (1)

66-66: Missing trailing newline (YAML-lint).

Add a final \n to avoid tooling noise.

.github/workflows/ace_production.yml (1)

96-96: Add newline at EOF.

Minor, but keeps YAML-lint quiet.

.github/workflows/ace_internal_test.yml (1)

96-96: Trailing newline absent.

Low-impact, but fix for clean lint.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c6df119 and 0fd8be4.

📒 Files selected for processing (5)
  • .github/CODEOWNERS (1 hunks)
  • .github/workflows/ace_build.yml (1 hunks)
  • .github/workflows/ace_firebase_distribution.yml (1 hunks)
  • .github/workflows/ace_internal_test.yml (1 hunks)
  • .github/workflows/ace_production.yml (1 hunks)
🧰 Additional context used
🪛 actionlint (1.7.7)
.github/workflows/ace_build.yml

36-36: step must run script with "run" section or run action with "uses" section

(syntax-check)

.github/workflows/ace_firebase_distribution.yml

2-2: "on" section is missing in workflow

(syntax-check)

.github/workflows/ace_internal_test.yml

2-2: "on" section is missing in workflow

(syntax-check)

.github/workflows/ace_production.yml

2-2: "on" section is missing in workflow

(syntax-check)

🪛 YAMLlint (1.37.1)
.github/workflows/ace_build.yml

[error] 66-66: no new line character at the end of file

(new-line-at-end-of-file)

.github/workflows/ace_internal_test.yml

[error] 96-96: no new line character at the end of file

(new-line-at-end-of-file)

.github/workflows/ace_production.yml

[error] 96-96: no new line character at the end of file

(new-line-at-end-of-file)

🔇 Additional comments (4)
.github/CODEOWNERS (1)

1-1: No issues – CODEOWNERS looks good.

Wildcard pattern and owners list are valid.

.github/workflows/ace_firebase_distribution.yml (1)

4-9: Workflow is disabled – on: block is commented out.

Without an on: key GitHub will ignore this file.
If you intend manual runs only, add:

on:
  workflow_dispatch:

Otherwise restore the intended trigger (e.g. push: to develop).

.github/workflows/ace_production.yml (1)

4-9: No trigger defined – workflow never starts.

Uncomment or add an on: section (e.g. tag push or workflow_dispatch).

.github/workflows/ace_internal_test.yml (1)

4-8: Missing on: – internal-test workflow won’t run.

Add a trigger (workflow_dispatch or desired branch).

Comment on lines +76 to +77
packageName: your.package.name # 서비스명 확정 후 앱의 실제 패키지 이름으로 변경해야 합니다.
releaseFile: app/build/outputs/bundle/release/app-release.aab
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

packageName placeholder will break release upload.

Replace your.package.name with the actual application ID before merging; the upload action fails otherwise.

🤖 Prompt for AI Agents
In .github/workflows/ace_production.yml at lines 76 to 77, the packageName is
set to the placeholder 'your.package.name', which will cause the release upload
to fail. Replace this placeholder with the actual application ID (the real
package name of the app) before merging to ensure the upload action works
correctly.

Comment on lines +76 to +77
serviceAccountJson: ${{ secrets.GOOGLE_PLAY_SERVICE_ACCOUNT_KEY }} # Google Play 서비스 계정 JSON (Base64 인코딩된 내용)
packageName: your.package.name # 서비스명 확정 후 앱의 실제 패키지 이름으로 변경해야 합니다.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

packageName placeholder still present.

Must be the real package name or the upload will fail.

🤖 Prompt for AI Agents
In .github/workflows/ace_internal_test.yml at lines 76 to 77, the packageName
field is still set to the placeholder "your.package.name". Replace this
placeholder with the actual app package name to ensure the upload process
succeeds without errors.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (3)
.github/workflows/ace_build.yml (3)

26-35: Leverage setup-java’s built-in Gradle cache instead of a separate cache step

actions/setup-java@v4 supports cache: 'gradle', which both simplifies the workflow and avoids the need to maintain a custom cache key. You can drop 10 lines and rely on the officially maintained strategy.

-      - name: Gradle 캐시 설정
-        uses: actions/cache@v4
-        with:
-          path: |
-            ~/.gradle/caches
-            ~/.gradle/wrapper
-          key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
-          restore-keys: |
-            ${{ runner.os }}-gradle-
+      - name: JDK 17 설정
+        uses: actions/setup-java@v4
+        with:
+          distribution: 'temurin'
+          java-version: '17'
+          cache: 'gradle'        # 🆕 built-in Gradle cache

(Remove the old cache step entirely.)


41-42: Add diagnostic flags to the Gradle build command

Passing --stacktrace --no-daemon gives clearer failure logs and avoids daemon-related flakiness in CI.

-        run: ./gradlew assembleDebug
+        run: ./gradlew assembleDebug --stacktrace --no-daemon

66-66: Add a trailing newline to satisfy linters

YAML-lint warns about the missing final newline.

-          SLACK_COLOR: 'danger'
+          SLACK_COLOR: 'danger'
+
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0fd8be4 and 7b5e6f3.

📒 Files selected for processing (1)
  • .github/workflows/ace_build.yml (1 hunks)
🧰 Additional context used
🪛 YAMLlint (1.37.1)
.github/workflows/ace_build.yml

[error] 66-66: no new line character at the end of file

(new-line-at-end-of-file)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: build

Comment on lines 50 to 65
- name: Slack 알림 (빌드 성공)
# 빌드 성공 시 Slack으로 알림을 보냅니다.
if: success()
uses: rtCamp/action-slack-notify@v2
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
SLACK_CHANNEL: '#client-actions' # 알림을 받을 Slack 채널
SLACK_MESSAGE: "✅ CI 빌드 성공! PR: #${{ github.event.pull_request.number }} - `${{ github.event.pull_request.title }}`"

- name: Slack 알림 (빌드 실패)
if: failure()
uses: rtCamp/action-slack-notify@v2
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
SLACK_CHANNEL: '#client-actions'
SLACK_MESSAGE: "❌ CI 빌드 실패! PR: #${{ github.event.pull_request.number }} - `${{ github.event.pull_request.title }}`"
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Slack steps will fail for forked PRs because secrets are not exposed

When a PR originates from a fork, secrets.SLACK_WEBHOOK_URL is empty, causing rtCamp/action-slack-notify to error and the whole job to fail. Gate the steps so they only run when the secret is available (i.e., internal PRs).

-        if: success()
+        if: success() && github.repository == github.event.pull_request.head.repo.full_name
...
-        if: failure()
+        if: failure() && github.repository == github.event.pull_request.head.repo.full_name
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- name: Slack 알림 (빌드 성공)
# 빌드 성공 시 Slack으로 알림을 보냅니다.
if: success()
uses: rtCamp/action-slack-notify@v2
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
SLACK_CHANNEL: '#client-actions' # 알림을 받을 Slack 채널
SLACK_MESSAGE: "✅ CI 빌드 성공! PR: #${{ github.event.pull_request.number }} - `${{ github.event.pull_request.title }}`"
- name: Slack 알림 (빌드 실패)
if: failure()
uses: rtCamp/action-slack-notify@v2
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
SLACK_CHANNEL: '#client-actions'
SLACK_MESSAGE: "❌ CI 빌드 실패! PR: #${{ github.event.pull_request.number }} - `${{ github.event.pull_request.title }}`"
- name: Slack 알림 (빌드 성공)
# 빌드 성공 시 Slack으로 알림을 보냅니다.
if: success() && github.repository == github.event.pull_request.head.repo.full_name
uses: rtCamp/action-slack-notify@v2
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
SLACK_CHANNEL: '#client-actions' # 알림을 받을 Slack 채널
SLACK_MESSAGE: "✅ CI 빌드 성공! PR: #${{ github.event.pull_request.number }} - `${{ github.event.pull_request.title }}`"
- name: Slack 알림 (빌드 실패)
if: failure() && github.repository == github.event.pull_request.head.repo.full_name
uses: rtCamp/action-slack-notify@v2
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
SLACK_CHANNEL: '#client-actions'
SLACK_MESSAGE: "❌ CI 빌드 실패! PR: #${{ github.event.pull_request.number }} - `${{ github.event.pull_request.title }}`"
🤖 Prompt for AI Agents
In .github/workflows/ace_build.yml around lines 50 to 65, the Slack notification
steps fail for forked PRs because the SLACK_WEBHOOK_URL secret is not available.
To fix this, add a condition to each Slack notification step to check that the
secret exists by including 'env.SLACK_WEBHOOK_URL != null' in the 'if'
expression, so these steps only run when the secret is present, preventing
errors on forked PRs.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (1)
.github/workflows/ace_build.yml (1)

50-65: Slack notification steps still fail for forked PRs – previous advice unaddressed
secrets.SLACK_WEBHOOK_URL is empty for forks, so rtCamp/action-slack-notify errors and kills the job. Gate the steps with a repository check (or verify the secret is set) exactly as pointed out in the earlier review.

🧹 Nitpick comments (2)
.github/workflows/ace_build.yml (2)

10-15: Add a concurrency block to avoid duplicated CI runs on PR updates
With the current trigger, every push to the same PR queues a new workflow run even if an earlier one is still executing. A simple concurrency group keeps the queue clean and saves minutes:

 jobs:
   build:
+    concurrency:
+      group: pr-${{ github.event.pull_request.number }}
+      cancel-in-progress: true

66-66: Missing trailing newline
YAML-lint flags the missing blank line at EOF. Add one to keep linters quiet.

-          SLACK_COLOR: 'danger'
+          SLACK_COLOR: 'danger'
+
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7b5e6f3 and 7ea83ae.

📒 Files selected for processing (1)
  • .github/workflows/ace_build.yml (1 hunks)
🧰 Additional context used
🪛 YAMLlint (1.37.1)
.github/workflows/ace_build.yml

[error] 66-66: no new line character at the end of file

(new-line-at-end-of-file)

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (1)
.github/workflows/ace_build.yml (1)

50-65: Gate Slack notification steps so they don’t hard-fail on forks.

secrets.SLACK_WEBHOOK_URL is empty for forked PRs, causing rtCamp/action-slack-notify to error and abort the job. Add a condition that checks the secret before invoking the action.

-      - name: Slack 알림 (빌드 성공)
-        # 빌드 성공 시 Slack으로 알림을 보냅니다.
-        if: success()
+      - name: Slack 알림 (빌드 성공)
+        # 빌드 성공 시 Slack으로 알림을 보냅니다.
+        if: success() && secrets.SLACK_WEBHOOK_URL != ''
@@
-      - name: Slack 알림 (빌드 실패)
-        if: failure()
+      - name: Slack 알림 (빌드 실패)
+        if: failure() && secrets.SLACK_WEBHOOK_URL != ''

Without this guard the CI job will reliably fail for community contributors.

🧹 Nitpick comments (1)
.github/workflows/ace_build.yml (1)

66-66: Add trailing newline at EOF.

Several linters (YAMLlint, git diff-drivers) complain about missing newline; adding one prevents noisy warnings in CI.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7ea83ae and 9a73034.

📒 Files selected for processing (1)
  • .github/workflows/ace_build.yml (1 hunks)
🧰 Additional context used
🪛 YAMLlint (1.37.1)
.github/workflows/ace_build.yml

[error] 66-66: no new line character at the end of file

(new-line-at-end-of-file)

🔇 Additional comments (1)
.github/workflows/ace_build.yml (1)

36-40: 👍 Previous syntax issue resolved.

The local.properties 설정 step is now completely commented out, so the workflow parses cleanly.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (1)
.github/workflows/ace_build.yml (1)

50-70: Gate Slack steps to avoid failures on forked PRs

Secrets are not exposed to workflows triggered from forks, so SLACK_WEBHOOK_URL will be empty and the Slack action will error out, breaking the job.
Add a guard that the secret exists (or that the PR comes from the same repo).

-        if: success()
+        if: success() && env.SLACK_WEBHOOK_URL != ''
...
-        if: failure()
+        if: failure() && env.SLACK_WEBHOOK_URL != ''
🧹 Nitpick comments (1)
.github/workflows/ace_build.yml (1)

70-70: Missing trailing newline

YAML-lint flags the absence of a newline at EOF. Add one to silence the linter.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 178aff6 and 930117d.

📒 Files selected for processing (1)
  • .github/workflows/ace_build.yml (1 hunks)
🧰 Additional context used
🪛 YAMLlint (1.37.1)
.github/workflows/ace_build.yml

[error] 70-70: no new line character at the end of file

(new-line-at-end-of-file)

🔇 Additional comments (1)
.github/workflows/ace_build.yml (1)

36-39: Step correctly commented out – issue resolved.

The previously-invalid local.properties 설정 step is now fully commented, so the workflow parses without errors.
Nothing further to do here. 👍

@sxunea sxunea requested review from haeti-dev and jife-archive July 20, 2025 06:16
Copy link
Collaborator

@haeti-dev haeti-dev left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

깔끔해서 너무 좋네요. 특히 스텝 name이 한글로 되어 있어서 읽기 편합니다 ㅎㅎ
패키지명이 빨리 정해져야 좋을 것 같네요..!

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

♻️ Duplicate comments (3)
.github/workflows/ace_build.yml (1)

50-70: 슬랙 알림 단계에 포크 PR 대비 조건 추가 필요

secrets.SLACK_WEBHOOK_URL 값이 없는 포크(PR)에서 해당 단계가 실행되면 액션이 실패합니다. 기존 리뷰에서도 동일 지적이 있었으므로, 시크릿 존재 여부를 조건식에 포함해 주세요.

.github/workflows/ace_internal_test.yml (1)

76-78: packageName 자리표시자가 그대로 남아있음

실제 패키지명으로 교체하지 않으면 업로드가 실패합니다.

.github/workflows/ace_production.yml (1)

76-76: packageName 자리표시자 교체 필요

프로덕션 배포는 실제 애플리케이션 ID가 필수입니다.

🧹 Nitpick comments (1)
.github/workflows/ace_firebase_distribution.yml (1)

69-89: 슬랙 알림 단계에 시크릿 존재 조건 추가 권장

포크 저장소에서 시크릿이 없을 때 실패를 방지해야 합니다.

-        if: success()
+        if: success() && env.SLACK_WEBHOOK_URL != ''
...
-        if: failure()
+        if: failure() && env.SLACK_WEBHOOK_URL != ''
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 930117d and c3c3f8b.

📒 Files selected for processing (4)
  • .github/workflows/ace_build.yml (1 hunks)
  • .github/workflows/ace_firebase_distribution.yml (1 hunks)
  • .github/workflows/ace_internal_test.yml (1 hunks)
  • .github/workflows/ace_production.yml (1 hunks)
🧰 Additional context used
🪛 YAMLlint (1.37.1)
.github/workflows/ace_build.yml

[error] 70-70: no new line character at the end of file

(new-line-at-end-of-file)

🪛 actionlint (1.7.7)
.github/workflows/ace_firebase_distribution.yml

2-2: "on" section is missing in workflow

(syntax-check)

.github/workflows/ace_internal_test.yml

2-2: "on" section is missing in workflow

(syntax-check)

.github/workflows/ace_production.yml

2-2: "on" section is missing in workflow

(syntax-check)

author_name: GitHub Actions
text: "❌ CI 빌드 실패! PR: #${{ github.event.pull_request.number }} - `${{ github.event.pull_request.title }}`"
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} No newline at end of file
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

파일 끝에 개행 문자 누락

POSIX 규격을 따르려면 EOF 뒤에 개행을 추가해야 YAML linter 경고를 제거할 수 있습니다.

-          SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
+\          SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
+
+# EOF 개행

Committable suggestion skipped: line range outside the PR's diff.

🧰 Tools
🪛 YAMLlint (1.37.1)

[error] 70-70: no new line character at the end of file

(new-line-at-end-of-file)

🤖 Prompt for AI Agents
In .github/workflows/ace_build.yml at line 70, the file is missing a newline
character at the end. Add a newline (empty line) after the last line to comply
with POSIX standards and remove the YAML linter warning.

Comment on lines +4 to +8
# 워크플로우 트리거 설정
#on:
# push:
# branches:
# - develop
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

필수 on 섹션이 주석 처리되어 있음

워크플로 정의가 유효하지 않아 로드되지 않습니다.

-#on:
-#  push:
-#    branches:
-#      - develop
+on:
+  workflow_dispatch: {}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
# 워크플로우 트리거 설정
#on:
# push:
# branches:
# - develop
# 워크플로우 트리거 설정
on:
workflow_dispatch: {}
🤖 Prompt for AI Agents
In .github/workflows/ace_firebase_distribution.yml around lines 4 to 8, the
essential 'on' section that defines the workflow trigger is commented out,
making the workflow invalid and not loaded. Uncomment the 'on' section and its
nested lines to properly define the trigger for the workflow on pushes to the
develop branch.

Comment on lines +4 to +8
#on:
# push:
# branches:
# - main

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

on 섹션이 주석 처리되어 워크플로가 무효화됨

actionlint 오류처럼 on 키가 필수이며, 주석 처리된 상태로는 YAML 구문 자체가 잘못됩니다.

-#on:
-#  push:
-#    branches:
-#      - main
+on:
+  workflow_dispatch: {}   # 임시 트리거 — 서비스명 확정 후 push 조건으로 교체
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
#on:
# push:
# branches:
# - main
on:
workflow_dispatch: {} # 임시 트리거 — 서비스명 확정 후 push 조건으로 교체
🤖 Prompt for AI Agents
In .github/workflows/ace_internal_test.yml around lines 4 to 8, the 'on' section
is commented out, which disables the workflow and causes YAML syntax errors.
Uncomment the 'on' section and its nested keys so the workflow triggers
correctly on pushes to the main branch.

Comment on lines +81 to +101
- name: Slack 알림 (내부 테스트 배포 성공)
if: success()
uses: 8398a7/action-slack@v3
with:
status: success
fields: workflow,job,commit,repo,author,took,ref
author_name: GitHub Actions
text: "🚀 Google Play 내부 테스트 배포 성공! 브랜치: `${{ github.ref_name }}` 커밋: `${{ github.sha }}`"
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}

- name: Slack 알림 (내부 테스트 배포 실패)
if: failure()
uses: 8398a7/action-slack@v3
with:
status: failure
fields: workflow,job,commit,repo,author,took,ref
author_name: GitHub Actions
text: "🚨 Google Play 내부 테스트 배포 실패! 브랜치: `${{ github.ref_name }}` 커밋: `${{ github.sha }}`"
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

슬랙 알림 단계 조건식에 시크릿 존재 검증 필요

포크 PR 환경에서 시크릿이 노출되지 않아 액션이 실패합니다.

-        if: success()
+        if: success() && env.SLACK_WEBHOOK_URL != ''
...
-        if: failure()
+        if: failure() && env.SLACK_WEBHOOK_URL != ''
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- name: Slack 알림 (내부 테스트 배포 성공)
if: success()
uses: 8398a7/action-slack@v3
with:
status: success
fields: workflow,job,commit,repo,author,took,ref
author_name: GitHub Actions
text: "🚀 Google Play 내부 테스트 배포 성공! 브랜치: `${{ github.ref_name }}` 커밋: `${{ github.sha }}`"
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
- name: Slack 알림 (내부 테스트 배포 실패)
if: failure()
uses: 8398a7/action-slack@v3
with:
status: failure
fields: workflow,job,commit,repo,author,took,ref
author_name: GitHub Actions
text: "🚨 Google Play 내부 테스트 배포 실패! 브랜치: `${{ github.ref_name }}` 커밋: `${{ github.sha }}`"
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
- name: Slack 알림 (내부 테스트 배포 성공)
- if: success()
+ if: success() && env.SLACK_WEBHOOK_URL != ''
uses: 8398a7/action-slack@v3
with:
status: success
fields: workflow,job,commit,repo,author,took,ref
author_name: GitHub Actions
text: "🚀 Google Play 내부 테스트 배포 성공! 브랜치: `${{ github.ref_name }}` 커밋: `${{ github.sha }}`"
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
- name: Slack 알림 (내부 테스트 배포 실패)
- if: failure()
+ if: failure() && env.SLACK_WEBHOOK_URL != ''
uses: 8398a7/action-slack@v3
with:
status: failure
fields: workflow,job,commit,repo,author,took,ref
author_name: GitHub Actions
text: "🚨 Google Play 내부 테스트 배포 실패! 브랜치: `${{ github.ref_name }}` 커밋: `${{ github.sha }}`"
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
🤖 Prompt for AI Agents
In .github/workflows/ace_internal_test.yml between lines 81 and 101, the Slack
notification steps run unconditionally on success or failure, causing failures
in forked PRs due to missing secrets. Add a condition to check if the
SLACK_WEBHOOK_URL secret exists before running these steps by including an
expression like "env.SLACK_WEBHOOK_URL != ''" combined with the existing
success() or failure() conditions in the if field. This prevents the steps from
running when the secret is not available.

Comment on lines +4 to +8
## 워크플로우 트리거 설정
#on:
# push:
# tags:
# - 'v*' # 'v'로 시작하는 태그(예: v1.0.0)가 푸시되었을 때만 트리거
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

on 키 누락으로 인해 워크플로가 파싱되지 않음

주석을 해제하거나 임시로 workflow_dispatch 트리거를 추가하세요.

-#on:
-#  push:
-#    tags:
-#      - 'v*'
+on:
+  workflow_dispatch: {}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
## 워크플로우 트리거 설정
#on:
# push:
# tags:
# - 'v*' # 'v'로 시작하는 태그(예: v1.0.0)가 푸시되었을 때만 트리거
## 워크플로우 트리거 설정
on:
workflow_dispatch: {}
🤖 Prompt for AI Agents
In .github/workflows/ace_production.yml around lines 4 to 8, the workflow
trigger key `on` is commented out, causing the workflow to not be parsed or
triggered. To fix this, uncomment the `on` key and its nested configuration for
the push event with tag filters, or alternatively add a temporary
`workflow_dispatch` trigger to enable manual triggering of the workflow.

Comment on lines +81 to +101
- name: Slack 알림 (Google Play 프로덕션 배포 성공)
if: success()
uses: 8398a7/action-slack@v3
with:
status: success
fields: workflow,job,commit,repo,author,took,ref
author_name: GitHub Actions
text: "🚀 Google Play 프로덕션 배포 성공! 태그: `${{ github.ref_name }}` 커밋: `${{ github.sha }}`"
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}

- name: Slack 알림 (Google Play 프로덕션 배포 실패)
if: failure()
uses: 8398a7/action-slack@v3
with:
status: failure
fields: workflow,job,commit,repo,author,took,ref
author_name: GitHub Actions
text: "🚨 Google Play 프로덕션 배포 실패! 태그: `${{ github.ref_name }}` 커밋: `${{ github.sha }}`"
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

슬랙 단계 시크릿 검증 누락

포크 PR 상황에서 실패를 방지하려면 조건문에 시크릿 존재 여부를 추가하세요.

-        if: success()
+        if: success() && env.SLACK_WEBHOOK_URL != ''
...
-        if: failure()
+        if: failure() && env.SLACK_WEBHOOK_URL != ''
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- name: Slack 알림 (Google Play 프로덕션 배포 성공)
if: success()
uses: 8398a7/action-slack@v3
with:
status: success
fields: workflow,job,commit,repo,author,took,ref
author_name: GitHub Actions
text: "🚀 Google Play 프로덕션 배포 성공! 태그: `${{ github.ref_name }}` 커밋: `${{ github.sha }}`"
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
- name: Slack 알림 (Google Play 프로덕션 배포 실패)
if: failure()
uses: 8398a7/action-slack@v3
with:
status: failure
fields: workflow,job,commit,repo,author,took,ref
author_name: GitHub Actions
text: "🚨 Google Play 프로덕션 배포 실패! 태그: `${{ github.ref_name }}` 커밋: `${{ github.sha }}`"
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
- name: Slack 알림 (Google Play 프로덕션 배포 성공)
if: success() && env.SLACK_WEBHOOK_URL != ''
uses: 8398a7/action-slack@v3
with:
status: success
fields: workflow,job,commit,repo,author,took,ref
author_name: GitHub Actions
text: "🚀 Google Play 프로덕션 배포 성공! 태그: `${{ github.ref_name }}` 커밋: `${{ github.sha }}`"
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
- name: Slack 알림 (Google Play 프로덕션 배포 실패)
if: failure() && env.SLACK_WEBHOOK_URL != ''
uses: 8398a7/action-slack@v3
with:
status: failure
fields: workflow,job,commit,repo,author,took,ref
author_name: GitHub Actions
text: "🚨 Google Play 프로덕션 배포 실패! 태그: `${{ github.ref_name }}` 커밋: `${{ github.sha }}`"
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
🤖 Prompt for AI Agents
In .github/workflows/ace_production.yml around lines 81 to 101, the Slack
notification steps lack a check for the presence of the SLACK_WEBHOOK_URL
secret, which can cause failures in forked PRs. Add a condition to the 'if'
statements to verify that the secret exists before sending notifications, for
example by including a check like 'env.SLACK_WEBHOOK_URL != null' combined with
the existing success() or failure() conditions.

@sxunea sxunea merged commit b64a9a8 into develop Jul 21, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[setting] CI/CD 구축

3 participants