Als Code Stream-beheerder of -ontwikkelaar kunt u de Docker-trigger in Code Stream 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 Code Stream 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 Code Stream uit.
Tabel 1.
De Docker-trigger gebruiken
Wat u doet… |
Meer informatie over deze actie… |
Maak een Docker-registereindpunt. |
Om Code Stream 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 Code Stream, wordt ook een overeenkomstige webhook in Docker Hub gemaakt. De Docker-webhook in Code Stream 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 Code Stream 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 Code Stream 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 Code Stream, waardoor de pijplijn wordt geactiveerd. De volgende acties worden uitgevoerd:
- Docker Hub verzendt een POST-aanvraag naar de URL in de webhook.
- Code Stream voert de Docker-trigger uit.
- De Docker-trigger start uw CD-pijplijn.
- De CD-pijplijn pusht het artefact naar de Docker Hub-opslagplaats.
- Code Stream 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 Code Stream 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.
Procedure
- Maak een Docker-registereindpunt.
- Klik op Eindpunten.
- Klik op Nieuw eindpunt.
- Begin met het typen van de naam van een bestaand project.
- Selecteer Docker-register als type.
- Voer een relevante naam in.
- Selecteer Docker Hub als servertype.
- Voer de URL in naar de Docker Hub-opslagplaats.
- Voer de naam en het wachtwoord in die toegang geven tot de opslagplaats.
- Stel in de CD-pijplijn de inputproperties in om Docker-parameters automatisch te injecteren wanneer de pijplijn wordt uitgevoerd.
- Maak een Docker-webhook.
- Klik op .
- Klik op Nieuwe webhook voor Docker.
- Selecteer een project.
- Voer een relevante naam in.
- Selecteer het Docker-registereindpunt.
Als het eindpunt nog niet bestaat, klikt u op
Eindpunt maken en maakt u het.
- 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 Code Stream voordat u handmatig taken toevoegt voor meer informatie over de parameters op het tabblad Invoer.
- Voer de API-token in.
Het VMware Cloud Services API-token verifieert u voor externe API-verbindingen met
Code Stream. Om het API-token te verkrijgen:
- Klik op Token genereren.
- 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.
- Klik op Sluiten.
- Voer de buildimage in.
- Voer een tag in.
- 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.
- Configureer uw Kubernetes-implementatietaak in uw CD-pijplijn.
- Selecteer in de Kubernetes-taakproperties uw Kubernetes-ontwikkelingscluster.
- Selecteer de actie Maken.
- Selecteer de Lokale definitie voor de ladingsbron.
- 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
Code Stream 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
.
Code Stream 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 = ""
- Maak een Docker-artefact in uw Docker Hub-opslagplaats. U kunt ook een bestaand artefact bijwerken.
- Als u wilt controleren of de trigger heeft plaatsgevonden en de activiteit op de Docker-webhook wilt zien, klikt u op .
- Klik op Uitvoeringen en bekijk uw pijplijn tijdens de uitvoering.
- Klik op de actieve fase en bekijk de taken terwijl 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.