首页 > 解决方案 > 使用 ansible 从私有 github 项目下载最新版本的二进制文件

问题描述

我的 github 版本附加了二进制文件。存储库是私有的。我可以使用以下命令下载带有 curl 的二进制文件

curl -O \
  --url https://github.com/myproject/releases/download/main-db24b21d/binary \
  --header 'Authorization: Basic <token>'

我很想通过调整 Stackoverflow 中提出的非常相似的问题来在 ansible 中做同样的事情。但是,我无法get_url下载二进制文件。我在ansible中有以下部分


    - name: Download binary from Github
      get_url:
       url: "https://github.com/myproject/releases/download/main-db24b21d/binary"
       dest: "/home/user/server"
       force_basic_auth: yes
       username: <username>
       password: <password> 

我也试过

    - name: Download binary from Github
      get_url:
       url: "https://github.com/myproject/releases/download/main-db24b21d/binary"
       dest: "/home/user/server"
       headers:
         Authorization: <token>

我可以get_url在存储库公开时使用下载。谁能指出我错过了什么?

标签: ansible

解决方案


所以我使用browser_download_url,它适用于curl但它不适用于get_url我不知道为什么,我检查了Github api文档并尝试通过assets enpoint获取二进制文件,看起来它

    - name: downloading binary 
      get_url:
         url: "https://api.github.com/repos/{owner}/{project}/releases/assets/{id} "
         dest: "/home/build"
         username: ""
         password: ""
         force_basic_auth: yes
         headers:
           accept: "application/octet-stream"
      tags:
        - api_

推荐阅读