Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Github:使用Bash上载发布资产_Bash_Github_Release_Autorelease - Fatal编程技术网

Github:使用Bash上载发布资产

Github:使用Bash上载发布资产,bash,github,release,autorelease,Bash,Github,Release,Autorelease,我想通过GithubAPI了解发布资产上传。 除此之外 , 我没有发现任何最近的例子 我创建了以下Bash脚本: #!/bin/sh ## Make a draft release json with a markdown body release='"tag_name": "v1.0.0", "target_commitish": "master", "name": "myapp", ' body="This is an automatic release\\n====\\n\\nDetai

我想通过GithubAPI了解发布资产上传。 除此之外 , 我没有发现任何最近的例子

我创建了以下Bash脚本:

#!/bin/sh

## Make a draft release json with a markdown body
release='"tag_name": "v1.0.0", "target_commitish": "master", "name": "myapp", '
body="This is an automatic release\\n====\\n\\nDetails follows"
body=\"$body\"
body='"body": '$body', '
release=$release$body
release=$release'"draft": true, "prerelease": false'
release='{'$release'}'
url="https://api.github.com/repos/$owner/$repo/releases"
succ=$(curl -H "Authorization: token $perstok" --data $release $url)

## In case of success, we upload a file
upload=$(echo $succ | grep upload_url)
if [[ $? -eq 0 ]]; then
    echo Release created.
else
    echo Error creating release!
    return
fi

# $upload is like:
# "upload_url": "https://uploads.github.com/repos/:owner/:repo/releases/:ID/assets{?name,label}",
upload=$(echo $upload | cut -d "\"" -f4 | cut -d "{" -f1)
upload="$upload?name=$theAsset"
succ=$(curl -H "Authorization: token $perstok" \
     -H "Content-Type: $(file -b --mime-type $theAsset)" \
     --data-binary @$theAsset $upload)

download=$(echo $succ | egrep -o "browser_download_url.+?")  
if [[ $? -eq 0 ]]; then
    echo $download | cut -d: -f2,3 | cut -d\" -f2
else
     echo Upload error!
fi
当然,
perstok
owner
repo
变量导出个人访问令牌、所有者名称和repo名称,
资产
是要上载的资产文件名

这是上传发布资产的正确方式吗

我是否需要添加一个
Accept
标题?我找到了一些例子

-H "Accept: application/vnd.github.manifold-preview" 
但对我来说,它们似乎过时了

对于Windows可执行文件,是否有特定的媒体(mime)类型?

您有另一种:

内容类型:应用程序/octet流
应该具有足够的通用性,可以支持任何文件,而不必担心其MIME。

我找到了一位官员:

在预览期间,您需要在
Accept
标题中提供自定义媒体类型:
application/vnd.github.manifold preview+json

现在预览期已经结束,您不再需要传递此自定义媒体类型

无论如何,尽管不是必需的,但建议使用以下
Accept
标题:

application/vnd.github.v3+json

通过这种方式,将请求API的特定版本,而不是当前版本,并且应用程序将继续工作,以防将来发生重大更改。

捕捉得很好,比我的答案更准确+1.
${GITHUB_OAUTH_TOKEN:?must be set to a github access token that can add assets to $repo} \
${GITHUB_OAUTH_BASIC:=$(printf %s:x-oauth-basic $GITHUB_OAUTH_TOKEN)}
application/vnd.github.v3+json