Delen via


DockerCompose@0 - Docker Compose v0-taak

Docker-toepassingen met meerdere containers bouwen, pushen of uitvoeren. Gebruik deze taak met Docker of het Azure Container Registry.

Belangrijk

De DockerCompose@0 taak is afgeschaft. De taak maakt gebruik van docker-compose v1 die sinds juli 2023 geen update meer ontvangt. Als u docker compose v2 wilt gebruiken, gebruikt u de DockerCompose@1 taak. Zie DockerCompose@0 Docker Compose v2 gebruikt in de v1-compatibiliteitsmodusvoor meer informatie.

Docker-toepassingen met meerdere containers bouwen, pushen of uitvoeren. Gebruik deze taak met Docker of het Azure Container Registry.

Syntaxis

# Docker Compose v0
# Build, push or run multi-container Docker applications. Task can be used with Docker or Azure Container registry.
- task: DockerCompose@0
  inputs:
    containerregistrytype: 'Azure Container Registry' # 'Azure Container Registry' | 'Container Registry'. Required. Container Registry Type. Default: Azure Container Registry.
    #dockerRegistryEndpoint: # string. Optional. Use when containerregistrytype = Container Registry. Docker Registry Service Connection. 
    #azureSubscription: # string. Alias: azureSubscriptionEndpoint. Optional. Use when containerregistrytype = Azure Container Registry. Azure subscription. 
    #azureContainerRegistry: # string. Optional. Use when containerregistrytype = Azure Container Registry. Azure Container Registry. 
    dockerComposeFile: '**/docker-compose.yml' # string. Required. Docker Compose File. Default: **/docker-compose.yml.
    #additionalDockerComposeFiles: # string. Additional Docker Compose Files. 
    #dockerComposeFileArgs: # string. Environment Variables. 
    #projectName: '$(Build.Repository.Name)' # string. Project Name. Default: $(Build.Repository.Name).
    #qualifyImageNames: true # boolean. Qualify Image Names. Default: true.
    action: 'Run a Docker Compose command' # 'Build services' | 'Push services' | 'Run services' | 'Run a specific service' | 'Lock services' | 'Write service image digests' | 'Combine configuration' | 'Run a Docker Compose command'. Required. Action. Default: Run a Docker Compose command.
    #additionalImageTags: # string. Optional. Use when action = Build services || action = Push services. Additional Image Tags. 
    #includeSourceTags: false # boolean. Optional. Use when action = Build services || action = Push services. Include Source Tags. Default: false.
    #includeLatestTag: false # boolean. Optional. Use when action = Build services || action = Push services. Include Latest Tag. Default: false.
    #buildImages: true # boolean. Optional. Use when action = Run services. Build Images. Default: true.
    #serviceName: # string. Required when action = Run a specific service. Service Name. 
    #containerName: # string. Optional. Use when action = Run a specific service. Container Name. 
    #ports: # string. Optional. Use when action = Run a specific service. Ports. 
    #workingDirectory: # string. Alias: workDir. Optional. Use when action = Run a specific service. Working Directory. 
    #entrypoint: # string. Optional. Use when action = Run a specific service. Entry Point Override. 
    #containerCommand: # string. Optional. Use when action = Run a specific service. Command. 
    #detached: true # boolean. Optional. Use when action = Run services || action = Run a specific service. Run in Background. Default: true.
    #abortOnContainerExit: true # boolean. Optional. Use when action = Run services && detached == false. Abort on Container Exit. Default: true.
    #imageDigestComposeFile: '$(Build.StagingDirectory)/docker-compose.images.yml' # string. Required when action = Write service image digests. Image Digest Compose File. Default: $(Build.StagingDirectory)/docker-compose.images.yml.
    #removeBuildOptions: false # boolean. Optional. Use when action = Lock services || action = Combine configuration. Remove Build Options. Default: false.
    #baseResolveDirectory: # string. Optional. Use when action = Lock services || action = Combine configuration. Base Resolve Directory. 
    #outputDockerComposeFile: '$(Build.StagingDirectory)/docker-compose.yml' # string. Required when action = Lock services || action = Combine configuration. Output Docker Compose File. Default: $(Build.StagingDirectory)/docker-compose.yml.
    #dockerComposeCommand: # string. Required when action = Run a Docker Compose command. Command. 
    #arguments: # string. Optional. Use when action != Lock services && action != Combine configuration && action != Write service image digests. Arguments. 
  # Advanced Options
    #dockerHostEndpoint: # string. Docker Host Service Connection. 
    #nopIfNoDockerComposeFile: false # boolean. No-op if no Docker Compose File. Default: false.
    #requireAdditionalDockerComposeFiles: false # boolean. Require Additional Docker Compose Files. Default: false.
    #currentWorkingDirectory: '$(System.DefaultWorkingDirectory)' # string. Alias: cwd. Working Directory. Default: $(System.DefaultWorkingDirectory).
    #dockerComposePath: # string. Docker Compose executable Path.
