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