GCP ArtifactRegistry에서 Private NPM Registry 사용

GCP ArtifactRegistry에서 Private NPM Registry를 실행해 봅시다.


  • 2020/06/30 현재, npm의 이용은 Alpha판만
  • Alpha 버전 참가를 위해서는 앙케이트 기입이 요구된다
  • 기입 한 다음 날에는 메일이 도착하여 npm을 선택할 수있게되었습니다

  • 매우 쉽게 사용할 수있었습니다
  • AWS CodeArtifact와 달리 UserScope (~/.npmrc)를 오염시키지 않고 사용할 수있었습니다



  • 다음 패키지를 publish/install 해보십시오.

    package.json
    {
      "name": "@mycompany/great-project",
      "version": "0.4.11",
      ...
    }
    

    리포지토리 만들기



  • 이름: 만약 myrepositry 하자.

  • 프로젝트에 설정


  • 작성한 리포지토리를 선택하고 "설정 절차"를 따르십시오

  • .npmrc 추가


    @SCOPE=https://asia-northeast1-npm.pkg.dev/<YOUR_PROJECT>/<YOUR_REPOSITRY>/
    //asia-northeast1-npm.pkg.dev/<YOUR_PROJECT>/<YOUR_REPOSITRY>/:_password=""
    //asia-northeast1-npm.pkg.dev/<YOUR_PROJECT>/<YOUR_REPOSITRY>/:username=oauth2accesstoken
    //asia-northeast1-npm.pkg.dev/<YOUR_PROJECT>/<YOUR_REPOSITRY>/:[email protected]
    //asia-northeast1-npm.pkg.dev/<YOUR_PROJECT>/<YOUR_REPOSITRY>/:always-auth=true
    

  • @SCOPE : 여기에서는 @mycompany입니다
  • : GCP 프로젝트 이름
  • : 만든 리포지토리 이름 (myrepositry)

  • npm scripts 추가



    package.json
    scripts: {
      "artifactregistry-login": "npx google-artifactregistry-auth .npmrc"
    }
    
  • "prepublish"에 넣으면 좋지 않다고 생각하고 시도했지만, 위와 같이 다른 명령으로 하지 않으면 움직이지 않습니다
  • (prepublish에 들어가기 전에 .npmrc가 참조되는 것처럼)

  • publish


    $ npm run artifactregistry-login
    # ここで .npmrc を見ると、 _password が更新されていることがわかる
    $ npm publish
    > ...
    > + @mycompany/[email protected]
    



    install



    (install 대상에도 .npmrc/scripts 설정을 한 후에)
    $ npm run artifactregistry
    $ npm publish
    > ...
    > + @mycompany/[email protected]
    



    CI/CD 환경에서 npm install 하는 방법



    서비스 계정을 사용하는 방법이 공식에 작성되었습니다.
  • ServiceAccount 만들기
  • Artifact Registry 읽기 역할 부여

  • JSON 키를 다운로드하여 환경에 배치
  • export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account-key.json
    npm run artifactregistry-login
    npm i
    

    좋은 웹페이지 즐겨찾기