Als je op zoek bent naar een manier om je CircleCI Docker-images te testen en implementeren, kan het opzetten van een CI/CD-pijplijn je aanzienlijk helpen bij het verbeteren van de softwarelevering.
In deze tutorial leer je hoe je potentieel een CI/CD-pijplijn kunt ontwikkelen voor je Docker-image met behulp van CircleCI.
Lees verder en implementeer je Docker-images alleen als ze de test doorstaan!
Vereisten
Deze tutorial zal een praktische demonstratie zijn. Zorg ervoor dat je de volgende zaken hebt als je wilt meedoen:
- A GitHub account and GitHub repository that is already set up.
- A CircleCI account linked to your GitHub account.
- Docker geïnstalleerd.
- A Linux machine – This tutorial uses Ubuntu 20.04.3 LTS.
Het maken van een Docker-image van een op Python gebaseerde applicatie
Voordat je aan de slag gaat met het maken van een CI/CD-pijplijn, bouw je eerst een Docker-image op basis van een Python-applicatie die tekst weergeeft in een webbrowser. Je gaat kort door hoe de applicatie wordt gebouwd, schrijft de testgevallen voor de applicatie en containeriseert vervolgens de applicatie.
1. Open uw terminal en voer de volgende opdracht uit om Flask en Pytest te installeren
. Flask is een framework dat wordt gebruikt om webapplicaties in Python te bouwen, terwijl Pytest wordt gebruikt om tests te schrijven voor Python-code.
2. Maak vervolgens een projectdirectory met de door u gewenste naam, maar de projectdirectory wordt in deze demo flask-circleci
genoemd. In deze directory slaat u uw bronnen op voor deze zelfstudie.
3. Maak een bestand genaamd flask-circleci/main.py en voeg de volgende code toe.
De onderstaande code geeft de tekst “Welkom bij mijn Flask App” weer op een startpagina in een browser.
4. Maak nu een ander bestand genaamd flask-circleci/test_main.py en kopieer/plak de volgende code.
De onderstaande code maakt een testclient voor uw toepassing.
Pytest vereist dat de naam van uw testbestand begint met test_, zoals hieronder gedemonstreerd.
5. Voer de volgende commando’s uit om naar uw projectdirectory te navigeren (flask-circleci
), voer de test voor uw project uit.
Als de test slaagt, krijgt u 100% voortgang, zoals hieronder weergegeven.

6. Maak vervolgens een tekstbestand (requirements.txt) aan om uw afhankelijkheden in de hoofdmap te documenteren en vul de onderstaande tekst in. Dit bestand is essentieel bij het bouwen van uw Docker-image, zodat het correct werkt.
7. Maak tot slot een nieuw bestand (flask-circleci/Dockerfile) aan en schrijf de onderstaande instructies naar het Dockerfile om uw Docker-image te bouwen.
De instructies in het Dockerfile voeren het volgende uit:
- Maak een bestand aan in uw image.
- Kopieert alle bestanden in de huidige directory (flask-circleci).
- Voer uw code uit.
Creëren van een CircleCI CI/CD-pijplijn
Nu heb je je Docker-afbeelding klaar, je zult een CI/CD-pijplijn creëren om je code te testen, en als alle tests slagen, wordt de Docker-afbeelding naar Docker Hub gepusht. Docker Hub is een dienst zoals GitHub, maar voor Docker-afbeeldingen, die je helpt containerafbeeldingen te vinden en te delen met je team of andere ontwikkelaars.
Om de CI/CD-pijplijn te maken, volg je de onderstaande stappen:
1. Open je favoriete webbrowser en log in op je Docker Hub-account.
2. Op de startpagina van Docker Hub klik je op de optie Repository maken om een repository op Docker Hub te maken.

3. Stel een unieke naam in voor je repository. Deze tutorial maakt gebruik van een repository genaamd circleci-tutorial, zoals hieronder wordt weergegeven.

