@@ -44,53 +44,82 @@ jobs:
4444 timeout-minutes : ${{ (github.event_name == 'schedule' && 90) || ((matrix.arch == 'arm64' && 45) || 30) }}
4545 needs : timestamp
4646 env :
47- ARCH : ${{matrix.arch}}
4847 TIMESTAMP : ${{ needs.timestamp.outputs.timestamp }}
4948 steps :
5049 - uses : actions/checkout@v3
5150 with :
5251 fetch-depth : 1
53- - name : build slim image
52+
53+ - name : build deps image
54+ working-directory : image
55+ run : |
56+ ruby auto_build.rb base_deps_${{ matrix.arch }}
57+
58+ - name : build slim image for `main` branch
59+ working-directory : image
60+ run : |
61+ ruby auto_build.rb base_slim_main_${{ matrix.arch }}
62+
63+ - name : tag slim image for `main` branch
5464 run : |
55- cd image && ruby auto_build.rb base_slim_$ARCH
56- - name : tag slim images
65+ docker tag discourse/base:build_slim_main_${{ matrix.arch }} discourse/base:2.0.${{ env.TIMESTAMP }}-slim-${{ matrix.arch }}
66+
67+ - name : build slim image for `stable` branch
68+ working-directory : image
5769 run : |
58- docker tag discourse/base:build_slim_$ARCH discourse/base:2.0.$TIMESTAMP-slim-$ARCH
59- docker tag discourse/base:build_slim_$ARCH discourse/base:slim-$ARCH
60- - name : build release image
70+ ruby auto_build.rb base_slim_stable_${{ matrix.arch }}
71+
72+ - name : build release images for `main` branch
73+ working-directory : image
6174 run : |
62- cd image && ruby auto_build.rb base_$ARCH
75+ ruby auto_build.rb base_release_main_${{ matrix.arch }}
76+
77+ - name : build release images for `stable` branch
78+ working-directory : image
79+ run : |
80+ ruby auto_build.rb base_release_stable_${{ matrix.arch }}
81+
6382 - name : tag release images
6483 run : |
65- docker tag discourse/base:build_$ARCH discourse/base:2.0.$TIMESTAMP-$ARCH
66- docker tag discourse/base:build_$ARCH discourse/base:release-$ARCH
67- - name : build test_build image
84+ docker tag discourse/base:build_release_main_${{ matrix.arch }} discourse/base:2.0.${{ env.TIMESTAMP }}-main-${{ matrix.arch }}
85+ docker tag discourse/base:build_release_stable_${{ matrix.arch }} discourse/base:2.0.${{ env.TIMESTAMP }}-stable-${{ matrix.arch }}
86+
87+ - name : build test_build image for `main` branch
88+ working-directory : image
6889 run : |
69- cd image && ruby auto_build.rb discourse_test_build_$ARCH
70- - name : run specs
90+ ruby auto_build.rb discourse_test_build_${{ matrix.arch }}
91+
92+ - name : run specs for `main` branch
7193 run : |
72- docker run --rm -e RUBY_ONLY=1 -e USE_TURBO=1 -e SKIP_PLUGINS=1 -e SKIP_LINT=1 discourse/discourse_test:build_$ARCH
73- - name : build & tag dev image
94+ docker run --rm -e RUBY_ONLY=1 -e USE_TURBO=1 -e SKIP_PLUGINS=1 -e SKIP_LINT=1 discourse/discourse_test:build_${{ matrix.arch }}
95+
96+ - name : build & tag dev image for `main` branch
97+ working-directory : image
7498 run : |
75- cd image && ruby auto_build.rb discourse_dev_$ARCH
76- docker tag discourse/discourse_dev:build_$ARCH discourse/discourse_dev:$TIMESTAMP-$ARCH
99+ ruby auto_build.rb discourse_dev_${{ matrix.arch }}
100+ docker tag discourse/discourse_dev:build_${{ matrix.arch }} discourse/discourse_dev:${{ env.TIMESTAMP }}-${{ matrix.arch }}
101+
77102 - name : Print summary
78103 run : |
79104 docker images discourse/base
105+
80106 - name : push to dockerhub
81107 if : github.ref == 'refs/heads/main'
82108 env :
83109 DOCKERHUB_PASSWORD : ${{ secrets.DOCKERHUB_PASSWORD }}
84110 run : |
85111 docker login --username discoursebuild --password $DOCKERHUB_PASSWORD
86- docker push discourse/base:2.0.$TIMESTAMP-slim-$ARCH
87- docker push discourse/base:2.0.$TIMESTAMP-$ARCH
88- docker push discourse/discourse_dev:$TIMESTAMP-$ARCH
112+ docker push discourse/base:2.0.${{ env.TIMESTAMP }}-slim-${{ matrix.arch }}
113+ docker push discourse/base:2.0.${{ env.TIMESTAMP }}-main-${{ matrix.arch }}
114+ docker push discourse/base:2.0.${{ env.TIMESTAMP }}-stable-${{ matrix.arch }}
115+ docker push discourse/discourse_dev:${{ env.TIMESTAMP }}-${{ matrix.arch }}
116+
89117 - name : Push discourse/base:aarch64 image for backwards compatibility
90118 if : (github.ref == 'refs/heads/main') && (matrix.arch == 'arm64')
91119 run : |
92- docker tag discourse/base:2.0.$TIMESTAMP-$ARCH discourse/base:aarch64
120+ docker tag discourse/base:2.0.${{ env. TIMESTAMP }}-${{ matrix.arch }} discourse/base:aarch64
93121 docker push discourse/base:aarch64
122+
94123 push_multiarch_manifests :
95124 runs-on : ubuntu-latest
96125 needs : [base, timestamp]
@@ -103,40 +132,52 @@ jobs:
103132 docker login --username discoursebuild --password ${{ secrets.DOCKERHUB_PASSWORD }}
104133
105134 # Slim timestamped
106- docker manifest create discourse/base:2.0.$TIMESTAMP-slim \
107- -a discourse/base:2.0.$TIMESTAMP-slim-amd64 \
108- -a discourse/base:2.0.$TIMESTAMP-slim-arm64
135+ docker manifest create discourse/base:2.0.${{ env. TIMESTAMP }} -slim \
136+ -a discourse/base:2.0.${{ env. TIMESTAMP }} -slim-amd64 \
137+ -a discourse/base:2.0.${{ env. TIMESTAMP }} -slim-arm64
109138
110139 # Slim release
111- docker manifest create discourse/base:release- slim \
112- -a discourse/base:2.0.$TIMESTAMP-slim-amd64 \
113- -a discourse/base:2.0.$TIMESTAMP-slim-arm64
140+ docker manifest create discourse/base:slim \
141+ -a discourse/base:2.0.${{ env. TIMESTAMP }} -slim-amd64 \
142+ -a discourse/base:2.0.${{ env. TIMESTAMP }} -slim-arm64
114143
115- # Full timestamped
116- docker manifest create discourse/base:2.0.$TIMESTAMP \
117- -a discourse/base:2.0.$TIMESTAMP-amd64 \
118- -a discourse/base:2.0.$TIMESTAMP-arm64
144+ # Full Discourse `main` branch timestamped
145+ docker manifest create discourse/base:2.0.${{ env. TIMESTAMP }} \
146+ -a discourse/base:2.0.${{ env. TIMESTAMP }}-main -amd64 \
147+ -a discourse/base:2.0.${{ env. TIMESTAMP }}-main -arm64
119148
120- # Full release
149+ # Full Discourse `stable` branch timestamped
150+ docker manifest create discourse/base:2.0.${{ env.TIMESTAMP }}-stable \
151+ -a discourse/base:2.0.${{ env.TIMESTAMP }}-stable-amd64 \
152+ -a discourse/base:2.0.${{ env.TIMESTAMP }}-stable-arm64
153+
154+ # Full Discourse `main` branch release
121155 docker manifest create discourse/base:release \
122- -a discourse/base:2.0.$TIMESTAMP-amd64 \
123- -a discourse/base:2.0.$TIMESTAMP-arm64
156+ -a discourse/base:2.0.${{ env.TIMESTAMP }}-main-amd64 \
157+ -a discourse/base:2.0.${{ env.TIMESTAMP }}-main-arm64
158+
159+ # Full Discourse `stable` branch release
160+ docker manifest create discourse/base:release-stable \
161+ -a discourse/base:2.0.${{ env.TIMESTAMP }}-stable-amd64 \
162+ -a discourse/base:2.0.${{ env.TIMESTAMP }}-stable-arm64
124163
125164 # Dev timestamped
126- docker manifest create discourse/discourse_dev:$TIMESTAMP \
127- -a discourse/discourse_dev:$TIMESTAMP-amd64 \
128- -a discourse/discourse_dev:$TIMESTAMP-arm64
165+ docker manifest create discourse/discourse_dev:${{ env. TIMESTAMP }} \
166+ -a discourse/discourse_dev:${{ env. TIMESTAMP }} -amd64 \
167+ -a discourse/discourse_dev:${{ env. TIMESTAMP }} -arm64
129168
130169 # Dev release
131170 docker manifest create discourse/discourse_dev:release \
132- -a discourse/discourse_dev:$TIMESTAMP-amd64 \
133- -a discourse/discourse_dev:$TIMESTAMP-arm64
171+ -a discourse/discourse_dev:${{ env. TIMESTAMP }} -amd64 \
172+ -a discourse/discourse_dev:${{ env. TIMESTAMP }} -arm64
134173
135- docker manifest push discourse/base:2.0.$TIMESTAMP-slim
136- docker manifest push discourse/base:release-slim
137- docker manifest push discourse/base:2.0.$TIMESTAMP
174+ docker manifest push discourse/base:2.0.${{ env.TIMESTAMP }}-slim
175+ docker manifest push discourse/base:slim
176+ docker manifest push discourse/base:2.0.${{ env.TIMESTAMP }}
177+ docker manifest push discourse/base:2.0.${{ env.TIMESTAMP }}-stable
138178 docker manifest push discourse/base:release
139- docker manifest push discourse/discourse_dev:$TIMESTAMP
179+ docker manifest push discourse/base:release-stable
180+ docker manifest push discourse/discourse_dev:${{ env.TIMESTAMP }}
140181 docker manifest push discourse/discourse_dev:release
141182 test :
142183 runs-on : ubuntu-22.04${{ ((github.event_name != 'schedule') && '-8core') || '' }}
0 commit comments