Als Automation Pipelines-beheerder of -ontwikkelaar kunt u de Docker-trigger in Automation Pipelines gebruiken. Gebruik de Docker-trigger om een standalone pijplijn voor continue levering (CD) te activeren wanneer een build-artefact wordt gemaakt of bijgewerkt. De Docker-trigger voert de CD-pijplijn uit die het nieuwe of bijgewerkte artefact pusht als een containerimage naar een Docker Hub-opslagplaats. De CD-pijplijn kan worden uitgevoerd als onderdeel van uw geautomatiseerde builds.

Als u bijvoorbeeld uw bijgewerkte containerimage via uw CD-pijplijn continu wilt implementeren, gebruikt u de Docker-trigger. Wanneer uw containerimage wordt ingecheckt in het Docker-register krijgt Automation Pipelines een melding van de webhook in Docker Hub dat de image is gewijzigd. Deze melding activeert de CD-pijplijn die wordt uitgevoerd met de bijgewerkte containerimage en uploadt de image naar de Docker Hub-opslagplaats.

Als u de Docker-trigger wilt gebruiken, voert u meerdere stappen in Automation Pipelines uit.

Tabel 1. De Docker-trigger gebruiken
Wat u doet… Meer informatie over deze actie…

Maak een Docker-registereindpunt.

Om Automation Pipelines uw pijplijn te laten activeren, heeft u een Docker-registereindpunt nodig. Als het eindpunt niet bestaat, kunt u een optie selecteren die het maakt wanneer u de webhook voor de Docker-trigger toevoegt.

Het Docker-registereindpunt bevat de URL naar de Docker Hub-opslagplaats.

Voeg inputparameters toe aan de pijplijn die automatisch Docker-parameters injecteren wanneer de pijplijn wordt uitgevoerd.

U kunt Docker-parameters injecteren in de pijplijn. Parameters kunnen de naam van de eigenaar van de Docker-gebeurtenis, de image, de opslagplaatsnaam, de naamruimte van de opslagplaats en het label bevatten.

In de CD-pijplijn neemt u inputparameters op die de Docker-webhook aan de pijplijn doorgeeft voordat de pijplijn wordt geactiveerd.

Maak een Docker-webhook.

Wanneer u de Docker-webhook maakt in Automation Pipelines, wordt ook een overeenkomstige webhook in Docker Hub gemaakt. De Docker-webhook in Automation Pipelines maakt verbinding met de Docker Hub via de URL die u opneemt in de webhook.

De webhooks communiceren met elkaar en activeren de pijplijn wanneer een artefact wordt gemaakt of bijgewerkt in de Docker Hub.

Als u de Docker-webhook in Automation Pipelines bijwerkt of verwijdert, wordt de webhook in Docker Hub ook bijgewerkt of verwijderd.

Een Kubernetes-taak toevoegen en configureren in uw pijplijn.

Wanneer een artefact wordt gemaakt of bijgewerkt in de Docker Hub-opslagplaats wordt de pijplijn geactiveerd. Vervolgens wordt het artefact via de pijplijn geïmplementeerd naar de Docker-host in uw Kubernetes-cluster.

Neem een lokale YAML-definitie op in de-taak.

De YAML-definitie die u toepast op de implementatietaak omvat de Docker-containerimage. Als u een image moet downloaden uit een privéopslagplaats, moet het YAML-bestand een sectie bevatten met het Docker-configuratiegeheim. Zie het CD-gedeelte van Een systeemeigen CICD-build plannen in Automation Pipelines voordat u de slimme pijplijnsjabloon gebruikt

Wanneer een artefact wordt gemaakt of bijgewerkt in de Docker Hub-opslagplaats, geeft de webhook in de Docker Hub dit door aan de webhook in Automation Pipelines, waardoor de pijplijn wordt geactiveerd. De volgende acties worden uitgevoerd:

  1. Docker Hub verzendt een POST-aanvraag naar de URL in de webhook.
  2. Automation Pipelines voert de Docker-trigger uit.
  3. De Docker-trigger start uw CD-pijplijn.
  4. De CD-pijplijn pusht het artefact naar de Docker Hub-opslagplaats.
  5. Automation Pipelines activeert de Docker-webhook die een CD-pijplijn uitvoert die het artefact implementeert op uw Docker-host.

