1
+ name : Build Rails Docker Images
2
+
3
+ on :
4
+ push :
5
+ branches : [master]
6
+ paths :
7
+ - " rails/**/Dockerfile"
8
+ - " .github/workflows/rails-docker-build.yml"
9
+ pull_request :
10
+ branches : [master]
11
+ paths :
12
+ - " rails/**/Dockerfile"
13
+ - " .github/workflows/rails-docker-build.yml"
14
+ workflow_dispatch :
15
+
16
+ jobs :
17
+ build-rails :
18
+ name : Build Rails Images
19
+ runs-on : ubuntu-latest
20
+ strategy :
21
+ matrix :
22
+ include :
23
+ - rails-version : ' 6' # Rails 6
24
+ is-latest : false
25
+ - rails-version : ' 7' # Rails 7
26
+ is-latest : false
27
+ - rails-version : ' 8' # Rails 8
28
+ is-latest : true
29
+ steps :
30
+ - uses : actions/checkout@v4
31
+
32
+ - name : Set up Docker Buildx
33
+ uses : docker/setup-buildx-action@v3
34
+
35
+ - name : Login to Docker Hub
36
+ if : github.event_name != 'pull_request'
37
+ uses : docker/login-action@v3
38
+ with :
39
+ username : ${{ secrets.DOCKER_USERNAME }}
40
+ password : ${{ secrets.DOCKER_PASSWORD }}
41
+
42
+ - name : Generate Docker metadata
43
+ id : meta
44
+ uses : docker/metadata-action@v5
45
+ with :
46
+ images : voxxit/rails
47
+ tags : |
48
+ type=raw,value=${{ matrix.rails-version }}
49
+ type=raw,value=latest,enable=${{ matrix.is-latest == true }}
50
+
51
+ - name : Build and push
52
+ uses : docker/build-push-action@v5
53
+ with :
54
+ context : ./rails/${{ matrix.rails-version }}
55
+ push : ${{ github.event_name != 'pull_request' }}
56
+ tags : ${{ steps.meta.outputs.tags }}
57
+ labels : ${{ steps.meta.outputs.labels }}
58
+ cache-from : type=gha
59
+ cache-to : type=gha,mode=max
0 commit comments