如何搭建ohpm-repo私仓库

562 阅读6分钟

搭建私仓的目的

ohpm-repo私仓官方文档

在Android和iOS开发中很多时候都以以二进制的产物的方式进行依赖和协作,

Android基于Mave为仓库,iOS有Pod为仓库,我们可以在官方提供的的平台使用别人开放的库,极大的提高了大家的开发效率。

但是有些公司业务相关的库并不想被外部人员使用,上传到外部共有的仓库就不是很安全,很多公司在内部搭建了私有仓库,一方面更加安全,另一方面平时推拉产物也更快。

鸿蒙也是同样的问题,我们可以方便的在官方仓库平台使用三方开放的产物,但是公司内部业务还是需要依赖私有仓库,本文基于官方提供的工具搭建属于自己的私有仓库。

搭建步骤

1 环境

必须有node.js,版本最好为v18.xxx以上

node.js 安装地址

image.png

2 下载 ohpm-repo 私仓工具包

下载 ohpm-repo 私仓工具包 最新工具 - 下载中心 - 华为开发者联盟

image.png

3 解压压缩包

image.png

4 配置环境变量

将ohpm-repo工具包解压目录中bin目录的路径配置到系统环境变量path中

image.png

打开cmd 输入指令

ohpm-repo -v

出现如下界面证明配置成功

image.png

如果出现报错

ERROR: ohpm has not been initialized yet. Execute the init.bat script to initialize it first.

大部分出现这个报错是因为没有node.js环境,或者node.js的版本太低,请检查node.js版本

5 配置config.yaml

进入 ohpm-repo 解压目录的 conf 目录内,打开 config.yaml

##### server configuration section #####
listen: 0.0.0.0:8088
# listen:
# - localhost:8088            # 监听本机环回地址
# - http://localhost:8088     # 监听本机环回地址
# - 0.0.0.0:8088              # 监听本机所有地址 (INADDR_ANY)
# 协议可配置 http 或者 https,默认为 http
# port: 1-65535(Windows系统)/ 1024-65535(Linux或Mac系统)

# 可选 (listen 为 https 协议时必须配置)
https_key: ''                 # https 服务使用的 key 的路径  (不配置默认为'')
https_cert: ''                # https 服务使用的 crt 的路径  (不配置默认为'')

##### server deploy root section #####
deploy_root: ''                # 安装根目录 (不配置默认为 `<现有用户home目录>/ohpm-repo`),只支持绝对路径,且路径目录必须存在

##### server numeric limit section #####
max_package_size: 100          # 上传包大小限制,单位是MB (0, 100],不配置默认为 100
max_extract_size: 500          # 压缩包解压后大小限制,单位是MB [max_package_size, 500],不配置默认为 500
max_extract_file_num: 10240    # 压缩包解压后文件个数限制 (0, 102400],不配置默认为 10240
user_rate_limit: 100           # 用户访问频率控制,单位是次/s (0, 10000],不配置默认为 100
fetch_timeout: 60              # 请求/响应的超时时间,单位是秒 (0, 3600],不配置默认为 60
keep_alive_timeout: 60         # TCP 保持连接的超时时间,单位是秒 (0, 3600],不配置默认为 60
api_timeout: 60                # api超时时间,单位是秒(0, 3600],不配置默认为 60
upload_lock_hour: 24           # 下架某一三方包所有版本后,限时禁止同名三方包上传,单位是小时 (0, 168],不配置,默认为 24
upload_max_times: 100          # 单用户24小时内上传次数限制 (0, 10000],不配置默认为 100

##### metadata storage section #####
## 数据存储类型 filedb 和 mysql 二选一,不可都配置
db:                         # 必须用 yaml 数组形式写法
  type: filedb
  config:                   # 如果想修改存储路径且保留旧的数据,则需要把旧路径下的数据文件迁移至新路径
    path: ./db              # 本地数据存储路径,不配置默认为<deploy_root>/db;