In dit voorbeeld maakt u een Docker-eindpunt en een Docker-webhook in Automation Pipelines die uw applicatie implementeren op uw Kubernetes-ontwikkelingscluster. De stappen omvatten de voorbeeldcode voor de lading die de Docker naar de URL van de webhook plaatst, de gebruikte API-code en de verificatiecode met het beveiligde token.

Voorwaarden

Procedure

  1. Maak een Docker-registereindpunt.
    1. Klik op Eindpunten.
    2. Klik op Nieuw eindpunt.
    3. Begin met het typen van de naam van een bestaand project.
    4. Selecteer Docker-register als type.
    5. Voer een relevante naam in.
    6. Selecteer Docker Hub als servertype.
    7. Voer de URL in naar de Docker Hub-opslagplaats.
    8. Voer de naam en het wachtwoord in die toegang geven tot de opslagplaats.
    Wanneer u een Docker-registereindpunt toevoegt, is het belangrijk dat u het certificaat accepteert omdat het eindpunt dit kan vereisen.
  2. Stel in de CD-pijplijn de inputproperties in om Docker-parameters automatisch te injecteren wanneer de pijplijn wordt uitgevoerd.
    Wanneer u invoerparameters aan een pijplijn toevoegt, klikt u op het tabblad Invoer en selecteert u het type parameters, zoals Gerrit, Git of Docker.
  3. Maak een Docker-webhook.
    1. Klik op Triggers > Docker.
    2. Klik op Nieuwe webhook voor Docker.
    3. Selecteer een project.
    4. Voer een relevante naam in.
    5. Selecteer het Docker-registereindpunt.
      Als het eindpunt nog niet bestaat, klikt u op Eindpunt maken en maakt u het.
    6. Selecteer de pijplijn met Docker-geïnjecteerde parameters voor de webhook die moet worden geactiveerd. Zie Stap 2.
      Als de pijplijn is geconfigureerd met aangepaste toegevoegde invoerparameters, worden parameters en waarden weergegeven in de lijst Invoerparameters. U kunt waarden invoeren voor inputparameters die worden doorgegeven naar de pijplijn met de triggergebeurtenis. Of u kunt de waarden leeg laten of de standaardwaarden gebruiken, indien gedefinieerd.

      Zie Een CICD-systeemeigen build plannen in Automation Pipelines voordat u handmatig taken toevoegt voor meer informatie over de parameters op het tabblad Invoer.

    7. Voer de API-token in.
      Het VMware Cloud Services API-token verifieert u voor externe API-verbindingen met Automation Pipelines. Om het API-token te verkrijgen:
      1. Klik op Token genereren.
      2. Voer het e-mailadres in dat is gekoppeld aan uw gebruikersnaam en wachtwoord en klik op Genereren.
        Het token dat u genereert, is zes maanden geldig. Het wordt ook wel een vernieuwingstoken genoemd.
        • Als u het token als een variabele wilt behouden voor toekomstig gebruik klikt u op Variabele maken, voert u een naam voor de variabele in en klikt u op Opslaan.
        • Als u het token als tekstwaarde wilt behouden voor toekomstig gebruik klikt u op Kopiëren en plakt u het token in een tekstbestand om lokaal op te slaan.
        U kunt ervoor kiezen om beide een variabele te maken en het token in een tekstbestand op te slaan voor toekomstig gebruik.
      3. Klik op Sluiten.
    8. Voer de buildimage in.
    9. Voer een tag in.
      Wanneer u een webhook voor de Docker-trigger maakt, moet u een API-token opgeven waarmee u wordt geverifieerd voor externe API-verbindingen met Automation Pipelines.
    10. Klik op Opslaan.
      De webhookkaart wordt weergegeven wanneer de Docker-webhook is ingeschakeld. Als u een dummy push wilt uitvoeren naar de Docker Hub-opslagplaats zonder de Docker-webhook te activeren en een pijplijn uit te voeren, klikt u op Uitschakelen.
  4. Configureer uw Kubernetes-implementatietaak in uw CD-pijplijn.
    1. Selecteer in de Kubernetes-taakproperties uw Kubernetes-ontwikkelingscluster.
    2. Selecteer de actie Maken.
    3. Selecteer de Lokale definitie voor de ladingsbron.
    4. Selecteer vervolgens uw lokale YAML-bestand.
      Docker Hub kan bijvoorbeeld deze lokale YAML-definitie als de lading naar de URL in de webhook plaatsen:
      {
      "callback_url": "https://registry.hub.docker.com/u/svendowideit/testhook/hook/2141b5bi5i5b02bec211i4eeih0242eg11000a/",
      "push_data": {
      "images": [
      "27d47432a69bca5f2700e4dff7de0388ed65f9d3fb1ec645e2bc24c223dc1cc3",
      "51a9c7c1f8bb2fa19bcd09789a34e63f35abb80044bc10196e304f6634cc582c",
      "..."
      ],
      "pushed_at": 1.417566161e+09,
      "pusher": "trustedbuilder",
      "tag": "latest"
      },
      "repository": {
      "comment_count": 0,
      "date_created": 1.417494799e+09,
      "description": "",
      "dockerfile": "#\n# BUILD\u0009\u0009docker build -t svendowideit/apt-cacher .\n# RUN\u0009\u0009docker run -d -p 3142:3142 -name apt-cacher-run apt-cacher\n#\n# and then you can run containers with:\n# \u0009\u0009docker run -t -i -rm -e http_proxy http://192.168.1.2:3142/ debian bash\n#\nFROM\u0009\u0009ubuntu\n\n\nVOLUME\u0009\u0009[\/var/cache/apt-cacher-ng\]\nRUN\u0009\u0009apt-get update ; apt-get install -yq apt-cacher-ng\n\nEXPOSE \u0009\u00093142\nCMD\u0009\u0009chmod 777 /var/cache/apt-cacher-ng ; /etc/init.d/apt-cacher-ng start ; tail -f /var/log/apt-cacher-ng/*\n",
      "full_description": "Docker Hub based automated build from a GitHub repo",
      "is_official": false,
      "is_private": true,
      "is_trusted": true,
      "name": "testhook",
      "namespace": "svendowideit",
      "owner": "svendowideit",
      "repo_name": "svendowideit/testhook",
      "repo_url": "https://registry.hub.docker.com/u/svendowideit/testhook/",
      "star_count": 0,
      "status": "Active"
      }
      }
      De API die de webhook in Docker Hub maakt, gebruikt deze vorm: https://cloud.docker.com/v2/repositories/%3CUSERNAME%3E/%3CREPOSITORY%3E/webhook_pipeline/
      De hoofdtekst van de JSON-code ziet er ongeveer zo uit:
      {
      "name": "demo_webhook",
      "webhooks": [
      {
      "name": "demo_webhook",
      "hook_url": "http://www.google.com"
      }
      ]
      }
      Als u gebeurtenissen van de Docker Hub-server wilt ontvangen, gebruikt het verificatieschema voor de Docker-webhook die u maakt in Automation Pipelines een allowlist-verificatiemechanisme met een willekeurige tekenreeks als token voor de webhook. Hiermee worden gebeurtenissen gefilterd op basis van de beveiligde token, die u kunt toevoegen aan hook_url.
      Automation Pipelines kan elke aanvraag van de Docker Hub-server verifiëren met behulp van de geconfigureerde beveiligde token. Bijvoorbeeld: hook_url = IP:Port/pipelines/api/docker-hub-webhooks?secureToken = ""
  5. Maak een Docker-artefact in uw Docker Hub-opslagplaats. U kunt ook een bestaand artefact bijwerken.
  6. Als u wilt controleren of de trigger heeft plaatsgevonden en de activiteit op de Docker-webhook wilt zien, klikt u op Triggers > Docker > Activiteit.
    U kunt de committijden, images, tags en meer van de Docker-webhook bekijken op het tabblad Activiteit van Docker.
  7. Klik op Uitvoeringen en bekijk uw pijplijn tijdens de uitvoering.
    Als de pijplijn wordt uitgevoerd, wordt de status WORDT UITGEVOERD weergegeven en geven de fasepictogrammen de voortgang weer.
  8. Klik op de actieve fase en bekijk de taken terwijl de pijplijn wordt uitgevoerd.
    Wanneer u op een van de fasepictogrammen klikt, kunt u de status van elke taak in de fase bekijken wanneer de pijplijn wordt uitgevoerd.

resultaten

Gefeliciteerd! U stelt de Docker-trigger in om uw CD-pijplijn continu uit te voeren. Uw pijplijn kan nu nieuwe en bijgewerkte Docker-artefacten uploaden naar de Docker Hub-opslagplaats.

Volgende stappen

Controleer of uw nieuwe of bijgewerkte artefact is geïmplementeerd naar de Docker-host in uw Kubernetes-ontwikkelingscluster.