Module 6 : Azure Artifacts
Qu'est-ce qu'Azure Artifacts ?
Azure Artifacts permet de créer, héberger et partager des packages :
+----------------------------------------------------------+
| AZURE ARTIFACTS |
+----------------------------------------------------------+
| |
| Feeds (flux de packages) |
| | |
| +-- NuGet (.NET) |
| +-- npm (JavaScript) |
| +-- Maven (Java) |
| +-- Python (pip) |
| +-- Universal Packages |
| |
+----------------------------------------------------------+
Créer un Feed
# Via le portal ou CLI
# Artifacts > Create Feed
Feed: folab-packages
Visibility: Members of DataLab-Lab organization
Upstream sources:
- nuget.org
- npmjs.com
- pypi.org
Publier un package Python
# Structure du package
folab-transformations/
+-- folab_transformations/
| +-- __init__.py
| +-- esg.py
| +-- utils.py
+-- tests/
+-- setup.py
+-- pyproject.toml
# setup.py
from setuptools import setup, find_packages
setup(
name="folab-transformations",
version="1.0.0",
packages=find_packages(),
install_requires=[
"pandas>=1.5.0",
"pyspark>=3.3.0"
]
)
# Pipeline pour publier
- stage: Publish
jobs:
- job: PublishPackage
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.10'
- script: |
pip install build twine
python -m build
displayName: 'Build package'
- task: TwineAuthenticate@1
inputs:
artifactFeed: 'folab-packages'
- script: |
twine upload -r folab-packages dist/*
displayName: 'Publish to Artifacts'
Consommer un package Python
# Configurer pip pour utiliser le feed
# pip.conf ou pip.ini
[global]
index-url=https://pkgs.dev.azure.com/mycompany-folab/_packaging/folab-packages/pypi/simple/
# Ou via variable d'environnement
export PIP_INDEX_URL=https://pkgs.dev.azure.com/mycompany-folab/_packaging/folab-packages/pypi/simple/
# Installer le package
pip install folab-transformations
# Dans un notebook Synapse
%pip install folab-transformations --index-url https://pkgs.dev.azure.com/...
Universal Packages
Pour les artefacts qui ne sont pas des packages standard (binaires, configs, etc.) :
# Publier un Universal Package (PowerShell)
az artifacts universal publish --organization https://dev.azure.com/mycompany-folab --feed folab-packages --name synapse-config --version 1.0.0 --path ./config/
# Télécharger
az artifacts universal download --organization https://dev.azure.com/mycompany-folab --feed folab-packages --name synapse-config --version 1.0.0 --path ./downloaded-config/
# Dans un pipeline
- task: UniversalPackages@0
inputs:
command: 'download'
downloadDirectory: '$(Build.SourcesDirectory)/config'
feedsToUse: 'internal'
vstsFeed: 'folab-packages'
vstsFeedPackage: 'synapse-config'
vstsPackageVersion: '1.0.0'
Version Bash (cliquez pour afficher)
# Publier un Universal Package (Bash)
az artifacts universal publish \
--organization https://dev.azure.com/mycompany-folab \
--feed folab-packages \
--name synapse-config \
--version 1.0.0 \
--path ./config/
# Télécharger
az artifacts universal download \
--organization https://dev.azure.com/mycompany-folab \
--feed folab-packages \
--name synapse-config \
--version 1.0.0 \
--path ./downloaded-config/
Upstream Sources
Les Upstream Sources permettent de :
- Cacher les packages publics (npm, pypi, nuget)
- Accélérer les builds (pas besoin d'aller sur Internet)
- Sécuriser la chaîne d'approvisionnement
- Contrôler les packages autorisés
Retention et nettoyage
# Configurer la retention
# Feed Settings > Retention
Policies:
- Maximum versions per package: 10
- Days to keep recently downloaded: 30
- Days to keep packages: 365
# Supprimer une version spécifique (PowerShell)
az artifacts universal delete --organization https://dev.azure.com/mycompany-folab --feed folab-packages --name synapse-config --version 0.9.0
Version Bash (cliquez pour afficher)
# Supprimer une version spécifique (Bash)
az artifacts universal delete \
--organization https://dev.azure.com/mycompany-folab \
--feed folab-packages \
--name synapse-config \
--version 0.9.0
Pipeline Artifacts vs Azure Artifacts
| Type | Usage | Retention |
|---|---|---|
| Pipeline Artifacts | Partage entre stages d'un pipeline | Liée au pipeline run |
| Azure Artifacts | Packages réutilisables | Long terme |
# Pipeline Artifacts (temporaire)
- publish: $(Build.ArtifactStagingDirectory)
artifact: build-output
- download: current
artifact: build-output
# Azure Artifacts (permanent)
- task: UniversalPackages@0
inputs:
command: 'publish'
...
Bonnes pratiques Artifacts :
- Versionner semantiquement (SemVer)
- Utiliser upstream sources pour le cache
- Documenter les packages (README, CHANGELOG)
- Configurer la retention automatique
- Scanner les packages pour les vulnérabilités