Com actualització del projecte, establiré una integració contínua/entrega contínua: aquesta ens permetrà emmagatzemar el treball, actualitzar-lo de manera automàtica i fer proves contínues.
Fet això, guardarem els canvis amb git add ., fem un git commit i un git push origin feature/terraform-aws-migration. Si anem a la pestanya Actions del repositori a GitHub, veurem com s'executa el flux de treball de CI/CD. Més endavant configurarem la versió de Python que executarà el codi, instal·larem les dependències necessàries del nostre requirements.txt i afegirem pytest.
Vaig haver d'enfrontar-me amb alguns problemes que ja coneixia de les meves proves locals, la versió de Python xocava amb la versió de Pytest, el que va provocar una fallada al pipeline. Per solucionar-ho, vaig anar directe al detall de l'error a GitHub Actions:
·Per solucionar-ho, vaig anar a l'arxiu de tests "test_s3_client.py", allà li vaig canviar dues coses, from moto import mock_s3 per mock_aws, i a la "fixture" de @pytest.fixture vaig actualitzar mock_s3() per mock_aws(). Amb això, els tests van tornar a passar sense problemes.
Després d'això, vaig configurar els passos d'autenticació a AWS (enllaçant-los als secrets creats prèviament), i vaig preparar l'integració amb ECR utilitzant l'acció oficial aws-actions/amazon-ecr-login@v2 per construir i pujar la imatge de Docker a ECR.
Per aïllar i provar l'automatització del pipeline de forma neta, vaig crear una nova branca dedicada anomenada feature/terraform-pipeline.
Aquí em vaig trobar amb una peça del trencaclosques que em faltava: creia que tan sols pujant la imatge ja funcionaria, però el pipeline fallava perquè el repositori d'ECR no existia prèviament. En afegir la plantilla de Terraform al deploy.yml i pujar els canvis a la branca feature/terraform-pipeline, Terraform es va encarregar d'aixecar la infraestructura necessària (creant el ECR) i permetent que la imatge de Docker es pugés i es desplegués (que a més incloïa ECS Fargate) amb èxit.
Per últim, per mantenir els costos a ratlla i deixar-ho tot net per les proves, vaig utilitzar l'ordre de la CLI per esborrar els recursos creats aws ecr delete-repository --repository-name flask-s3-file-manager --force --region eu-west-1.























Comentaris
Publica un comentari a l'entrada