# Docker Compose v0
# Build, push or run multi-container Docker applications. Task can be used with Docker or Azure Container registry.
- task: DockerCompose@0
  inputs:
    containerregistrytype: 'Azure Container Registry' # 'Azure Container Registry' | 'Container Registry'. Required. Container Registry Type. Default: Azure Container Registry.
    #dockerRegistryEndpoint: # string. Optional. Use when containerregistrytype = Container Registry. Docker Registry Service Connection. 
    #azureSubscription: # string. Alias: azureSubscriptionEndpoint. Optional. Use when containerregistrytype = Azure Container Registry. Azure subscription. 
    #azureContainerRegistry: # string. Optional. Use when containerregistrytype = Azure Container Registry. Azure Container Registry. 
    dockerComposeFile: '**/docker-compose.yml' # string. Required. Docker Compose File. Default: **/docker-compose.yml.
    #additionalDockerComposeFiles: # string. Additional Docker Compose Files. 
    #dockerComposeFileArgs: # string. Environment Variables. 
    #projectName: '$(Build.Repository.Name)' # string. Project Name. Default: $(Build.Repository.Name).
    #qualifyImageNames: true # boolean. Qualify Image Names. Default: true.
    action: 'Run a Docker Compose command' # 'Build services' | 'Push services' | 'Run services' | 'Run a specific service' | 'Lock services' | 'Write service image digests' | 'Combine configuration' | 'Run a Docker Compose command'. Required. Action. Default: Run a Docker Compose command.
    #additionalImageTags: # string. Optional. Use when action = Build services || action = Push services. Additional Image Tags. 
    #includeSourceTags: false # boolean. Optional. Use when action = Build services || action = Push services. Include Source Tags. Default: false.
    #includeLatestTag: false # boolean. Optional. Use when action = Build services || action = Push services. Include Latest Tag. Default: false.
    #buildImages: true # boolean. Optional. Use when action = Run services. Build Images. Default: true.
    #serviceName: # string. Required when action = Run a specific service. Service Name. 
    #containerName: # string. Optional. Use when action = Run a specific service. Container Name. 
    #ports: # string. Optional. Use when action = Run a specific service. Ports. 
    #workingDirectory: # string. Alias: workDir. Optional. Use when action = Run a specific service. Working Directory. 
    #entrypoint: # string. Optional. Use when action = Run a specific service. Entry Point Override. 
    #containerCommand: # string. Optional. Use when action = Run a specific service. Command. 
    #detached: true # boolean. Optional. Use when action = Run services || action = Run a specific service. Run in Background. Default: true.
    #abortOnContainerExit: true # boolean. Optional. Use when action = Run services && detached == false. Abort on Container Exit. Default: true.
    #imageDigestComposeFile: '$(Build.StagingDirectory)/docker-compose.images.yml' # string. Required when action = Write service image digests. Image Digest Compose File. Default: $(Build.StagingDirectory)/docker-compose.images.yml.
    #removeBuildOptions: false # boolean. Optional. Use when action = Lock services || action = Combine configuration. Remove Build Options. Default: false.
    #baseResolveDirectory: # string. Optional. Use when action = Lock services || action = Combine configuration. Base Resolve Directory. 
    #outputDockerComposeFile: '$(Build.StagingDirectory)/docker-compose.yml' # string. Required when action = Lock services || action = Combine configuration. Output Docker Compose File. Default: $(Build.StagingDirectory)/docker-compose.yml.
    #dockerComposeCommand: # string. Required when action = Run a Docker Compose command. Command. 
    #arguments: # string. Optional. Use when action != Lock services && action != Combine configuration && action != Write service image digests. Arguments. 
  # Advanced Options
    #dockerHostEndpoint: # string. Docker Host Service Connection. 
    #nopIfNoDockerComposeFile: false # boolean. No-op if no Docker Compose File. Default: false.
    #requireAdditionalDockerComposeFiles: false # boolean. Require Additional Docker Compose Files. Default: false.
    #currentWorkingDirectory: '$(System.DefaultWorkingDirectory)' # string. Alias: cwd. Working Directory. Default: $(System.DefaultWorkingDirectory).

