从Gitlab管道上载到pypi

2024-05-12 20:51:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用Gitlab CI作业将一个包上载到pypi,但我无法使其正常工作:/Anyone have a working example?在

到目前为止,我在我的.gitlab-ci.yaml(在我的本地计算机上,所有这些都在工作):

  1. .pypirc文件缠绕在一起

    - echo "[distutils]" >> ~/.pypirc
    - echo "index-servers =" >> ~/.pypirc
    - echo "    pypi" >> ~/.pypirc
    - echo "" >> ~/.pypirc
    - echo "[pypi]" >> ~/.pypirc
    - 'echo "repository: https://upload.pypi.org/legacy/" >> ~/.pypirc'
    - 'echo "username: ${PYPI_USER}" >> ~/.pypirc'
    - 'echo "password: ${PYPI_PASSWORD}" >> ~/.pypirc'
    - python3 setup.py check sdist bdist  # This will fail if your creds are bad.
    - cat ~/.pypirc
    - twine upload dist/* --config-file ~/.pypirc
    
  2. 与之前相同,但带有$VARIABLE

    ^{2美元
  3. 前两个选项,但使用python setup.py ... upload

  4. twine upload dist/* -u $PYPI_USER -p $PYPI_PASSWORD
  5. twine upload dist/*使用TWINE_USERNAMETWINE_PASSWORD环境变量。在

。。。总是得到一个403 Client Error: Invalid or non-existent authentication information。我已经没有选择了。。。在


Tags: pyechopypicidist作业setupgitlab
3条回答

我只是使用TWINE_USERNAMETWINE_PASSWORD变量,这是现成的。在

{将图片中的一个替换成你想要的部分:

pypi:
    image: docker.km3net.de/base/python:3
    stage: release
    cache: {}
    script:
        - pip install -U twine
        - python setup.py sdist
        - twine upload dist/*
    only:
        - tags

并在GitLab中的“设置”->;CI/CD->;variables(https://your-gitlab-instance.oerg/GIT_NAMESPACE/GIT_PROJECT/settings/ci_cd)下添加环境变量:

GitLab CI/CD Variables

以下是成功的管道:

PyPI Release Pipeline

如果出现EOF问题,请确保更改要保护的设置/存储库/标记,以便它们可以再次工作。我已经发布了here一个更完整的描述。在

我用你的代码修改过的版本实现了这一点:

pypi:
  stage: upload
  script:
  - pip install twine
  - rm -rf dist
  - echo "[distutils]" >> ~/.pypirc
  - echo "index-servers =" >> ~/.pypirc
  - echo "    nexus" >> ~/.pypirc
  - echo "" >> ~/.pypirc
  - echo "[nexus]" >> ~/.pypirc
  - echo "${PYPI_REPO}" >> ~/.pypirc
  - echo "${PYPI_USER}" >> ~/.pypirc
  - echo "${PYPI_PASSWORD}" >> ~/.pypirc
  - python3 setup.py check sdist bdist  # This will fail if your creds are bad.
  - python setup.py sdist bdist_wheel
  - twine upload -r nexus dist/*.tar.gz

区别在于我没有使用“'”,并且去掉了yaml中的冒号;相反,我将秘密的值设置为例如username: myuser

相关问题 更多 >