【问题标题】:Overwriting a file from GitLab using curl使用 curl 从 GitLab 覆盖文件
【发布时间】:2022-01-11 16:16:09
【问题描述】:

我需要使用 curl 用新内容覆盖 GitLab 文件。 GET 请求按预期工作,但我对替换文件内容的 PUT 请求有问题。

以下链接在浏览器中成功返回文件内容:

https://<GITLAB-URL>/api/v4/projects/<PROJECT-ID>/repository/files/<FILENAME>/raw/?ref\=master

这是无法将 FILE-CONTENT.txt 的内容复制到 TARGET-FILE.txt 的 curl 请求。它返回一个HTTP/1.1 400 Bad Request 错误消息。

curl -v --request PUT --header "PRIVATE-TOKEN:<READ-WRITE-API-TOKEN>" -F "branch=master" -F "author_email=email" -F "author_name=me" -F "content=</PATH/FILE-CONTENT.txt>" -F "commit_message=TEST" " https://<GITLAB-URL>/api/v4/projects/<PROJECT-ID>/repository/files/<TARGET-FILE.txt>/raw/?ref\=master"

请告知正确的方法和语法。

【问题讨论】:

    标签: curl gitlab put overwrite


    【解决方案1】:

    只是为了确保我正确理解您的问题: 您是否尝试通过在自动管道中使用 curl 来修改存储库中的文件?

    如果是这样,我认为这不是故意的。如果要复制在自动管道中生成的文件的内容,请在CI 文件中将其标记为artifact。然后可以通过 curl 访问该工件。

    如果您只想在脚本中修改文件,我不明白您为什么不使用读写访问令牌使用git commit + git push

    编辑: 首先,将内容复制到 pipeline-job 中的目标文件,并通过修改您的 .gitlab-ci.yml 文件将其公开为工件:

    job_name:
      script:
          - # Process that creates FILE-CONTENT.txt
          - cp <path-to>/FILE-CONTENT.txt /TARGET.txt      
      artifacts:
        paths:
          - /TARGET.txt
    

    然后使用 curl 和作业 API,如 herehere 所述。要检查工件是否已正确创建,您还可以导航到 Web UI 的 CI/CD 功能区中的作业,应该有一个按钮来下载和浏览工件。

    【讨论】:

    • 乔纳森,这是正确的,我正在尝试使用 curl 从我的 GitLab 存储库中修改我的文件。请澄清你的第二段,因为我不明白。你的意思是我的要求是不可能的吗?另外,仅供参考,我试图弄清楚的 curl 请求将从 AWS 中的 Lambda 函数运行,并且我试图避免使用 git 命令。感谢您的反馈。
    • 嗨,Alex,我在第二个问题中试图暗示的概念问题如下:如果管道是由推送事件触发的,那么作业中的另一个推送事件基本上会递归地触发管道。因此,不建议从管道中更改版本控制文件
    • 第三段是关于 git 版本控制的基本概念。如果您更改属于存储库的文件,则应始终通过 git 将更改应用于远程服务器,因为它们应由 git 捕获。所以我认为可能无法通过服务器端的 curl 更改跟踪的文件。如果您可以指定要更改的文件的用途,也许我可以更多地说明我将如何做到这一点(例如,它是一个文档)。干杯
    • 乔纳森,这个文件 (FILE-CONTENT.txt) 包含一个令牌,该令牌将每 24 小时更新一次,需要复制到 TARGET.txt 中。
    • 我假设这个令牌随后被另一个脚本通过例如下载。卷曲?这听起来很像 TARGET.txt 应该作为管道工件公开。可以通过 web-UI 和 curl 访问工件。如果这听起来合理,我将使用相应的源代码和示例代码设置答案。
    猜你喜欢
    • 1970-01-01
    • 2018-06-10
    • 1970-01-01
    • 1970-01-01
    • 2020-12-29
    • 1970-01-01
    • 2019-10-21
    • 2014-04-08
    • 2016-11-05
    相关资源
    最近更新 更多