• 极狐gitlab python pypi packages 仓库使用


    极狐gitlab python pypi packages 仓库使用

    官方文档:PyPI packages in the Package Registry | GitLab

    使用到工具:

    限制:

    • package 包大小最大 5GB
    • 不能多次上传同一 version 的包,会收到 400 错误

    1. 创建 package

    1.1 创建 python 项目

    添加文件

    touch __init__.py
    touch greet.py
    

    greet.py 添加内容:

    def SayHello():
        print("Hello from MyPyPiPackage")
        return
    

    __init__.py 添加内容:

    from .greet import SayHello
    

    1.2 创建 package

    添加 setup.py

    import setuptools
    
    setuptools.setup(
        name="mypypipackage",
        version="0.0.1",
        author="Example Author",
        author_email="author@example.com",
        description="A small example package",
        packages=setuptools.find_packages(),
        classifiers=[
            "Programming Language :: Python :: 3",
            "License :: OSI Approved :: MIT License",
            "Operating System :: OS Independent",
        ],
        python_requires='>=3.6',
    )
    

    执行命令:

    python3 setup.py sdist bdist_wheel
    

    完成后会在 dist 目录生成目标文件:

    $ ls dist
    mypypipackage-0.0.1-py3-none-any.whl mypypipackage-0.0.1.tar.gz
    

    下一步就是把目标文件发布的 package 仓库

    2. 上传到 package 仓库

    上传前需要登陆到极狐gitlab package 仓库,登陆到 package 仓库有 3 种方式:

    2.1 使用 personal access token

    创建配置文件 ~/.pypirc

    [distutils]
    index-servers =
        gitlab
    
    [gitlab]
    repository = https://gitlab.example.com/api/v4/projects/<project_id>/packages/pypi
    username = <your_personal_access_token_name>
    password = <your_personal_access_token>
    
    • 其中 <project_id> 是项目 url 编码路径,比如 group%2Fproject,也可以是项目 ID

    上传到 package 仓库:

    python3 -m twine upload --repository gitlab dist/*
    

    2.2 使用 deploy token

    创建配置文件 ~/.pypirc

    [distutils]
    index-servers =
        gitlab
    
    [gitlab]
    repository = https://gitlab.example.com/api/v4/projects/<project_id>/packages/pypi
    username = <deploy token username>
    password = <deploy token>
    
    • 其中 <project_id> 是项目 url 编码路径,比如 group%2Fproject,也可以是项目 ID

    上传到 package 仓库:

    python3 -m twine upload --repository gitlab dist/*
    

    2.3 使用 ci job token

    .gitlab-ci.yml 示例:

    image: python:latest
    
    variables:
      PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
    
    cache:
      paths:
        - .cache/pip/
      key: $CI_PROJECT_ID
    
    run:
      script:
        - pip install twine
        - python setup.py sdist bdist_wheel
        - TWINE_PASSWORD=${CI_JOB_TOKEN} TWINE_USERNAME=gitlab-ci-token python -m twine upload --repository-url ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi --verbose dist/*
    

    当然也可以创建配置文件 ~/.pypirc

    [distutils]
    index-servers =
        gitlab
    
    [gitlab]
    repository = https://gitlab.example.com/api/v4/projects/${env.CI_PROJECT_ID}/packages/pypi
    username = gitlab-ci-token
    password = ${env.CI_JOB_TOKEN}
    

    2.4 查看上传的 package

    项目 > Packages & Registries > Package Registry

    注意:上传到项目仓库时,组仓库也是可以看到并使用的

    3. 使用 package

    从极狐gitlab v14.2 版本开始,如果在 package 未在 package 仓库中找到,则请求会重定向到 pypi.org

    当然可以在系统设置中关闭重定向:admin > settings > CI/CD > Package Registry > Forward PyPI package requests to the PyPI Registry if the packages are not found in the GitLab Package Registry

    3.1 从项目级别安装

    pip install --index-url https://<personal_access_token_name>:<personal_access_token>@gitlab.example.com/api/v4/projects/<project_id>/packages/pypi/simple --no-deps <package_name>
    
    • <package_name> 包名称

    • <personal_access_token_name> 个人 token 名称,权限 read_api

    • <personal_access_token> 个人 token

    • <project_id> 是项目 url 编码路径,比如 group%2Fproject,也可以是项目 ID

    安装 mypypipackage 命令为:

    pip install mypypipackage --no-deps --index-url https://<personal_access_token_name>:<personal_access_token>@gitlab.example.com/api/v4/projects/<your_project_id>/packages/pypi/simple
    

    3.2 从组级别安装

    pip install --index-url https://<personal_access_token_name>:<personal_access_token>@gitlab.example.com/api/v4/groups/<group_id>/-/packages/pypi/simple --no-deps <package_name>
    
    • <package_name> 包名称

    • <personal_access_token_name> 个人 token 名称,权限 read_api

    • <personal_access_token> 个人 token

    • <group_id> 组 ID

    安装 mypypipackage 命令为:

    pip install mypypipackage --no-deps --index-url https://<personal_access_token_name>:<personal_access_token>@gitlab.example.com/api/v4/groups/<your_group_id>/-/packages/pypi/simple
    

  • 相关阅读:
    The Lobo Project: Home of Lobo (Java Web Browser) and Cobra (HTML Rendering Engine)
    基于DOM树的网页相似度研究与应用《大连理工大学》2011年硕士论文
    学习用 c/c++写crawler
    终于用上gcc4.1编译的系统了
    Android 查找SDCard 下面的文件 函数
    对HTML5 Device API相关规范的解惑
    Windows Phone开发(14):数据模板
    Windows Phone开发(13):如何规范用户的输入行为
    InputScope的62个值
    转:Windows Phone 7 设计简介
  • 原文地址:https://www.cnblogs.com/leffss/p/16476305.html
Copyright © 2020-2023  润新知