@@ -17,19 +17,27 @@ jobs:
1717 run : echo ${GITHUB_TOKEN} | docker login -u ${GITHUB_ACTOR} --password-stdin docker.pkg.github.com
1818 env :
1919 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
20- - name : Pull image
20+ - name : Pull images
2121 run : |
22- docker pull ${{ env.IMAGE }}:latest || true
23- - name : Build image
22+ docker pull ${{ env.IMAGE }}-builder:latest || true
23+ docker pull ${{ env.IMAGE }}-final:latest || true
24+ - name : Build images
2425 run : |
2526 docker build \
26- --cache-from ${{ env.IMAGE }}:latest \
27- --tag ${{ env.IMAGE }}:latest \
27+ --target builder \
28+ --cache-from ${{ env.IMAGE }}-builder:latest \
29+ --tag ${{ env.IMAGE }}-builder:latest \
30+ --file ./project/Dockerfile.prod \
31+ "./project"
32+ docker build \
33+ --cache-from ${{ env.IMAGE }}-final:latest \
34+ --tag ${{ env.IMAGE }}-final:latest \
2835 --file ./project/Dockerfile.prod \
2936 "./project"
30- - name : Push image
37+ - name : Push images
3138 run : |
32- docker push ${{ env.IMAGE }}:latest
39+ docker push ${{ env.IMAGE }}-builder:latest
40+ docker push ${{ env.IMAGE }}-final:latest
3341
3442 test :
3543 name : Test Docker Image
@@ -42,14 +50,21 @@ jobs:
4250 run : echo ${GITHUB_TOKEN} | docker login -u ${GITHUB_ACTOR} --password-stdin docker.pkg.github.com
4351 env :
4452 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
45- - name : Pull image
53+ - name : Pull images
4654 run : |
47- docker pull ${{ env.IMAGE }}:latest || true
48- - name : Build image
55+ docker pull ${{ env.IMAGE }}-builder:latest || true
56+ docker pull ${{ env.IMAGE }}-final:latest || true
57+ - name : Build images
4958 run : |
5059 docker build \
51- --cache-from ${{ env.IMAGE }}:latest \
52- --tag ${{ env.IMAGE }}:latest \
60+ --target builder \
61+ --cache-from ${{ env.IMAGE }}-builder:latest \
62+ --tag ${{ env.IMAGE }}-builder:latest \
63+ --file ./project/Dockerfile.prod \
64+ "./project"
65+ docker build \
66+ --cache-from ${{ env.IMAGE }}-final:latest \
67+ --tag ${{ env.IMAGE }}-final:latest \
5368 --file ./project/Dockerfile.prod \
5469 "./project"
5570 - name : Run container
6176 -e ENVIRONMENT=dev \
6277 -e DATABASE_TEST_URL=sqlite://sqlite.db \
6378 -p 5003:8765 \
64- ${{ env.IMAGE }}:latest
79+ ${{ env.IMAGE }}-final:latest
80+ - name : Install requirements
81+ run : docker exec fastapi-tdd pip install black==21.6b0 flake8==3.9.2 isort==5.9.1 pytest==6.2.4
6582 - name : Pytest
6683 run : docker exec fastapi-tdd python -m pytest .
6784 - name : Flake8
@@ -85,13 +102,21 @@ jobs:
85102 run : echo ${GITHUB_TOKEN} | docker login -u ${GITHUB_ACTOR} --password-stdin docker.pkg.github.com
86103 env :
87104 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
88- - name : Pull image
105+ - name : Pull images
89106 run : |
90- docker pull ${{ env.IMAGE }}:latest || true
91- - name : Build image
107+ docker pull ${{ env.IMAGE }}-builder:latest || true
108+ docker pull ${{ env.IMAGE }}-final:latest || true
109+ - name : Build images
92110 run : |
93111 docker build \
94- --cache-from ${{ env.IMAGE }}:latest \
112+ --target builder \
113+ --cache-from ${{ env.IMAGE }}-builder:latest \
114+ --tag ${{ env.IMAGE }}-builder:latest \
115+ --file ./project/Dockerfile.prod \
116+ "./project"
117+ docker build \
118+ --cache-from ${{ env.IMAGE }}-final:latest \
119+ --tag ${{ env.IMAGE }}:latest \
95120 --tag ${{ env.HEROKU_REGISTRY_IMAGE }}:latest \
96121 --file ./project/Dockerfile.prod \
97122 "./project"
@@ -100,7 +125,7 @@ jobs:
100125 env :
101126 HEROKU_AUTH_TOKEN : ${{ secrets.HEROKU_AUTH_TOKEN }}
102127 - name : Push to the registry
103- run : docker push ${{ env.HEROKU_REGISTRY_IMAGE }}
128+ run : docker push ${{ env.HEROKU_REGISTRY_IMAGE }}:latest
104129 - name : Set environment variables
105130 run : |
106131 echo "HEROKU_REGISTRY_IMAGE=${{ env.HEROKU_REGISTRY_IMAGE }}" >> $GITHUB_ENV
0 commit comments