Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Azure Pipelines enables developers to publish Python packages to Azure Artifacts feeds and public registries such as PyPi. This article will guide you through how to publish Python packages to your Azure Artifacts feed.
Prerequisites
An Azure DevOps organization and a project. Create an organization or a project if you haven't already.
An Azure Artifacts feed. Create a feed if you don't have one already.
Authenticate with a feed
To publish Python packages using twine, you must first authenticate with your Azure Artifacts feed. The TwineAuthenticate task provides twine credentials to a PYPIRC_PATH environment variable. This variable is then used bytwine to publish packages directly from your pipeline.
მნიშვნელოვანი
The credentials stored in the PYPIRC_PATH environment variable take precedence over those in the .ini and .conf files.
If you add multiple TwineAuthenticate tasks at different stages in your pipeline, each task execution will extend (not override) the existing PYPIRC_PATH environment variable.
Sign in to your Azure DevOps organization, and then navigate to your project.
Select Pipelines, and then select your pipeline definition.
Select Edit, and then add the following snippet to your YAML pipeline.
YAML
steps:- task:UsePythonVersion@0 displayName:'Use Python 3.x'- task:TwineAuthenticate@1 inputs: artifactFeed:<PROJECT_NAME/FEED_NAME>## For an organization-scoped feed, use: artifactFeed: <FEED_NAME>
Sign in to your Azure DevOps organization, and then navigate to your project.
Select Pipelines, select your pipeline definition, and then select Edit.
Select the + sign to add a new task, then add the Use Python version and the Python twine upload authenticate tasks to your pipeline definition. You can leave the UsePythonVersion@0 task with the default settings and configure the TwineAuthenticate@1 as follows:
Select your feed from the My feed name dropdown menu. To authenticate with a feed outside your organization, select a Feed from external organizations and create a new service connection.
Publish Python packages to a feed
Note
To publish your packages to a feed using Azure Pipelines, make sure that both the Project Collection Build Service and your project's Build Service identities are assigned the Feed Publisher (Contributor) role in your feed settings. See Manage permissions for details.
Sign in to your Azure DevOps organization, and then navigate to your project.
Select Pipelines, select your pipeline definition, and then select Edit.
Select the + sign to add a new task, then add the Use Python version task to your pipeline. In this example we're setting the Version spec to >= 3.7.
Add the Command line task to your pipeline, and paste the following commands into the Script textbox to install build and twine on your agent:
command
pip install build
pip install twine
Add another Command line task to your pipeline, and then paste the following command into the Script textbox to build your project:
command
python -m build -w
Add for the Twine Authenticate task to your pipeline, and select your feed from the My feed name dropdown menu.
Add another Command line task to your pipeline, and paste the following command into the Script textbox to publish your package to your feed, replacing the placeholder with your feed's name:
შემოუერთდით Meetup სერიას, რათა შექმნათ მასშტაბური AI გადაწყვეტილებები რეალურ სამყაროში გამოყენების შემთხვევებზე დაყრდნობით თანამემამულე დეველოპერებთან და ექსპერტებთან.
In this module, the Space Game web team guides you through creating a build pipeline that produces a package that can be used by multiple applications.
Manage data ingestion and preparation, model training and deployment, and machine learning solution monitoring with Python, Azure Machine Learning and MLflow.
Authenticate for uploading Python distributions using twine. Add '-r FeedName/EndpointName --config-file $(PYPIRC_PATH)' to your twine upload command. For feeds present in this organization, use the feed name as the repository (-r). Otherwise, use the endpoint name defined in the service connection.