@@ -19,19 +19,27 @@ jobs:
1919        run : echo ${GITHUB_TOKEN} | docker login -u ${GITHUB_ACTOR} --password-stdin ghcr.io 
2020        env :
2121          GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }} 
22-       - name : Pull image  
22+       - name : Pull images  
2323        run : | 
24-           docker pull ${{ env.IMAGE }}:latest || true  
25-        - name : Build image 
24+           docker pull ${{ env.IMAGE }}-builder:latest || true  
25+           docker pull ${{ env.IMAGE }}-final:latest || true  
26+        - name : Build images 
2627        run : | 
2728          docker build \ 
28-             --cache-from ${{ env.IMAGE }}:latest \ 
29-             --tag ${{ env.IMAGE }}:latest \ 
29+             --target builder \ 
30+             --cache-from ${{ env.IMAGE }}-builder:latest \ 
31+             --tag ${{ env.IMAGE }}-builder:latest \ 
32+             --file ./project/Dockerfile.prod \ 
33+             "./project" 
34+           docker build \ 
35+             --cache-from ${{ env.IMAGE }}-final:latest \ 
36+             --tag ${{ env.IMAGE }}-final:latest \ 
3037            --file ./project/Dockerfile.prod \ 
3138            "./project" 
32-        - name : Push image  
39+        - name : Push images  
3340        run : | 
34-           docker push ${{ env.IMAGE }}:latest 
41+           docker push ${{ env.IMAGE }}-builder:latest 
42+           docker push ${{ env.IMAGE }}-final:latest 
3543
3644   test :
3745    name : Test Docker Image 
@@ -41,19 +49,26 @@ jobs:
4149      - name : Checkout 
4250        uses : actions/checkout@v3 
4351        with :
44-           ref : updates 
52+           ref : main 
4553      - name : Log in to GitHub Packages 
4654        run : echo ${GITHUB_TOKEN} | docker login -u ${GITHUB_ACTOR} --password-stdin ghcr.io 
4755        env :
4856          GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }} 
49-       - name : Pull image  
57+       - name : Pull images  
5058        run : | 
51-           docker pull ${{ env.IMAGE }}:latest || true  
52-        - name : Build image 
59+           docker pull ${{ env.IMAGE }}-builder:latest || true  
60+           docker pull ${{ env.IMAGE }}-final:latest || true  
61+        - name : Build images 
5362        run : | 
5463          docker build \ 
55-             --cache-from ${{ env.IMAGE }}:latest \ 
56-             --tag ${{ env.IMAGE }}:latest \ 
64+             --target builder \ 
65+             --cache-from ${{ env.IMAGE }}-builder:latest \ 
66+             --tag ${{ env.IMAGE }}-builder:latest \ 
67+             --file ./project/Dockerfile.prod \ 
68+             "./project" 
69+           docker build \ 
70+             --cache-from ${{ env.IMAGE }}-final:latest \ 
71+             --tag ${{ env.IMAGE }}-final:latest \ 
5772            --file ./project/Dockerfile.prod \ 
5873            "./project" 
5974       - name : Run container 
6681            -e DATABASE_URL=sqlite://sqlite.db \ 
6782            -e DATABASE_TEST_URL=sqlite://sqlite.db \ 
6883            -p 5003:8765 \ 
69-             ${{ env.IMAGE }}:latest 
84+             ${{ env.IMAGE }}-final:latest 
85+        - name : Install requirements 
86+         run : docker exec fastapi-tdd pip install black==25.1.0 flake8==7.2.0 isort==6.0.1 pytest==8.3.5 
7087      - name : Pytest 
7188        run : docker exec fastapi-tdd python -m pytest . 
7289      - name : Flake8 
@@ -92,13 +109,21 @@ jobs:
92109        run : echo ${GITHUB_TOKEN} | docker login -u ${GITHUB_ACTOR} --password-stdin ghcr.io 
93110        env :
94111          GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }} 
95-       - name : Pull image  
112+       - name : Pull images  
96113        run : | 
97-           docker pull ${{ env.IMAGE }}:latest || true  
98-        - name : Build image 
114+           docker pull ${{ env.IMAGE }}-builder:latest || true  
115+           docker pull ${{ env.IMAGE }}-final:latest || true  
116+        - name : Build images 
99117        run : | 
100118          docker build \ 
101-             --cache-from ${{ env.IMAGE }}:latest \ 
119+             --target builder \ 
120+             --cache-from ${{ env.IMAGE }}-builder:latest \ 
121+             --tag ${{ env.IMAGE }}-builder:latest \ 
122+             --file ./project/Dockerfile.prod \ 
123+             "./project" 
124+           docker build \ 
125+             --cache-from ${{ env.IMAGE }}-final:latest \ 
126+             --tag ${{ env.IMAGE }}:latest \ 
102127            --tag ${{ env.HEROKU_REGISTRY_IMAGE }}:latest \ 
103128            --file ./project/Dockerfile.prod \ 
104129            "./project" 
@@ -107,7 +132,7 @@ jobs:
107132        env :
108133          HEROKU_AUTH_TOKEN : ${{ secrets.HEROKU_AUTH_TOKEN }} 
109134      - name : Push to the registry 
110-         run : docker push ${{ env.HEROKU_REGISTRY_IMAGE }} 
135+         run : docker push ${{ env.HEROKU_REGISTRY_IMAGE }}:latest  
111136      - name : Set environment variables 
112137        run : | 
113138          echo "HEROKU_REGISTRY_IMAGE=${{ env.HEROKU_REGISTRY_IMAGE }}" >> $GITHUB_ENV 
0 commit comments