gpt4 book ai didi

github - 如何在 GitHub 操作中捕获 curl http 状态代码以确定成功/失败?

转载 作者:行者123 更新时间:2023-12-04 15:07:59 30 4
gpt4 key购买 nike

我对 GitHub Actions 非常陌生,所以请耐心等待......我正在尝试创建一个 GitHub Action,其中一个步骤是对 GitHub API 的 curl 调用。我想捕获该 curl 调用的 HTTP 状态代码,以确定该操作是否实际失败。现在,因为 curl 成功完成,它总是作为成功运行返回,即使 curl 响应可能具有错误的状态代码(例如 405、404、403 等)。
这是我的 curl 调用:

- name: Squash And Merge After Approval of PR
run: |
curl --request PUT \
--header 'authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' \
--header 'content-type: application/json' \
--url https://api.github.com/repos/${{ github.repository }}/pulls/${{ github.event.inputs.pr_num }}/merge \
--data '{
"merge_method": "squash",
"commit_title": "Squash and Merge for Pull Request ${{ github.event.inputs.pr_num }}",
"commit_message": "expected sha value = ${{ github.event.inputs.pr_head_sha }}",
"sha":"${{ github.event.inputs.pr_head_sha }}"
}'
我想我必须以某种方式包装我的 curl 命令才能将响应输出到变量中,或者?但是我不知道如何捕获 curl 响应,解析它,并检查状态代码以确定 curl 是否成功。
TIA。
PS:这是一个手动运行的 Action ,因此我在运行 Action 时从输入表单中提供“sha”和“pr number”。

最佳答案

此答案与您的 curl 问题有关 - 您可以将代码响应捕获为字符串的一种方式。

CODE=`curl --write-out '%{http_code}' \
--silent \
--output /dev/null \
--request PUT \
--header 'authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' \
--header 'content-type: application/json' \
--url 'https://api.github.com/repos/${{ github.repository }}/pulls/${{ github.event.inputs.pr_num }}/merge' \
--data '{ \
"merge_method": "squash", \
"commit_title": "Squash and Merge for Pull Request ${{ github.event.inputs.pr_num }}", \
"commit_message": "expected sha value = ${{ github.event.inputs.pr_head_sha }}", \
"sha":"${{ github.event.inputs.pr_head_sha }}" \
}'`

if [ $CODE!="200" ]
then
echo "FAILURE"
else
echo "SUCCESS"
fi
但是,如果请求失败 curl 命令应该返回一个失败代码
前任:
if curl "..."
then echo "SUCCESS"
else echo "FAILURE"
fi

关于github - 如何在 GitHub 操作中捕获 curl http 状态代码以确定成功/失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65728933/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com