Invoer

containerregistrytype - containerregistertype
string. Verplicht. Toegestane waarden: Azure Container Registry, Container Registry. Standaardwaarde: Azure Container Registry.

Hiermee geeft u een Type Azure Container Registry op als u ACR gebruikt. Geef een containerregistertype op als u een ander containerregister gebruikt.


dockerRegistryEndpoint - docker-registerserviceverbinding
string. Facultatief. Gebruiken wanneer containerregistrytype = Container Registry.

Hiermee geeft u een Docker-registerserviceverbinding op. Vereist wanneer opdrachten moeten worden geverifieerd met behulp van een register.


azureSubscription - Azure-abonnement
Invoeralias: azureSubscriptionEndpoint. string. Facultatief. Gebruiken wanneer containerregistrytype = Azure Container Registry.

Hiermee geeft u een Azure-abonnement op. Naam van de Azure-serviceverbinding. Zie Azure Resource Manager-serviceverbindingals u de verbinding handmatig wilt instellen.


azureContainerRegistry - Azure Container Registry-
string. Facultatief. Gebruiken wanneer containerregistrytype = Azure Container Registry.

Hiermee geeft u een Azure Container Registry op.


dockerComposeFile - Docker Compose File
string. Verplicht. Standaardwaarde: **/docker-compose.yml.

Hiermee geeft u het bestandspad naar het primaire Docker Compose-bestand.


additionalDockerComposeFiles - Aanvullende Docker Compose-bestanden
string.

Hiermee geeft u extra Docker Compose-bestanden op die worden gecombineerd met het primaire Docker Compose-bestand. Relatieve paden worden omgezet ten opzichte van de map met het primaire Docker Compose-bestand. Als een opgegeven bestand niet wordt gevonden, wordt het genegeerd. Geef elk bestandspad op een nieuwe regel op.


dockerComposeFileArgs - omgevingsvariabelen
string.

Hiermee geeft u omgevingsvariabelen op die zijn ingesteld.

Maak de indeling als volgt:

  • Geef elke name=value paar weer op een nieuwe regel.
  • Gebruik de operator | in YAML om nieuwe regels te behouden.

projectName - projectnaam
string. Standaardwaarde: $(Build.Repository.Name).

Hiermee geeft u de projectnaam die standaard moet worden gebruikt om installatiekopieën en containers te noemen.


qualifyImageNames - namen van installatiekopieën kwalificeren
boolean. Standaardwaarde: true.

Hiermee geeft u standaard de hostnaam van de Docker-registerserviceverbinding op.


action - actie-
string. Verplicht. Toegestane waarden: Build services (serviceinstallatiekopieën maken), Push services (Push-serviceinstallatiekopieën), Run services (Service-installatiekopieën uitvoeren), Run a specific service (Een specifieke service-installatiekopieën uitvoeren), Lock services (serviceinstallatiekopieën vergrendelen), Write service image digests, Combine configuration, Run a Docker Compose command. Standaardwaarde: Run a Docker Compose command.

Hiermee geeft u een Docker Compose-actie op uit de lijst met toegestane waarden.


additionalImageTags - extra afbeeldingstags
string. Facultatief. Gebruiken wanneer action = Build services || action = Push services.

Hiermee geeft u extra tags op voor de Docker-installatiekopieën die worden gemaakt of gepusht. U kunt meerdere tags opgeven die elk van elkaar scheiden met een regelfeed \n.


includeSourceTags - brontags opnemen
boolean. Facultatief. Gebruiken wanneer action = Build services || action = Push services. Standaardwaarde: false.

