@@ -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