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