Giithub Packages 내에서 비공개 라이브러리 구축
주식 태그 Advent Calendar 4일째 보도다.
재고 표시에서 donguri-ui라고 불리는 디자인 시스템과 이를 바탕으로 하는 구성 요소 라이브러리가 활용되어 여러 제품에서 사용되고 있다.디자인 시스템과 라이브러리 자체를 회사 밖으로 공개하는 기업이 늘고 있지만 재고 로고는 현재 공개적으로 사용하지 않는다.
공개되지 않은 경우 npm에서 공개된 방법과는 다른 방법으로 설치해야 한다.그중 하나는 Github Packages 방법을 사용했는데 올해 이 방법을 도입하고 관리했기 때문에 제가 소개해 드리겠습니다.
배경.
Giithub Packages를 사용하기 전에 회사 내부에서 계정과 비밀번호를 공유하는basic 인증을 통해 직접 개인 창고
npm install
를 진행했다.실제 사용된 설정은 다음과 같습니다.package.json
"donguri-ui": "git+https://<共用アカウントID>:<パスワード>@github.com/stockmarkteam/donguri-ui.git#master"
이 방법은 Giithub의 보안 변경(2021/8/13 이후 비밀번호 인증에서 창고를 참고할 수 없음) 때문에 사용할 수 없기 때문에 다른 방법으로 변경해야 한다.(참고로 이 대응은 8월 13일 이전에 진행되었다)이외에git관리하의원본코드에는비밀번호와영패의하드코드가있어semanticversioning이사용되지 않아사용하는측지정버전이번거롭기때문에최신버전을사용하기어렵다.
이러한 문제의 해결책으로 Giithub Packages를 도입했습니다.
대응 내용
여기서 실제로 했던 일을 소개합니다.
라이브러리 측면에서 수정
Giithub Packages는 Scped package
@babel/env
에서 @
사이의 범위 이름을 포함하는 포장 이름)만 지원하기 때문에 package입니다.json의 /
를 Scoped로 변경해야 합니다.package.json
- "name": "donguri-ui",
+ "name": "@stockmarkteam/donguri-ui",
마찬가지로 패키지입니다.json에 name
설정을 추가합니다.이때 설정npm publish
을 하지 않으면 포장이 공개(누구나 설치할 수 있음)되기 때문에 공개하지 않으려면 이 설정이 필요하다.package.json
+ "publishConfig": {
+ "access": "restricted",
+ "registry": "https://npm.pkg.github.com/"
+ },
마지막으로 Giithub Actions에서publish에서 Giithub Packages로 설정합니다.이번에 Giithub의 GUI에 발표될 때 이 CI는 도망갈 것이다.name: donguri-ui をGPRへリリースする
on:
release:
types: [created]
jobs:
publish-gpr:
needs: build
runs-on: ubuntu-latest
permissions:
packages: write
contents: read
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
with:
node-version: 12
registry-url: https://npm.pkg.github.com/
- (省略)
- run: npm publish
env:
NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}
실제로 이 CI에서 구축 처리를 했지만 내용은 이번에 생략되었다.이상의 대응에 따라 Giithub Packages는 사내에 라이브러리를 공개할 수 있습니다.다음은 그것을 사용하는 각 제품에 대한 수정을 소개합니다.
사용된 개별 제품 수정
"access": "restricted"
명령을 실행하는 디렉터리에 파일npm
을 만들고 다음과 같은 내용을 추가합니다..npmrc
//npm.pkg.github.com/:_authToken=${GITHUB_READ_PACKAGES_TOKEN}
@stockmarkteam:registry="https://npm.pkg.github.com"
첫 줄.npmrc
에서 개인 가방에 접근하는 데 사용할 영패는 환경 변수를 통해 전달된다.이 값은 지이허브의 설정 화면에서 개발자가 각자 자신의 계정으로 제작해 각자의 개발 환경으로 설정한 것이다.이때 영패의 권한은
GITHUB_READ_PACKAGES_TOKEN
에만 한정되며, 영패가 유출되더라도 피해를 최소화할 수 있다.또 라이브러리 측에서 포장 명칭, 패키지를 변경했기 때문이다.json이나 가져온 파일이라도 포장 이름을 변경해야 합니다.
package.json
- "donguri-ui": "git+https://<共用アカウントID>:<パスワード>@github.com/stockmarkteam/donguri-ui.git#master",
+ "@stockmarkteam/donguri-ui": "1.0.0",
index.ts- import DonguriUI from 'donguri-ui';
+ import DonguriUI from '@stockmarkteam/donguri-ui';
Giithub Packages로 변경
실제 운용을 바꾼 결과 다음과 같은 장점이 있다.
read:packages
에서 사용한 라이브러리 버전 업그레이드로 최신 버전의 난이도가 낮아졌다또한 Giithub Packages는 Node입니다.js의 포장 이외에도 적용되기 때문에 앞으로 회사 내부 프로그램 라이브러리를 제작할 때도 사용할 수 있습니다.
개인 창고에서 Giithub Packages를 사용할 경우 Giithub Action 이외의 전송량에 따라 요금이 부과됩니다.따라서 다른 CI 서비스를 이용하면 비용이 발생한다.
최후
본고에서 소개한 개선을 진행할 때 공식 문서 외에 PLAID의 npm prive registry에서 GiitHub Packages Registry로 이동 문장을 참고했다.npm prive registry와 Giithub Packages의 비교도 통일되어 있으니 마음에 드는 쪽도 참고해주세요.
Reference
이 문제에 관하여(Giithub Packages 내에서 비공개 라이브러리 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/ebiryu/articles/065f5efb65573c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)