From 9efd2bd4e780a576a6c0d38ead49d9e3c49bbb94 Mon Sep 17 00:00:00 2001 From: kim jeong yong Date: Thu, 6 Aug 2026 16:10:46 +0900 Subject: [PATCH] =?UTF-8?q?ci:=20npm=20dev/latest=20=EB=91=90=20=EC=B1=84?= =?UTF-8?q?=EB=84=90=20=EC=9E=90=EB=8F=99=20publish=20=EA=B5=AC=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit develop push 마다 -dev. 를 dev 태그로, master push 시에는 package.json 버전이 npm 에 아직 없을 때만 latest 태그로 배포한다. 두 채널이 npm 에 공존해야 소비자 쪽에서 npm alias 로 운영본과 개발본을 동시에 설치할 수 있다. - release.yml 삭제: 역할이 중복되고, GitHub Release 수동 트리거에 의존해 배포가 2025-05-30 이후 멈춰 있었다 - setup-node 에 registry-url 추가: 저장소에 .npmrc 가 없어 npm publish 가 NODE_AUTH_TOKEN 을 읽지 못하고 401 로 실패하는 문제를 막는다 - 버전은 러너에서만 npm pkg set 으로 바꾸고 publish 직후 원복해 커밋하지 않는다 - 버전 계산이 실패한 채 잘못된 값으로 publish 되지 않도록 형식 가드를 둔다 - 첫 배포를 수동으로 확인할 수 있게 workflow_dispatch 를 추가한다 - dist 브랜치 배포 로직과 package.json 의 files 필드는 변경하지 않았다 Co-Authored-By: Claude Opus 5 (1M context) --- .github/workflows/build-and-deploy.yml | 27 ++++++++++++++++++++++++++ .github/workflows/release.yml | 23 ---------------------- 2 files changed, 27 insertions(+), 23 deletions(-) delete mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/build-and-deploy.yml b/.github/workflows/build-and-deploy.yml index 4395df738f..bb6a1c334f 100644 --- a/.github/workflows/build-and-deploy.yml +++ b/.github/workflows/build-and-deploy.yml @@ -7,6 +7,7 @@ on: - develop-hw - develop2 - develop + workflow_dispatch: jobs: build-and-deploy: @@ -20,6 +21,7 @@ jobs: TOOL_NODE_FLAGS: '--max-old-space-size=4096' with: node-version: 20 + registry-url: 'https://registry.npmjs.org' - uses: pnpm/action-setup@v3 name: Install pnpm with: @@ -30,6 +32,31 @@ jobs: NODE_OPTIONS: '--max-old-space-size=4096' TOOL_NODE_FLAGS: '--max-old-space-size=4096' run: pnpm prod + # dev 채널: develop push 마다 새 prerelease 를 dev 태그로 배포한다. + # 버전은 러너에서만 바꾸고 커밋하지 않으므로, publish 후 package.json 을 원복해 + # 뒤따르는 build.sh/deploy.sh 가 dist 브랜치에 담는 내용물은 기존과 동일하게 유지한다. + - name: publish dev + if: github.ref == 'refs/heads/develop' + shell: bash + run: | + set -euo pipefail + NEXT=$(node -p "const v = require('./package.json').version.split('-')[0].split('.').map(Number); v[2] += 1; v.join('.')") + VERSION="$NEXT-dev.${{ github.run_number }}" + # 버전 계산이 조용히 실패한 채 publish 되는 것을 막는다. + [[ "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+-dev\.[0-9]+$ ]] || { echo "::error::계산된 버전이 올바르지 않습니다: $VERSION"; exit 1; } + echo "publish @entrylabs/entry@$VERSION (dist-tag: dev)" + npm pkg set version="$VERSION" + npm publish --tag dev + git checkout -- package.json + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + # latest 채널: master push 시, package.json 버전이 npm 에 아직 없을 때만 배포된다. + # 이미 있는 버전이면 액션이 조용히 skip 하므로 master push 마다 돌려도 안전하다. + - name: publish latest + if: github.ref == 'refs/heads/master' + uses: JS-DevTools/npm-publish@v3 + with: + token: ${{ secrets.NPM_TOKEN }} - name: Define branch name id: target_branch shell: bash diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 02bba5a708..0000000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: 'release' -on: - release: - types: [created] - -jobs: - release: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Install pnpm - uses: pnpm/action-setup@v3 - with: - version: 9 - - uses: actions/setup-node@v4 - with: - node-version: '20' - cache: 'pnpm' - - run: pnpm install - - run: pnpm prod - - uses: JS-DevTools/npm-publish@v3 - with: - token: ${{ secrets.NPM_TOKEN }}