HarmonyOS 执行ohpm publish 时,解决需要手动输入 passphrase的问题?

请问下 执行ohpm publish时 发布har到私仓时,提示输入passphrase

what is your passphrase of the private key:

因为执行ohpm publish时,是脚本自动化完成的。

如何配置一下这个passphrase,不需要用户手动输入呢?

使用ssh-agent来管理你的SSH密钥。

eval $(ssh-agent -s) 
ssh-add ~/.ssh/id_rsa

添加之后。Enter passphrase for /Users/xxx/teemo_hm:

Identity added: /Users/xxx/teemo_hm (/Users/xxx/teemo_hm)

执行oohpm publish 时,依然需要手动输入 passphrase?

HarmonyOS
2024-08-23 11:07:25
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Heiang

cd har包所在目录

expect<<- END

set timeout 60

spawn ohpm publish ./har包名称

expect { 
“private key:” {send “${ohpm_private_key}\r”} 
} 
expect eof 
exit

注:expect语法不支持缩进,如果是在方法中调用,请去除缩进,类似下面的写法

function uploadhsp() { 
  cp test_shar_library/build/default/outputs/default/<math><semantics><mrow><mrow><mi>p</mi><mi>a</mi><mi>c</mi><mi>k</mi><mi>a</mi><mi>g</mi><msub><mi>e</mi><mi>n</mi></msub><mi>a</mi><mi>m</mi><mi>e</mi></mrow><mi mathvariant="normal">.</mi><mi>e</mi><mi>x</mi><mi>p</mi><mi>e</mi><mi>c</mi><mi>t</mi><mo><</mo><mo><</mo><mo>−</mo><mi>E</mi><mi>N</mi><mi>D</mi><mi>s</mi><mi>e</mi><mi>t</mi><mi>t</mi><mi>i</mi><mi>m</mi><mi>e</mi><mi>o</mi><mi>u</mi><mi>t</mi><mn>6</mn><mn>0</mn><mi>s</mi><mi>p</mi><mi>a</mi><mi>w</mi><mi>n</mi><mi>o</mi><mi>h</mi><mi>p</mi><mi>m</mi><mi>p</mi><mi>u</mi><mi>b</mi><mi>l</mi><mi>i</mi><mi>s</mi><mi>h</mi><mi mathvariant="normal">.</mi><mi mathvariant="normal">/</mi></mrow><annotation encoding="application/x-tex">{package_name} . expect<<- END set timeout 60 spawn ohpm publish ./</annotation></semantics></math>package 
  n 
 ame.expect<<−ENDsettimeout60spawnohpmpublish./{package_name} 
  expect { 
“private key:” {send “hmsAdmin_123\r”} 
  } 
  expect eof 
  exit 
  END 
} 
uploadhsp

建议网上搜索“linux expect教程”能够获取更多、更详细的指导,使用expect确实可解决命令行交互密码输入问题。

同时,另一个种解决方式,使用公私钥的方式,推送软件包不需要输入密码,类比git push 在配置好git仓与本地的公私钥可避免输入密码。关于公私配置可参考“使用命令行工具发布”:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-ohpm-repo-quickstart-0000001796357485

expect不属于HarmonyOS开发范围。

expect问题是linux解决自动化脚本命令交互问题的工具,典型场景“password的输入问题”,但各发行版之间语法是有细微差距的,我们难以给出精确答复,还请您能理解。

我们给的样例脚本可作为方向性参考,并已经在很多开发者中得到实践。针对您目前私仓及流水线搭建现状判断,可以给您以下建议:

解决方式一(优选,工作量最小):使用expcect解决密码输入问题,建议根据您使用的expect版本确认语法细节再编写脚本。以下网上资料仅作为参考:

https://xstarcd.github.io/wiki/shell/expect_handbook.html

https://blog.csdn.net/qq_41337034/article/details/110428341

解决方式二: 可参考以下SSH公私钥的配置方式。此方式来历史案例库,已经过其它开发者验证,但是上传的为共仓。私仓原理一样,可供参考:

1利用工具 ssh-keygen 生成公、私钥文件,可执行以下命令:

ssh-keygen -m PEM -t RSA -b 4096 -f your_key_path

注意:OHPM包管理器只支持加密密钥认证,请在生成公私钥时输入密码。

2.使用华为开发者账号登录DevEco Marketplace,点击主 页右上角的个人中心-> 安全-> OHPM公钥->新增,将公钥文件(your_publicKey.pub)中的内容粘贴到公钥输入框中。

3.点击的个人中心-> 我-> 发布码->复制,将发布码配置到.ohpmrc文件中publish_id字段,可执行如下命令:

ohpm config set publish_id youy_publish_id

4.将对应私钥文件路径配置到.ohpmrc文件中key_path字段,可在命令行中执行以下命令进行配置:

ohpm config set key_path your_key_path

解决方式三(此方式需要升级ohpm-repo版本,对当前私仓有升级改造工作量):ohpm-repo 2.1版本可使用AccessToken功能避免输入密码.

相关文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-ohpmrc-0000001749437724#section74219299467

私仓升级指导:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-upgrade-110_to_2xx-0000001752428110

已于2024-8-23 21:47:52修改
分享
微博
QQ
微信
回复
2024-08-23 21:45:51
相关问题
ohpm publish问题,该如何解决
368浏览 • 1回复 待解决
HarmonyOS HAR publish需要密码问题
696浏览 • 1回复 待解决
ohpm publish 推送har包大小限制
678浏览 • 1回复 待解决
ohpm-repo上传产物如何跳过输入密码
698浏览 • 1回复 待解决
HarmonyOS onBackPress执行异常问题
606浏览 • 1回复 待解决
HarmonyOS web控件执行多次问题
492浏览 • 1回复 待解决
HarmonyOS 动画执行时机问题
257浏览 • 1回复 待解决