Merge pull request #12 from paasup/fix/self-build-no-pr-create

self-build-image: 자동 PR 생성 제거 → 브랜치 push + compare 링크 안내
This commit is contained in:
wbsong111
2026-08-04 15:39:12 +09:00
committed by GitHub
+29 -20
View File
@@ -19,15 +19,22 @@ name: self-build-image
# 빌드는 호스트 러너여야 한다. # 빌드는 호스트 러너여야 한다.
# #
# 트리거 2종이 같은 스텝(빌드→verify.sh→SBOM→scan-sbom.sh→cve-gate.py)을 돈다. # 트리거 2종이 같은 스텝(빌드→verify.sh→SBOM→scan-sbom.sh→cve-gate.py)을 돈다.
# 차이는 대상 이미지를 어떻게 정하는지, 그리고 push·카탈로그 PR 생성 여부뿐이다. # 차이는 대상 이미지를 어떻게 정하는지, 그리고 push·카탈로그 브랜치 push 여부뿐이다.
# #
# pull_request(images/**) 변경된 images/<image>/ 디렉토리를 diff 로 자동 탐지해 그 # pull_request(images/**) 변경된 images/<image>/ 디렉토리를 diff 로 자동 탐지해 그
# 이미지들만 검증한다(push·카탈로그 PR 생성 없음). 여러 이미지가 # 이미지들만 검증한다(push·카탈로그 브랜치 없음). 여러 이미지가
# 한 PR 에서 바뀌면 각각 매트릭스로 병렬 실행된다. # 한 PR 에서 바뀌면 각각 매트릭스로 병렬 실행된다.
# workflow_dispatch `image` 입력으로 대상을 명시한다. 실제 빌드·push·카탈로그 PR # workflow_dispatch `image` 입력으로 대상을 명시한다. 실제 빌드·push·카탈로그 태그
# 생성은 이 트리거로만 일어난다(사람이 수동 실행) — sbom.yml 의 # 갱신 브랜치 push 는 이 트리거로만 일어난다(사람이 수동 실행) —
# 게이트는 현재 이 워크플로를 자동으로 호출하지 않는다. # sbom.yml 의 게이트는 현재 이 워크플로를 자동으로 호출하지 않는다.
# push 입력이 false 면 검증만 한다. # push 입력이 false 면 검증만 한다.
#
# 카탈로그 PR 은 자동 생성하지 않는다 — GitHub Actions 는 GITHUB_TOKEN 으로 PR 을 만들 수
# 없다는 조직 정책("Allow GitHub Actions to create and approve pull requests" 미허용,
# 리포 설정으로 못 바꿈)에 실측으로 막혔다(2026-08-04, run 30882785612, GraphQL:
# "GitHub Actions is not permitted to create or approve pull requests"). 브랜치·커밋·push
# 까지만 워크플로가 하고, PR 오픈은 Job Summary 에 남는 compare 링크로 사람이 직접 연다
# (사람의 gh/브라우저 인증은 이 제약을 받지 않는다).
on: on:
workflow_dispatch: workflow_dispatch:
@@ -40,7 +47,7 @@ on:
required: false required: false
default: '' default: ''
push: push:
description: '레지스트리 push + 카탈로그 PR 생성 여부' description: '레지스트리 push + 카탈로그 태그 갱신 브랜치 push 여부'
required: false required: false
default: 'true' default: 'true'
pull_request: pull_request:
@@ -49,7 +56,6 @@ on:
permissions: permissions:
contents: write contents: write
pull-requests: write
env: env:
REGISTRY_HOST: docker.io/paasup REGISTRY_HOST: docker.io/paasup
@@ -239,12 +245,14 @@ jobs:
# 게이트가 차단+수정가능 CVE 를 확인)이거나 사람의 명시적 실행이다. 예전에는 # 게이트가 차단+수정가능 CVE 를 확인)이거나 사람의 명시적 실행이다. 예전에는
# 블라인드 스케줄 재빌드가 있어서 "정말 개선인지" 를 여기서 재확인해야 했는데, # 블라인드 스케줄 재빌드가 있어서 "정말 개선인지" 를 여기서 재확인해야 했는데,
# 그 트리거를 없앤 뒤로는 불필요해졌다 — 게이트 PASS + 태그 변경만 확인한다. # 그 트리거를 없앤 뒤로는 불필요해졌다 — 게이트 PASS + 태그 변경만 확인한다.
- name: 카탈로그 PR 생성 #
# PR 은 만들지 않는다(위 파일 헤더 참고 — GITHUB_TOKEN 으로 PR 생성이 조직 정책으로
# 막혀 있고 우리 쪽에서 그 정책을 못 바꾼다, 실측: run 30882785612). 브랜치 push 까지만
# 하고 compare 링크를 Job Summary 에 남겨 사람이 직접 PR 을 연다.
- name: 카탈로그 브랜치 push + PR 안내
if: > if: >
steps.publish.outputs.enabled == 'true' && steps.build.outputs.rc == '0' && steps.publish.outputs.enabled == 'true' && steps.build.outputs.rc == '0' &&
steps.current.outputs.tag != steps.build.outputs.tag steps.current.outputs.tag != steps.build.outputs.tag
env:
GH_TOKEN: ${{ github.token }}
run: | run: |
set -uo pipefail set -uo pipefail
NEW="${{ steps.build.outputs.tag }}" NEW="${{ steps.build.outputs.tag }}"
@@ -278,19 +286,21 @@ jobs:
-m "Co-Authored-By: github-actions[bot] <github-actions[bot]@users.noreply.github.com>" -m "Co-Authored-By: github-actions[bot] <github-actions[bot]@users.noreply.github.com>"
git push -u origin "$BRANCH" git push -u origin "$BRANCH"
# 본문을 파일로 만든다. heredoc 을 워크플로 run 블록 안에 그대로 두면 내용의 COMPARE_URL="https://github.com/${{ github.repository }}/compare/main...${BRANCH}?expand=1"
# 들여쓰기가 YAML 블록 스칼라 들여쓰기와 어긋난다.
BODY="$GITHUB_WORKSPACE/pr_body.md"
{ {
echo "자체 빌드 이미지(\`${IMAGE}\`) 태그 갱신. 트리거: \`${{ github.event_name }}\`." echo "## ${IMAGE} 카탈로그 태그 갱신 — 브랜치 push 완료, PR 은 직접 열어야 함"
echo echo
echo "- 이전 태그: \`$OLD\`" echo "- 이전 태그: \`$OLD\`"
echo "- 새 태그: \`$NEW\`" echo "- 새 태그: \`$NEW\`"
echo "- 브랜치: \`$BRANCH\`"
echo "- 게이트: PASS (아티팩트의 \`cve-gate.md\` 참고)" echo "- 게이트: PASS (아티팩트의 \`cve-gate.md\` 참고)"
echo echo
echo "**주의 — 이 PR 은 다른 워크플로를 자동으로 트리거하지 않는다**" echo "**PR 은 자동 생성되지 않는다** — GitHub 조직 정책상 \`GITHUB_TOKEN\`(Actions 자체 토큰)으로는"
echo "(\`GITHUB_TOKEN\` 이 만든 PR 에 대한 GitHub 의 재귀 방지 정책). 병합 전에 아래를 수동으로" echo "PR 을 만들 수 없다. 아래 링크에서 사람이 직접 연다:"
echo "실행해 카탈로그 게이트를 확인한다." echo
echo "$COMPARE_URL"
echo
echo "PR을 연 뒤 병합 전에 아래를 수동으로 실행해 카탈로그 게이트를 확인한다."
echo echo
echo '```sh' echo '```sh'
echo "gh workflow run helm-catalog-sbom --ref $BRANCH" echo "gh workflow run helm-catalog-sbom --ref $BRANCH"
@@ -298,6 +308,5 @@ jobs:
echo echo
echo "이미지가 실제로 동작하는지도 병합 전에 수동으로 확인한다(해당 차트 배포 후" echo "이미지가 실제로 동작하는지도 병합 전에 수동으로 확인한다(해당 차트 배포 후"
echo "기능 점검 — 자동화된 배포 테스트 절차는 아직 없다)." echo "기능 점검 — 자동화된 배포 테스트 절차는 아직 없다)."
} > "$BODY" } >> "$GITHUB_STEP_SUMMARY"
echo "브랜치 push 완료 — PR은 사람이 직접 열어야 한다: $COMPARE_URL"
gh pr create --title "${IMAGE}: ${OLD##*:} → ${NEW##*:}" --body-file "$BODY"