我正在尝试使用bitbucket管道将我的构建apk上传到曲棍球应用程序,但是当我尝试运行我的脚本时,我得到了
bash: ./deploy-hockey-dev.sh: Permission denied
这是deploy-hockey-dev.sh
:
#!/bin/sh
# upload apk to hockey app
curl \
-F "status=2" \
-F "notify=0" \
-F "ipa=@app/build/outputs/apk/debug/app-debug.apk" \
-H "X-HockeyAppToken: myToken" \
https://rink.hockeyapp.net/api/2/apps/upload
有人知道这是什么问题吗?
答案 0 :(得分:3)
事实证明,在执行脚本之前,我必须使用- chmod +x deploy-hockey-dev.sh
,因此在执行脚本之前,在bitbucket中使用的.yml文件应具有此行。我做了tutorial,介绍了如何使整个过程对您有帮助。
答案 1 :(得分:1)
在我看来,这似乎是Linux权限问题,而不是编程问题。检查脚本是否具有可执行权限(ls -l
中的x位)。您可以咨询chmod(man chmod
或the Internet来了解Linux权限如何工作的详细信息,因为我认为这对本网站来说是不合时宜的。
答案 2 :(得分:0)
问题在于,在将文件检入BitBucket之前,该文件没有获得正确的执行权限。
如果您是在unix环境中本地开发,通常会在脚本文件上设置执行权限(即chmod 755),以便可以在提交之前在本地对其进行测试。使用这种方法,签入时不会在管道构建中遇到权限被拒绝的错误。
但是,有时我们在Windows上没有unix仿真器来编写脚本,因此我们只能在管道环境中测试脚本。即使Windows在其文件系统中不支持执行权限,我们仍然可以使用git显示和设置这些执行权限。
cd <dir-with-shell-scripts>
git ls-files --stage # show file permissions (last 3 digits of first number)
git update-index --chmod=+x <files> # set execute permissions
按照正常过程提交更新的文件。