使用Pyinstaller更新私有GitHub / Bitbucket存储库

16
我试图将pyinstaller与私有repo的更新功能集成。我的问题是,是否有一种方法可以将pyupdater与免费替代方案(如:bitbucket私有repo)集成?Pyupdater通常适用于公共repo,但我无法弄清楚如何在私有repo上实现这一点。
配置文件:
class ClientConfig(object):
    PUBLIC_KEY = 'None'
    APP_NAME = 'dad123'
    COMPANY_NAME = 'dad123'
    UPDATE_URLS = ['ssh://git@bitbucket.org/Tysondogerz/ssh/download']
    MAX_DOWNLOAD_RETRIES = 3

创建一个ssh很容易:

ssh-keygen -t rsa -C "youremail@example.com"

那么...

Main.py

#!/usr/bin/env python3
from __future__ import print_function
import time
import argparse
import os
import signal
import sys
import logging
from selenium import webdriver
 
logging.basicConfig(level=logging.DEBUG)
 
from client_config import ClientConfig
from pyupdater.client import Client, AppUpdate, LibUpdate
 
Ssh_key  = DWDJKWNADKJWANDJKWANDWJKDNAWJKDNWAKDNWAJDKWANDJKWANDWAJKDNWAKJDWNADKJWANDWAJKDNAWJKDNWAJKDNWAJKDWNADJKWANDJKWANDKJWADNWAJKDNWAJKNWQWQDWQNDJKQWNDJKWQNDWQJKDNWQJKDNWKJDNWKJANDWJKNDWJKNDWDUWDNWDHDUIWHDIUWHDUIWHDUIWHDIUWHDUIWHDWUDHWUIHDWUDHUhottyouremail@example.com
 
    client = Client(ClientConfig(), ssh={'ssh_key'})
     
    from pyupdater.client import Client
from client_config import ClientConfig


def print_status_info(info):
    total = info.get(u'total')
    downloaded = info.get(u'downloaded')
    status = info.get(u'status')
    print downloaded, total, status


client = Client(ClientConfig())
client.refresh()

client.add_progress_hook(print_status_info)


client = Client(ClientConfig(), refresh=True,
                        progress_hooks=[print_status_info])

lib_update = client.update_check(ASSET_NAME, ASSET_VERSION)

lib_update = client.update_check(ASSET_NAME, ASSET_VERSION, channel='beta')

if lib_update is not None:
    lib_update.download()
        driver = webdriver.Firefox()
        driver.get('http://stackoverflow.com')
 
 
if __name__ == "__main__":
    main()

如果这个相对路径是一个常量,为什么不直接将其附加到 ClientConfig.UPDATE_URLS[0] 上呢? - Hetzroni
将您的代码升级为 [mcve]。看起来您正在获取某个非常特定的 API / 库调用错误 -- 只保留该部分,其余部分不相关。 - ivan_pozdeev
@user9099,那看起来不像是完整的路径,例如尝试这个:https://bitbucket.org/Tysondogerz/dwaddwadaw/src/master - denfromufa
您是否正在尝试使用SSH密钥对HTTPS端点(https://api.bitbucket.org/2.0/repositories/Tysondogerz/more/downloads)进行身份验证? - Jim Redmond
1
应用程序密码:https://confluence.atlassian.com/bitbucket/app-passwords-828781300.html - Jim Redmond
显示剩余2条评论
1个回答

2

通过SSH无法访问下载部分。您需要使用其他形式的身份验证方式通过HTTPS检索这些文件。(应用程序密码可能是最佳选择,因为它们可以非常具体地进行作用域设置,并在必要时丢弃。)


这个能否在不需要提供我的用户名和密码的情况下访问?比如公共仓库和应用密码以保护隐私。 - user9155788
我可能说错了,但这可能是一个好的方法。到目前为止:SSH不可行,简单认证和oauth2需要您提供给他人您的用户名和密码。认证令牌会给他们管理员访问权限...但他们仍然需要用户名和密码登录。应用程序密钥。希望可行,但很可能你必须交出用户名和密码:\ - user9155788
应用程序密码与您的常规密码分开,不能用于登录GUI。您还可以限制每个应用程序密码的权限。 - Jim Redmond
我不确定你是否有任何想法如何实现?我正在阅读一些他们的文档,但它们适用于旧版本的API 1.0。 - user9155788

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接