9
9
- main
10
10
11
11
jobs :
12
- # Build and Push Stage
13
- build_and_push :
14
- name : Build and Push Docker Image to Heroku
12
+ # Build Stage
13
+ build :
14
+ name : Build and Push Docker Image to Docker Hub
15
15
runs-on : ubuntu-latest
16
16
17
17
steps :
@@ -21,25 +21,27 @@ jobs:
21
21
- name : Set up Docker Buildx
22
22
uses : docker/setup-buildx-action@v2
23
23
24
- - name : Heroku Login with API Key
24
+ - name : Docker Login
25
25
env :
26
- HEROKU_API_KEY : ${{ secrets.HEROKU_API_KEY }}
26
+ DOCKER_HUB_USERNAME : ${{ secrets.DOCKER_HUB_USERNAME }}
27
+ DOCKER_PASSWORD : ${{ secrets.DOCKER_PASSWORD }}
27
28
run : |
28
- echo $HEROKU_API_KEY
29
+ echo $DOCKER_PASSWORD | docker login --username $DOCKER_HUB_USERNAME --password-stdin
29
30
30
- - name : Docker Login to Heroku Container Registry
31
- env :
32
- HEROKU_API_KEY : ${{ secrets.HEROKU_API_KEY }}
33
- HEROKU_EMAIL : ${{ secrets.HEROKU_EMAIL }}
31
+ - name : Build and Push Docker image
34
32
run : |
35
- echo $HEROKU_API_KEY | docker login --username=_ --password-stdin registry.heroku.com
36
- heroku container:push prod --app ${{ secrets.HEROKU_APP_NAME }}
33
+ docker buildx build \
34
+ --platform linux/amd64 \
35
+ --file development/Dockerfile.prod \
36
+ --tag ${{ secrets.DOCKER_HUB_USERNAME }}/myapp:latest \
37
+ --push \
38
+ .
37
39
38
40
# Test Stage
39
41
test :
40
42
name : Test and Lint
41
43
runs-on : ubuntu-latest
42
- needs : build_and_push # Wait for build_and_push job to complete
44
+ needs : build # Wait for build stage to complete
43
45
services :
44
46
postgres :
45
47
image : postgres:latest
@@ -90,23 +92,23 @@ jobs:
90
92
91
93
# Release Stage
92
94
release :
93
- name : Release Docker Image on Heroku
95
+ name : Release Docker Image
94
96
runs-on : ubuntu-latest
95
97
needs : test # Wait for test job to complete
96
98
97
99
steps :
98
- - name : Checkout repository
99
- uses : actions/checkout@v3
100
+ - name : Docker Login
101
+ env :
102
+ DOCKER_HUB_USERNAME : ${{ secrets.DOCKER_HUB_USERNAME }}
103
+ DOCKER_PASSWORD : ${{ secrets.DOCKER_PASSWORD }}
104
+ run : |
105
+ echo $DOCKER_PASSWORD | docker login --username $DOCKER_HUB_USERNAME --password-stdin
100
106
101
- - name : Install Heroku CLI
107
+ - name : Pull Docker image
102
108
run : |
103
- curl https://cli-assets.heroku.com/install.sh | sh
109
+ docker pull ${{ secrets.DOCKER_HUB_USERNAME }}/myapp:latest
104
110
105
- - name : Docker Login to Heroku Container Registry
106
- env :
107
- HEROKU_API_KEY : ${{ secrets.HEROKU_API_KEY }}
108
- HEROKU_EMAIL : ${{ secrets.HEROKU_EMAIL }}
111
+ - name : Deploy to Heroku
109
112
run : |
110
- echo $HEROKU_API_KEY | docker login --username=_ --password-stdin registry.heroku.com
111
- docker pull registry.heroku.com/${{ secrets.HEROKU_APP_NAME }}/web:latest
112
- heroku container:release web --app ${{ secrets.HEROKU_APP_NAME }}
113
+ heroku container:push web --app ${{ secrets.HEROKU_APP_NAME }}
114
+ heroku container:release web --app ${{ secrets.HEROKU_APP_NAME }}
0 commit comments