Skip to content

[CUBRIDQA-1320] sync tc branch with cubrid repo pr#6896

Merged
cubridci merged 51 commits intoCUBRID:developfrom
tw-kang:cubridqa-1320_re
Mar 13, 2026
Merged

[CUBRIDQA-1320] sync tc branch with cubrid repo pr#6896
cubridci merged 51 commits intoCUBRID:developfrom
tw-kang:cubridqa-1320_re

Conversation

@tw-kang
Copy link
Copy Markdown
Contributor

@tw-kang tw-kang commented Mar 10, 2026

http://jira.cubrid.org/browse/CUBRIDQA-1320

Purpose

  • CUBRID 엔진 PR과 TC(Test Case) 저장소 간의 테스트 환경 구성 및 정리(Cleanup) 프로세스 완전 자동화.
  • QA 및 개발자가 수동으로 TC 브랜치를 생성/삭제하는 번거로움을 없애고, CircleCI 테스트가 정확히 격리된 브랜치에서 수행되도록 보장하기 위함.

Implementation

  • TC Branch Sync 워크플로우 신규 추가 (opened, reopened 트리거)

  • 일반 PR: 엔진 PR 생성 시, 두 TC 저장소(cubrid-testcases, private-ex)에 tc/pr-<N> 브랜치를 자동 생성하고 Draft PR을 오픈합니다.

  • Revert PR: 엔진 PR이 Revert PR로 감지되면, 원본 PR에 매핑되는 TC 커밋을 찾아 자동으로 git revert를 수행하고 Open PR을 만듭니다. (Squash / 일반 Merge 모두 유연하게 대응)

  • TC Branch Finalize 워크플로우 신규 추가 (closed 트리거)

  • 엔진 PR이 종료(Merged 또는 Closed)되면, TC 저장소에 열려있는 관련 PR을 자동으로 Close 하고 tc/pr-<N> 브랜치를 삭제하여 찌꺼기(Orphan) 브랜치가 남지 않도록 정리합니다.

Remarks

  • 이 워크플로우는 CircleCI config.yml에서 동적으로 PR 번호를 파싱해 BRANCH_TESTCASES 환경 변수를 주입하는 로직과 한 쌍으로 동작합니다.
  • Repository Secrets에 TC_APP_IDTC_APP_PRIVATE_KEY가 정상적으로 등록되어 있어야 동작합니다.
    (github app, repo secretes 등록 완료)
  • Revert PR 처리 중 TC 저장소에서 Merge Conflict가 발생할 경우, 워크플로우가 실패 처리되며 엔진 PR 댓글을 통해 수동 복구 가이드를 제공하도록 설계되었습니다.

CUBRID 개발 프로세스 변경 요약 (TC Branch Sync)

AS-IS (도입 전): 단일 큐 병목 및 CI 오염

공용 TC develop 브랜치를 참조하여, 타인의 TC 변경이 내 CI를 깨뜨리는 상호 간섭 발생.

[Engine PR 오픈] 
       │
       ▼
[CI 테스트 수행] <== (TC 저장소의 공용 `develop` 참조) 타인 PR에 의해 환경 오염 가능
       │
       ▼
[TC 답지 수정] (수동으로 PR 파서 `develop`에 선행 머지)
       │
       ▼
[CI 재수행 및 통과] <== (`develop` 변경분 반영)
       │
       ▼
[Engine PR 머지]


TO-BE (도입 후): PR별 완벽한 테스트 격리 및 필수 검증

전용 TC 브랜치가 자동 생성되며, TC 수정 시 반드시 해당 격리 브랜치 기반으로 CI를 재수행하여 통과해야만 머지가 가능합니다.

[Engine PR 오픈]
       │
       ├─> [자동] TC 저장소에 전용 브랜치(`tc/pr-N`) 및 Draft PR 생성
       │
       ▼
[CI 테스트 수행] <== (격리된 `tc/pr-N` 참조)
       │
       ▼
    (필요 시)
[TC 답지 수정] (`tc/pr-N`에 커밋 푸시)
       │
       ▼
[CI 재수행 및 통과] <== 필수: 수정된 `tc/pr-N` 기반으로 CI 100% 통과 확인
       │
       ▼
[TC PR 머지] (`tc/pr-N` -> `develop` 선행 머지)
       │
       ▼
[Engine PR 머지] 
       │
       ▼
[자동 Cleanup] <== [자동] Engine PR 닫힐 때 `tc/pr-N` 브랜치 삭제


