codebox-npm, 使用https的无服务器专用npm注册表

分享于 

8分钟阅读

GitHub

  繁體 雙語
Private npm registry using https://serverless.com/
  • 源代码名称:codebox-npm
  • 源代码网址:http://www.github.com/craftship/codebox-npm
  • codebox-npm源代码文档
  • codebox-npm源代码下载
  • Git URL:
    git://www.github.com/craftship/codebox-npm.git
    Git Clone代码到本地:
    git clone http://www.github.com/craftship/codebox-npm
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/craftship/codebox-npm
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    

    ServerlessCircleCI StatusCoverage Status

    概述

    Codebox npm是无服务器npm注册表,允许那些希望保留它的知识产权的公司。 它允许共享公司内部的npm模块,但另外允许访问 public npm上的所有模块。 另一个主要区别是它将 npm login 身份验证替换为 github/github企业。 用户总是需要在使用codebox作为它的npm注册表时进行身份验证。

    它目前与最新版本的npm &纱线cli兼容。

    本地部署

    从本地机器部署自己的npm注册表的最快方法是遵循以下指南。

    先决条件

    • 注册了一个 github/github企业应用程序( 比如。 如果你需要Secret的话,你就会需要。
    • 在本地计算机上拥有足够的权限,可以在本地机器上部署无服务器资源,你可以在这里按照 Amazon 的标准指南进行。
    • 全局安装的最新版本的无服务器( npm install serverless -g 或者 yarn global add serverless )。
    步骤
    • serverless install --url https://github.com/craftship/codebox-npm/tree/0.21.2 --name my-npm-registry - 选择你希望注册的名称
    • cd my-npm-registry
    • npm install
    • 设置你的环境变量:
    
    export CODEBOX_REGION="eu-west-1" # Set the AWS region you wish your registry to be deployed to
    
    
    export CODEBOX_ADMINS="" # Comma seperated list of github usernames (e.g."jon,kadi"), these users will be the only ones able to publish
    
    
    export CODEBOX_REGISTRY="https://registry.npmjs.org/" # The NPM mirror you wish to proxy through to
    
    
    export CODEBOX_BUCKET="my-npm-registry-storage" # The name of the bucket in which you wish to store your packages
    
    
    export CODEBOX_GITHUB_URL="https://api.github.com/" # The GitHub/GitHub Enterprise **api** url
    
    
    export CODEBOX_GITHUB_CLIENT_ID="client_id" # The client id for your GitHub application
    
    
    export CODEBOX_GITHUB_SECRET="secret" # The secret for your GitHub application
    
    
    export CODEBOX_RESTRICTED_ORGS="" # OPTIONAL: Comma seperated list of github organisations to only allow access to users in that org (e.g."craftship,myorg"). Useful if using public GitHub for authentication, as by default all authenticated users would have access.
    
    
    
    
    • serverless deploy --stage prod ( 挑选你想要的)
    • npm set registry <url> - <url> 是部署完成后终端显示的基本 url,例如: https://abcd12345.execute-api.eu-west-1.amazonaws.com/dev/registry/

    在你的知识库中使用它

    确保开发人员使用正确的private 注册表url的最简单方法是设置 .npmrc 文件。 这包含npm将打开并确保每个存储库都设置了注册表的缺省设置。

    这对于希望开发人员允许发布和保留 private的存储库尤其有用。 下面是 .npmrc file: 示例

    
    registry=https://ab1cd3ef4.execute-api.eu-west-1.amazonaws.com/prod/registry
    
    
    always-auth=true
    
    
    
    

    如果用户在存储库中第一次执行 npm 操作,那么他们将需要进行 npm login 操作。 always-auth=true 允许在你的项目中支持纱线。

    npm login 用法

    在使用 private 注册表之后,需要始终使用npm进行身份验证。 这确保了不仅谁可以请求不与外部世界共享的private 包。

    如果你已经启用了命令,那么你可以使用 npm login 命令,以你的GitHub username.otp 比如 jonsharratt.123456 格式输入用户名。 一旦登录,将存储一个长生命标记,将用于前进。

    你现在可以正常使用npm命令了。

    yarn login 用法

    设置纱线认证最好的方法是做一个初始 npm login,如果启用了它,它可以支持 2FA 登录。

    完成之后,确保在上面的"在你的知识库中使用它"指南中有一个基于项目的.npmrc 配置设置。 always-auth=true 选项可以确保纱线与你的codebox-npm 注册表一起工作。

    Yarn不需要显式的yarn login,因为它使用的是 .npmrc 配置。

    管理员/发布软件包

    npm publish 正常工作,它通过 npm CLI正常工作。 默认情况下,身份验证的所有用户都具有只读访问权限。 如果希望允许发布权限,那么你需要将 CODEBOX_ADMINS 环境变量设置为一个逗号分隔的GitHub列表,如 jonsharratt,kadikraman 和部署。

    与你的CI建立联系

    我们建议创建一个可以将你的团队表示为服务帐户的GitHub用户。 创建后,可以将该帐户用于 npm login 到 private 注册表。

    然后需要获取生成的令牌和登录 url ( 注意登录url与注册表url不相同)。 通过运行 cat ~/.npmrc 来执行这里操作。 例如应该看到如下所示的条目:

    
    //ab12cd34ef5.execute-api.eu-west-1.amazonaws.com/prod/:_authToken=dsfdsf678sdf78678768dsfsduihsd8798897989
    
    
    
    

    在CI工具中,你可以设置以下 环境变量 ( 比如。 使用上面的示例:

    
    NPM_REGISTRY_LOGIN_URL=//ab12cd34ef5.execute-api.eu-west-1.amazonaws.com/prod/
    
    
    NPM_AUTH_TOKEN=dsfdsf678sdf78678768dsfsduihsd8798897989
    
    
    
    

    如果你的word允许你访问,你应该在存储库的root 中有一个 .npmrc 文件,如上所述。

    然后在任何 npm install/包安装之前作为预构建步骤执行以下步骤,将验证url注入到 .npmrc 文件中。

    
    echo"$NPM_REGISTRY_LOGIN_URL:_authToken=$NPM_AUTH_TOKEN">> . npmrc
    
    
    
    

    注意:你可以使用你的private 注册表为所有存储库重用这里构建步骤。

    自定义域

    如果你对AWS领域的Codebox满意并且希望将它的移动到自定义域,则可以在AWS网站的上找到指示。

    一旦你拥有自定义域设置,你需要确保已经发布的软件包通过运行以下命令( 只提供自定义域的主机) 来迁移:

    serverless codebox domain --stage yourstage --host custom-domain.com

    其他资源

    博客( 以前命名的Yith )

    常见问题解答


    Server  HTTP  Https  私有  NPM  Registry  
    相关文章