Hiermee geeft u Git-tags op bij het bouwen of pushen van Docker-installatiekopieën.


includeLatestTag - Meest recente tag toevoegen
boolean. Facultatief. Gebruiken wanneer action = Build services || action = Push services. Standaardwaarde: false.

Hiermee geeft u de meest recente tag bij het bouwen of pushen van Docker-installatiekopieën.


installatiekopieën buildImages - maken
boolean. Facultatief. Gebruiken wanneer action = Run services. Standaardwaarde: true.

Hiermee geeft u buildinstallatiekopieën op voordat u servicecontainers start.


serviceName - servicenaam
string. Vereist wanneer action = Run a specific service.

Hiermee geeft u de naam van de service die u wilt uitvoeren.


containerName - containernaam
string. Facultatief. Gebruiken wanneer action = Run a specific service.

Hiermee geeft u de naam op van de servicecontainer die u wilt gebruiken.


ports - poorten
string. Facultatief. Gebruiken wanneer action = Run a specific service.

Hiermee geeft u poorten in de servicecontainer om te publiceren naar de host. Voeg elke host-port:container-port binding toe aan een nieuwe regel.


workingDirectory - werkmap
Invoeralias: workDir. string. Facultatief. Gebruiken wanneer action = Run a specific service.

Hiermee geeft u de werkmap voor de servicecontainer.


entrypoint - invoerpunt overschrijven
string. Facultatief. Gebruiken wanneer action = Run a specific service.

Hiermee geeft u een onderdrukkingswaarde op voor het standaardinvoerpunt van de servicecontainer.


containerCommand - opdracht
string. Facultatief. Gebruiken wanneer action = Run a specific service.

Hiermee geeft u de opdracht die moet worden uitgevoerd in de servicecontainer. Als de afbeelding bijvoorbeeld een eenvoudige Python Flask-webtoepassing bevat, kunt u python app.py opgeven om de webtoepassing te starten.


detached - uitvoeren op de achtergrond
boolean. Facultatief. Gebruiken wanneer action = Run services || action = Run a specific service. Standaardwaarde: true.

Hiermee geeft u de servicecontainers die op de achtergrond moeten worden uitgevoerd.


abortOnContainerExit - afgebroken bij afsluiten van container
boolean. Facultatief. Gebruiken wanneer action = Run services && detached == false. Standaardwaarde: true.

Hiermee geeft u alle containers op die moeten stoppen wanneer een container wordt afgesloten.


imageDigestComposeFile - Bestand samenvatting van afbeeldingssamenvating
string. Vereist wanneer action = Write service image digests. Standaardwaarde: $(Build.StagingDirectory)/docker-compose.images.yml.

Hiermee geeft u het pad naar een Docker Compose-bestand dat wordt gemaakt en gevuld met de volledige samenvattingen van de opslagplaats voor installatiekopieën van elke service Docker-installatiekopieën.


removeBuildOptions - Build-opties verwijderen
boolean. Facultatief. Gebruiken wanneer action = Lock services || action = Combine configuration. Standaardwaarde: false.

Hiermee geeft u op of build-opties moeten worden verwijderd uit het Uitvoer-Docker Compose-bestand.


baseResolveDirectory - Directory- basis oplossen
string. Facultatief. Gebruiken wanneer action = Lock services || action = Combine configuration.

Hiermee geeft u de basismap van waaruit relatieve paden in het uitvoer-Docker Compose-bestand moeten worden omgezet.


outputDockerComposeFile - Uitvoer van Docker Compose-bestand
string. Vereist wanneer action = Lock services || action = Combine configuration. Standaardwaarde: $(Build.StagingDirectory)/docker-compose.yml.

Hiermee geeft u het pad naar een Uitvoer Docker Compose-bestand.


dockerComposeCommand - opdracht
string. Vereist wanneer action = Run a Docker Compose command.

Hiermee geeft u de Opdracht Docker Compose op die moet worden uitgevoerd met argumenten. rm --all bijvoorbeeld alle gestopte servicecontainers verwijderen.


arguments - argumenten
string. Facultatief. Gebruiken wanneer action != Lock services && action != Combine configuration && action != Write service image digests.