#db:                        # 必须用yaml数组形式写法
#  type: mysql
#  config:
#    host: "localhost"      # 数据库主机地址
#    port: 3306             # 数据库端口 (0,65535]
#    username: root         # 数据库的用户名
#    password: "password"   # 数据库的用户密码(请配置明文, 最终在部署目录中会转换为密文)
#    database: "repo"       # 数据库名

##### storage section #####
## 文件存储类型fs,sftp 和 custom 三选一,不可多选。

store:                               # 必须用 yaml 数组形式写法
  type: fs
  config:                            # 上传资源后如若要修改存储路径,则需要把旧路径下的数据迁移至新路径中
    path: ./storage                  # 已上架三方库存储路径,不配置默认为 <deploy_root>/storage;
    #server: http://localhost:8088   # 三方库下载链接,不配置默认取值

# 文件存储类型为 sftp 时,最多配置三个 sftp服务
#store:                               # 必须用 yaml 数组形式写法
#  type: sftp                         # 当且仅当 db 的类型为 mysql 时,store 的类型才能为 sftp
#  config:
#    location:
#      -
#        name: test_one_sftp          # 主机名字,名字不能与其他sftp配置重复
#        host: "localhost"            # 主机地址
#        port: 22                     # 主机端口 (0,65535]
#        read_username: "read"        # 主机有读权限的用户名字
#        read_password: "password"    # 主机有读权限的用户密码(请配置明文, 最终在部署目录中会转换为密文)
#        write_username: "write"      # 主机有写权限的用户名字
#        write_password: "password"   # 主机有写权限的用户密码(请配置明文, 最终在部署目录中会转换为密文)
#        path: /source22              # 相对 sftp 根目录的文件路径,仅限/开头,且路径文件夹必须存在
#      -
#        name: test_two_sftp
#        host: "localhost"
#        port: 24
#        read_username: "read"
#        read_password: "password"
#        write_username: "write"
#        write_password: "password"
#        path: /source24
#    #server: http://localhost:8088   # 本地仓库下载链接地址,不配置默认取 listen 的值、

#store:
#  type: custom                                            # custom是自定义存储插件类型,自定义存储插件开发流程见指导文档
#  config:
#    export_name: CustomStorage                            # 插件export的类名
#    plugin_path: ../plugins/CustomStorage.js              # 插件的绝对路径或者相对于ohpm-repo软件包的路径,建议将插件放在软件包的plugins目录下
#    custom_field: "test"                                  # 自定义字段,通过引入libs/common/getStorageConfigInfo.js的getStorageConfigInfo方法获取自定义字段的值
#    #server: http://localhost:8088                        # 本地仓库下载链接地址,不配置默认取listen的值
##### uplink section #####
uplink_cache_path: ./uplink      # 缓存路径,不配置默认为 <deploy_root>/uplink
uplink_cache_time: 168           # 远程包 metadata 缓存时间,单位为小时,默认 168 小时,取值范围为 (0, 8760]

##### log section #####
logs_path: ./logs                # 日志路径,不配置默认为 <deploy_root>/logs

##### log level section #####
# 日志级别: 级别由低到高分别是 all、trace、debug、info、warn、error、fatal、mark、off
# run,operate 和 access 不配置或者配置错误,默认为 info
loglevel_run: info
loglevel_operate: info
loglevel_access: info

直接替换我的文件即可

6 安装

进入ohpm-repo工具包解压目录中的 bin 目录下,执行安装命令:

ohpm-repo install

image.png

这个警告可以忽略

在 “config.yaml” 文件中将 “listen” 协议设置为 'http',这不安全,建议使用更安全的 'https' 协议

如果有强迫症可以去参考官方文档查看如何配置

快速开始-ohpm-repo私仓搭建工具-DevEco Service - 华为HarmonyOS开发者

7 启动

进入ohpm-repo工具包解压目录中的 bin 目录下,执行安装命令:

ohpm-repo start

image.png

启动成功进入网页

ohpm-repo 首次启动时,默认创建一个管理员账号

账号:admin

密码:12345Qq!

该账号在首次登录时,需要修改其密码,请修改密码后,重新登录该账号。

image.png