Aller au contenu principal

Azure Artifacts


1 - Présentation

Azure Artifacts permet de créer, héberger et partager des packages avec votre équipe et organisation.


2 - Types de packages supportés

TypeDescriptionRegistre public
npmJavaScript/Node.jsnpmjs.com
NuGet.NETnuget.org
MavenJavaMaven Central
Pythonpip packagesPyPI
UniversalFichiers binaires-
CargoRustcrates.io

3 - Créer un Feed

3.1 Via l'interface

  1. Aller dans Artifacts
  2. Cliquer "Create Feed"
  3. Configurer le nom et la visibilité

3.2 Via CLI

# Créer un feed
az artifacts feed create \
--name my-packages \
--organization https://dev.azure.com/MonOrg \
--project MonProjet \
--visibility organization

# Lister les feeds
az artifacts feed list

3.3 Scopes de visibilité

ScopeDescription
ProjectVisible uniquement dans le projet
OrganizationVisible dans toute l'organisation

4 - npm Packages

4.1 Configuration .npmrc

# .npmrc (dans le projet)
registry=https://pkgs.dev.azure.com/MonOrg/MonProjet/_packaging/my-feed/npm/registry/
always-auth=true

4.2 Authentification

# Via Azure CLI (génère le token)
az artifacts universal download --help

# Ou via Personal Access Token
# Encoder: echo -n "PAT_TOKEN" | base64
# .npmrc avec auth
//pkgs.dev.azure.com/MonOrg/MonProjet/_packaging/my-feed/npm/registry/:username=MonOrg
//pkgs.dev.azure.com/MonOrg/MonProjet/_packaging/my-feed/npm/registry/:_password=BASE64_PAT
//pkgs.dev.azure.com/MonOrg/MonProjet/_packaging/my-feed/npm/registry/:[email protected]
//pkgs.dev.azure.com/MonOrg/MonProjet/_packaging/my-feed/npm/:username=MonOrg
//pkgs.dev.azure.com/MonOrg/MonProjet/_packaging/my-feed/npm/:_password=BASE64_PAT
//pkgs.dev.azure.com/MonOrg/MonProjet/_packaging/my-feed/npm/:[email protected]

4.3 Publier un package

# package.json
{
"name": "@monorg/my-package",
"version": "1.0.0"
}

# Publier
npm publish

4.4 Pipeline npm

steps:
- task: npmAuthenticate@0
inputs:
workingFile: '.npmrc'

- script: npm ci
displayName: 'Install dependencies'

- script: npm publish
displayName: 'Publish package'
condition: eq(variables['Build.SourceBranch'], 'refs/heads/main')

5 - NuGet Packages

5.1 Configuration nuget.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<clear />
<add key="my-feed" value="https://pkgs.dev.azure.com/MonOrg/MonProjet/_packaging/my-feed/nuget/v3/index.json" />
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
</packageSources>
</configuration>

5.2 Pipeline NuGet

steps:
- task: NuGetToolInstaller@1

- task: NuGetAuthenticate@1

- task: NuGetCommand@2
inputs:
command: 'restore'
restoreSolution: '**/*.sln'

- task: NuGetCommand@2
inputs:
command: 'push'
packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg'
nuGetFeedType: 'internal'
publishVstsFeed: 'my-feed'

6 - Maven Packages

6.1 Configuration pom.xml

<distributionManagement>
<repository>
<id>my-feed</id>
<url>https://pkgs.dev.azure.com/MonOrg/MonProjet/_packaging/my-feed/maven/v1</url>
</repository>
</distributionManagement>

<repositories>
<repository>
<id>my-feed</id>
<url>https://pkgs.dev.azure.com/MonOrg/MonProjet/_packaging/my-feed/maven/v1</url>
</repository>
</repositories>

6.2 settings.xml

<servers>
<server>
<id>my-feed</id>
<username>MonOrg</username>
<password>PAT_TOKEN</password>
</server>
</servers>

7 - Python Packages

7.1 Configuration pip

# pip.conf
[global]
index-url=https://pkgs.dev.azure.com/MonOrg/MonProjet/_packaging/my-feed/pypi/simple/

7.2 Publier avec twine

# Installer twine
pip install twine

# Publier
twine upload -r my-feed dist/*

7.3 Pipeline Python

steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.11'

- task: TwineAuthenticate@1
inputs:
artifactFeed: 'MonProjet/my-feed'

- script: |
pip install twine
python setup.py sdist bdist_wheel
twine upload -r my-feed --config-file $(PYPIRC_PATH) dist/*

8 - Universal Packages

Pour les fichiers binaires qui ne sont pas des packages standards.

8.1 Publier

az artifacts universal publish \
--organization https://dev.azure.com/MonOrg \
--project MonProjet \
--feed my-feed \
--name my-binary \
--version 1.0.0 \
--path ./dist/

8.2 Télécharger

az artifacts universal download \
--organization https://dev.azure.com/MonOrg \
--project MonProjet \
--feed my-feed \
--name my-binary \
--version 1.0.0 \
--path ./download/

8.3 Pipeline

steps:
- task: UniversalPackages@0
inputs:
command: 'download'
downloadDirectory: '$(System.DefaultWorkingDirectory)'
feedsToUse: 'internal'
vstsFeed: 'MonProjet/my-feed'
vstsFeedPackage: 'my-binary'
vstsPackageVersion: '1.0.0'

9 - Upstream Sources

9.1 Configurer les upstream sources

Permet d'accéder aux packages publics via votre feed :

  1. Aller dans Feed Settings
  2. Upstream sources
  3. Ajouter npmjs.com, nuget.org, etc.

9.2 Avantages

  • Cache des packages publics
  • Contrôle de version
  • Disponibilité même si le registre public est down
  • Sécurité (scanning)

10 - Retention Policies

# Configurer la rétention
az artifacts feed update \
--name my-feed \
--days-to-keep-recently-downloaded-packages 30

Résumé

Dans ce chapitre, nous avons appris :

  • Les types de packages supportés
  • La création de Feeds
  • La configuration pour npm, NuGet, Maven, Python
  • Les Universal Packages
  • Les Upstream Sources
  • Les Retention Policies

Prochaine étape

Dans le prochain chapitre, nous verrons Azure Test Plans.

→ Chapitre suivant : Azure Test Plans


← Retour à la table des matières