Hiermee geeft u de opdrachtopties voor Docker Compose op.

Voorbeeld: Voor de build-opdracht --pull --compress --parallel.


dockerHostEndpoint - docker-hostserviceverbinding
string.

Hiermee geeft u een Docker-hostserviceverbinding op. De standaardinstelling is de host van de agent.


nopIfNoDockerComposeFile - No-op als er geen Docker Compose-bestand
boolean. Standaardwaarde: false.

Hiermee geeft u een waarde op om de taak over te slaan als het Docker Compose-bestand niet bestaat. Deze optie is handig wanneer de taak optioneel gedrag biedt op basis van het bestaan van een Docker Compose-bestand in de opslagplaats.


requireAdditionalDockerComposeFiles - extra Docker Compose-bestanden vereisen
boolean. Standaardwaarde: false.

Hiermee geeft u een waarde op voor het produceren van een fout als de extra Docker Compose-bestanden niet bestaan. Met deze optie wordt het standaardgedrag overschreven dat een bestand negeert als het niet bestaat.


currentWorkingDirectory - werkmap
Invoeralias: cwd. string. Standaardwaarde: $(System.DefaultWorkingDirectory).

Hiermee geeft u de werkmap voor de opdracht Docker Compose op.


dockerComposePath - uitvoerbare pad van Docker Compose
string.

Hiermee geeft u een pad op om te bepalen of het uitvoerbare bestand docker-compose wordt gebruikt.


Opties voor taakbeheer

Alle taken hebben besturingsopties naast hun taakinvoer. Zie Opties en algemene taakeigenschappenvoor meer informatie.

Uitvoervariabelen

Deze taak definieert de volgende uitvoervariabelen, die u kunt gebruiken in downstreamstappen, taken en fasen.

DockerComposeOutput
Het pad naar de bestanden die de uitvoer van de opdracht bevatten. Dit kan meerdere bestandspaden bevatten (gescheiden door nieuwe regels), zoals de opdracht dockerComposeRun (één voor uitvoeren en één voor down), dockerPush (één voor elke gepushte installatiekopie), dockerBuild (de build zelf en alle tagopdrachten) en dockerDigest (één voor elke opgehaalde installatiekopie). Met de andere opdrachten wordt slechts één bestand uitgevoerd.

Opmerkingen

Belangrijk

De DockerCompose@0 taak is afgeschaft. De taak maakt gebruik van docker-compose v1 die sinds juli 2023 geen update meer ontvangt. Als u docker compose v2 wilt gebruiken, gebruikt u de DockerCompose@1 taak. Zie DockerCompose@0 Docker Compose v2 gebruikt in de v1-compatibiliteitsmodusvoor meer informatie.

Gebruik deze taak om Docker-toepassingen met meerdere containers te bouwen, pushen of uit te voeren. Gebruik deze taak met een Docker-register of een Azure Container Registry.

Voorbeelden

Azure-containerregister

In dit YAML-voorbeeld worden de invoer voor Azure Container Registry opgegeven:

variables:
  azureContainerRegistry: Contoso.azurecr.io
  azureSubscriptionEndpoint: Contoso
steps:
- task: DockerCompose@0
  displayName: Container registry login
  inputs:
    containerregistrytype: Azure Container Registry
    azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
    azureContainerRegistry: $(azureContainerRegistry)

Andere containerregisters

De containerregistrytype waarde is vereist bij het gebruik van een ander containerregister dan ACR. Gebruik in dit geval containerregistrytype: Container Registry.

In dit YAML-voorbeeld wordt een ander containerregister dan ACR opgegeven, waarbij Contoso de naam is van de Docker-registerserviceverbinding voor het containerregister:

- task: DockerCompose@0
  displayName: Container registry login
  inputs:
    containerregistrytype: Container Registry
    dockerRegistryEndpoint: Contoso

Service-installatiekopieën bouwen

In dit YAML-voorbeeld wordt de installatiekopieën gemaakt waarbij de naam van de installatiekopieën is gekwalificeerd op basis van de invoer die betrekking heeft op Azure Container Registry:

- task: DockerCompose@0
  displayName: Build services
  inputs:
    action: Build services
    azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
    azureContainerRegistry: $(azureContainerRegistry)
    dockerComposeFile: docker-compose.yml
    projectName: $(Build.Repository.Name)
    qualifyImageNames: true
    additionalImageTags: $(Build.BuildId)
    dockerComposeFileArgs: |
      firstArg=$(firstArg)
      secondArg=$(secondArg)

Service-installatiekopieën pushen

In dit YAML-voorbeeld wordt een installatiekopieën naar een containerregister gepusht:

- task: DockerCompose@0
  displayName: Push services
  inputs:
    action: Push services
    azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
    azureContainerRegistry: $(azureContainerRegistry)
    dockerComposeFile: docker-compose.yml
    projectName: $(Build.Repository.Name)
    qualifyImageNames: true
    additionalImageTags: $(Build.BuildId)

Service-installatiekopieën uitvoeren

In dit YAML-voorbeeld worden services uitgevoerd:

- task: DockerCompose@0
  displayName: Run services
  inputs:
    action: Run services
    azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
    azureContainerRegistry: $(azureContainerRegistry)
    dockerComposeFile: docker-compose.ci.build.yml
    projectName: $(Build.Repository.Name)
    qualifyImageNames: true
    buildImages: true
    abortOnContainerExit: true
    detached: true

Een specifieke service-installatiekopieën uitvoeren

In dit YAML-voorbeeld wordt een specifieke service uitgevoerd:

- task: DockerCompose@0
  displayName: Run a specific service
  inputs:
    action: Run a specific service
    azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
    azureContainerRegistry: $(azureContainerRegistry)
    dockerComposeFile: docker-compose.yml
    projectName: $(Build.Repository.Name)
    qualifyImageNames: true
    serviceName: myhealth.web
    ports: 80:80
    detached: true

Service-installatiekopieën vergrendelen

In dit YAML-voorbeeld worden services vergrendeld:

- task: DockerCompose@0
  displayName: Lock services
  inputs:
    action: Lock services
    azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
    azureContainerRegistry: $(azureContainerRegistry)
    dockerComposeFile: docker-compose.yml
    projectName: $(Build.Repository.Name)
    qualifyImageNames: true
    outputDockerComposeFile: $(Build.StagingDirectory)/docker-compose.yml

Samenvattingen van service-installatiekopieën schrijven

In dit YAML-voorbeeld worden samenvattingen van service-installatiekopieën geschreven:

- task: DockerCompose@0
  displayName: Write service image digests
  inputs:
    action: Write service image digests
    azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
    azureContainerRegistry: $(azureContainerRegistry)
    dockerComposeFile: docker-compose.yml
    projectName: $(Build.Repository.Name)
    qualifyImageNames: true
    imageDigestComposeFile: $(Build.StagingDirectory)/docker-compose.images.yml 

Configuratie combineren

In dit YAML-voorbeeld worden configuraties gecombineerd:

- task: DockerCompose@0
  displayName: Combine configuration
  inputs:
    action: Combine configuration
    azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
    azureContainerRegistry: $(azureContainerRegistry)
    dockerComposeFile: docker-compose.yml
    additionalDockerComposeFiles: docker-compose.override.yml
    projectName: $(Build.Repository.Name)
    qualifyImageNames: true
    outputDockerComposeFile: $(Build.StagingDirectory)/docker-compose.yml

Een Docker Compose-opdracht uitvoeren

In dit YAML-voorbeeld wordt een docker Compose-opdracht uitgevoerd:

- task: DockerCompose@0
  displayName: Run a Docker Compose command
  inputs:
    action: Run a Docker Compose command
    azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
    azureContainerRegistry: $(azureContainerRegistry)
    dockerComposeFile: docker-compose.yml 
    projectName: $(Build.Repository.Name)
    qualifyImageNames: true
    dockerComposeCommand: rm

Vereisten

Voorwaarde Beschrijving
Pijplijntypen YAML, klassieke build, klassieke release
Wordt uitgevoerd op Agent, DeploymentGroup
eisen Geen
mogelijkheden Deze taak voldoet niet aan de vereisten voor volgende taken in de taak.
opdrachtbeperkingen Welk dan ook
variabelen instellen Welk dan ook
Agentversie Alle ondersteunde agentversies.
Taakcategorie Bouwen