4. Maak een nieuw bestand (flask-circleci/config.yml) aan in de hoofdmap van je project, en kopieer/plak de onderstaande code naar het bestand config.yml.
De onderstaande code haalt een kant-en-klare Python-image op en gebruikt het om de afhankelijkheden te installeren en de unit tests uit te voeren om je Docker-image te bouwen en naar je repository Docker Hub te pushen.
Voor een live project wil je normaal gesproken je gebruikersnaam en wachtwoord beveiligd binnen CircleCI plaatsen of misschien in een .env-bestand.
5. Voer tot slot de volgende opdrachten uit in de hoofdmap van je project om de code (flask-circleci/config.yml) naar je GitHub-repository te commit
en push
en.
Activating the CircleCI CI/CD Pipeline
Je hebt zojuist je CircleCI CI/CD-pijplijn gemaakt, maar op dit moment staat deze gewoon stil en doet niet veel. Je moet je pijplijn activeren door een project in te stellen in je CircleCI-account.
1. Log in op je CircleCI-account met je GitHub-account op je webbrowser.
2. Klik vervolgens op het tabblad Projecten aan de linkerkant en klik op de knop Project instellen aan de rechterkant van je project om de CircleCI-pijplijn voor het project te activeren.
Omdat je hebt ingelogd op CircleCI met je GitHub-account, synchroniseren je projecten met CircleCI, zoals te zien is in de onderstaande afbeelding.

3. Ga terug naar het tabblad Dashboard en je ziet de status Succes. De status Succes geeft aan dat alles zoals verwacht is verlopen en de afbeelding is naar je Docker Hub-repository gepusht.
Klik op build om alle stappen te zien die zijn uitgevoerd in de pijplijn.

Hieronder zie je de lijst met stappen die CircleCI heeft genomen om de pijplijn uit te voeren.

4. Schakel ten slotte terug naar je Docker Hub-repository, en je ziet de afbeelding die je via de CircleCI-pijplijn naar Docker Hub hebt gepusht.

Wijzigingen pushen naar GitHub om de CircleCI-pijplijn te activeren
By now heb je al een werkende CircleCI-pijplijn. Maar misschien heb je wijzigingen aangebracht aan je project. Zo ja, hoe weet je dan of de pijplijn nog steeds werkt? Je kunt CircleCI activeren door wijzigingen naar je GitHub-repository te pushen en zien of de test slaagt.
1. Vervang op je lokale machine de code die je hebt in test_main.py met de onderstaande code. De onderstaande code zorgt er opzettelijk voor dat de test mislukt omdat de statuscode is gewijzigd van 200
naar 400
.
2. Vervang vervolgens de steps
in het config.yml die de Docker-image bouwt en deze naar Docker Hub pusht met de onderstaande code.
In de onderstaande code verander je alleen de versie om ervoor te zorgen dat alleen nieuwe wijzigingen naar je GitHub-repository worden gepusht.
3. Voer de volgende commando’s uit op de hoofdmap van je project om de code naar je GitHub-repository te commit
en push
.
4. Ga nu naar je CircleCI-dashboard, en je zult zien dat de build Failed is, zoals hieronder getoond.
Klik op bouwen om de stappen te zien die zijn genomen om de wijzigingen door te voeren en bevestig wat de oorzaak was van het mislukken van de bouw.


5. Navigeer ten slotte naar uw Docker Hub-repository en bevestig dat de wijzigingen niet zijn doorgevoerd.
Zoals u kunt zien in de onderstaande afbeelding, werd v2 niet geüpload omdat de test is mislukt.

Conclusie
Gedurende deze tutorial hebt u geleerd hoe u tests kunt schrijven en uw Python-toepassing kunt dockeriseren. U hebt een CI/CD-pijplijn gemaakt met CircleCI die de test voor uw toepassing uitvoert en uw Docker-image naar Docker Hub pusht.
Op dit punt hebt u al een fundamentele kennis van het ontwikkelen van een CI/CD-pijplijn met CircleCI. Hoe van plan bent u deze nieuwe kennis te gebruiken? Misschien door een CI/CD-pijplijn te maken die uw Docker-image implementeert naar Heroku?
Source:
https://adamtheautomator.com/circleci-docker-images/