핵심 변화 3가지

  1. 완벽한 격리: CI가 공용 develop 대신 격리된 tc/pr-N 브랜치를 참조하여 타 PR 간섭을 원천 차단합니다.
  2. 엄격한 CI 검증: TC가 수정되면 반드시 CI를 재수행하여 통과를 확인한 후 머지(트랜잭션) 단계로 진입합니다.
  3. 생명주기 자동화: 브랜치의 생성, 삭제, Revert 작업을 봇이 엔진 PR 상태에 맞춰 모두 자동으로 관리합니다.

tw-kang and others added 30 commits February 23, 2026 17:18
- Remove per-matrix 'Comment TC revert PR link' step from revert-tc-branch job
- Add comment-on-engine-pr-revert job that aggregates both TC repo PR links
  into a single comment using gh pr list --head at runtime
- Improve comment-on-engine-pr job readability using heredoc for COMMENT_BODY
- New job uses separate GitHub App tokens for public/private TC repos
Comment thread .circleci/config.yml
Comment thread .github/workflows/tc-branch-sync.yml Outdated
Comment thread .github/workflows/tc-branch-sync.yml Outdated
Comment thread .github/workflows/tc-branch-sync.yml Outdated
tw-kang and others added 3 commits March 11, 2026 17:06
delete global

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
change for to foce-with-lease

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
@tw-kang
Copy link
Copy Markdown
Contributor Author

tw-kang commented Mar 11, 2026

@greptile

@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented Mar 11, 2026

Last reviewed commit: 8d530c2

Comment thread .github/workflows/tc-branch-sync.yml
Comment thread .circleci/config.yml Outdated
tw-kang and others added 2 commits March 11, 2026 17:39
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
@tw-kang tw-kang marked this pull request as ready for review March 11, 2026 08:52
@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented Mar 11, 2026

Last reviewed commit: 2bb193e

Comment thread .github/workflows/tc-branch-sync.yml Outdated
@tw-kang tw-kang requested review from kwonhoil and mhoh3963 March 11, 2026 08:56
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented Mar 11, 2026

Last reviewed commit: be14298

Comment thread .github/workflows/tc-branch-sync.yml Outdated
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented Mar 11, 2026

Last reviewed commit: 8dc9b11

Comment thread .circleci/config.yml
Comment thread .github/workflows/tc-branch-sync.yml
@mhoh3963
Copy link
Copy Markdown
Contributor

@tw-kang
TC pr이 수행된 경우 TC 수동으로 merge 후 엔진 PR를 merge하는 순서로 되어 있는데, TC 머지를 하지 않고 엔진 PR를 merge하면 수정된 TC branch가 삭제되는 것 같은데, 다음과 같이 처리할 수 있을까요 ? 검토부탁합니다.

(방안1) TC 머지가 되지 않으면 엔진 PR를 merge 할 수 없게 한다.
(방안2) TC 머지하지 않고 엔진 PR를 merge하는 경우는 수정된 TC branch를 삭제하지 않고, 남겨두거나 함께 머지한다.

@tw-kang
Copy link
Copy Markdown
Contributor Author

tw-kang commented Mar 13, 2026

@tw-kang TC pr이 수행된 경우 TC 수동으로 merge 후 엔진 PR를 merge하는 순서로 되어 있는데, TC 머지를 하지 않고 엔진 PR를 merge하면 수정된 TC branch가 삭제되는 것 같은데, 다음과 같이 처리할 수 있을까요 ? 검토부탁합니다.

(방안1) TC 머지가 되지 않으면 엔진 PR를 merge 할 수 없게 한다. (방안2) TC 머지하지 않고 엔진 PR를 merge하는 경우는 수정된 TC branch를 삭제하지 않고, 남겨두거나 함께 머지한다.

방안 1 은 repo rule 을 설정하여 구현가능합니다. 아래와 같은 우회방안이 있어 이후 추가로 구현할 예정입니다.

현재 engine pr 머지가 선행되어 pr closed, 브랜치삭제가 되었을때,
closed 된 tc pr 에서 branch restore, pr 재오픈 하면 원치않게 삭제된 내용을 살릴 수 있습니다.

@cubridci cubridci merged commit d90111c into CUBRID:develop Mar 13, 2026
8 checks passed
@github-actions
Copy link
Copy Markdown

TC Branch Finalized for cubrid-testcases

Engine PR was merged.

Cleanup Results:

TC develop branch is ready for the next PR.

@github-actions
Copy link
Copy Markdown

TC Branch Finalized for cubrid-testcases-private-ex

Engine PR was merged.

Cleanup Results:

TC develop branch is ready for the next PR.

@tw-kang tw-kang deleted the cubridqa-1320_re branch March 13, 2026 08:32
hyunikn added a commit to hyunikn/cubrid that referenced this pull request Mar 13, 2026
hyunikn added a commit to hyunikn/cubrid that referenced this pull request Mar 13, 2026
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.

4 participants