41
41
DEV_CONTAINER_REGISTRY : ${{ vars.DEV_CONTAINER_REGISTRY }}
42
42
DEV_LOGIN_USERNAME : ${{ secrets.DEV_LOGIN_USERNAME }}
43
43
DEV_LOGIN_PASSWORD : ${{ secrets.DEV_LOGIN_PASSWORD }}
44
+ PARENT_IMAGE_NAME : ${{ vars.PARENT_IMAGE_NAME }}
45
+ DOCKERFILE : ${{ vars.DOCKERFILE }}
46
+ HEAD_REF : ${{ needs.configure-branch-name.outputs.gh_head_ref }}
44
47
IMAGE_TAG : ${{ github.event_name == 'release' && github.event.release.tag_name || needs.configure-branch-name.outputs.gh_head_ref }}
45
48
strategy :
46
49
matrix :
65
68
- name : Compile Requirements
66
69
run : |
67
70
cd ${{ github.workspace }}/submodules/parent-images
68
- git checkout ${{ needs.configure-branch-name.outputs.gh_head_ref }}
71
+ git checkout ${{ env.HEAD_REF }}
69
72
pip-compile requirements/${{ matrix.parent_image_type }}-requirements.in
70
73
71
74
- name : Set up Docker Buildx
@@ -85,30 +88,158 @@ jobs:
85
88
username : " ${{ env.DEV_LOGIN_USERNAME }}"
86
89
password : " ${{ env.DEV_LOGIN_PASSWORD }}"
87
90
88
- - name : Build & Push refinery-parent-images :${{ needs.configure-branch-name.outputs.gh_head_ref }}-${{ matrix.parent_image_type }}
91
+ - name : Build & Push ${{ env.PARENT_IMAGE_NAME }} :${{ env.HEAD_REF }}-${{ matrix.parent_image_type }}
89
92
uses : docker/build-push-action@v5
90
93
with :
91
94
context : .
92
- cache-from : type=registry,ref=${{ env.DEV_CONTAINER_REGISTRY }}/refinery-parent-images :${{ needs.configure-branch-name.outputs.gh_head_ref }}-${{ matrix.parent_image_type }}-cache
93
- cache-to : type=registry,ref=${{ env.DEV_CONTAINER_REGISTRY }}/refinery-parent-images :${{ needs.configure-branch-name.outputs.gh_head_ref }}-${{ matrix.parent_image_type }}-cache,mode=max,image-manifest=true
95
+ cache-from : type=registry,ref=${{ env.DEV_CONTAINER_REGISTRY }}/${{ env.PARENT_IMAGE_NAME }} :${{ env.HEAD_REF }}-${{ matrix.parent_image_type }}-cache
96
+ cache-to : type=registry,ref=${{ env.DEV_CONTAINER_REGISTRY }}/${{ env.PARENT_IMAGE_NAME }} :${{ env.HEAD_REF }}-${{ matrix.parent_image_type }}-cache,mode=max,image-manifest=true
94
97
platforms : linux/amd64
95
- file : Dockerfile
96
- tags : ${{ env.DEV_CONTAINER_REGISTRY }}/refinery-parent-images :${{ needs.configure-branch-name.outputs.gh_head_ref }}-${{ matrix.parent_image_type }}
98
+ file : ${{ env.DOCKERFILE }}
99
+ tags : ${{ env.DEV_CONTAINER_REGISTRY }}/${{ env.PARENT_IMAGE_NAME }} :${{ env.HEAD_REF }}-${{ matrix.parent_image_type }}
97
100
push : true
98
101
build-args : |
99
102
platform=linux/amd64
100
- label=dockerfile-path=https://github.com/refinery-${{ matrix.parent_image_type }}-parent-image/blob/${{ github.sha }}/Dockerfile
103
+ label=dockerfile-path=https://github.com/refinery-${{ matrix.parent_image_type }}-parent-image/blob/${{ github.sha }}/${{ env.DOCKERFILE }}
101
104
102
- - name : Build & Push refinery-parent-images :${{ needs.configure-branch-name.outputs.gh_head_ref }}-${{ matrix.parent_image_type }}-arm64
105
+ - name : Build & Push ${{ env.PARENT_IMAGE_NAME }} :${{ env.HEAD_REF }}-${{ matrix.parent_image_type }}-arm64
103
106
uses : docker/build-push-action@v5
104
107
with :
105
108
context : .
106
- cache-from : type=registry,ref=${{ env.DEV_CONTAINER_REGISTRY }}/refinery-parent-images :${{ needs.configure-branch-name.outputs.gh_head_ref }}-${{ matrix.parent_image_type }}-arm64-cache
107
- cache-to : type=registry,ref=${{ env.DEV_CONTAINER_REGISTRY }}/refinery-parent-images :${{ needs.configure-branch-name.outputs.gh_head_ref }}-${{ matrix.parent_image_type }}-arm64-cache,mode=max,image-manifest=true
109
+ cache-from : type=registry,ref=${{ env.DEV_CONTAINER_REGISTRY }}/${{ env.PARENT_IMAGE_NAME }} :${{ env.HEAD_REF }}-${{ matrix.parent_image_type }}-arm64-cache
110
+ cache-to : type=registry,ref=${{ env.DEV_CONTAINER_REGISTRY }}/${{ env.PARENT_IMAGE_NAME }} :${{ env.HEAD_REF }}-${{ matrix.parent_image_type }}-arm64-cache,mode=max,image-manifest=true
108
111
platforms : linux/arm64
109
- file : Dockerfile
110
- tags : ${{ env.DEV_CONTAINER_REGISTRY }}/refinery-parent-images :${{ needs.configure-branch-name.outputs.gh_head_ref }}-${{ matrix.parent_image_type }}-arm64
112
+ file : ${{ env.DOCKERFILE }}
113
+ tags : ${{ env.DEV_CONTAINER_REGISTRY }}/${{ env.PARENT_IMAGE_NAME }} :${{ env.HEAD_REF }}-${{ matrix.parent_image_type }}-arm64
111
114
push : true
112
115
build-args : |
113
116
platform=linux/arm64
114
- label=dockerfile-path=https://github.com/refinery-${{ matrix.parent_image_type }}-parent-image/blob/${{ github.sha }}/Dockerfile
117
+ label=dockerfile-path=https://github.com/refinery-${{ matrix.parent_image_type }}-parent-image/blob/${{ github.sha }}/${{ env.DOCKERFILE }}
118
+
119
+ pi-update-app :
120
+ name : ' Parent Images: App'
121
+ runs-on : ubuntu-latest
122
+ needs : [pi-matrix, pi-build, configure-branch-name]
123
+ environment : dev
124
+ continue-on-error : true
125
+ env :
126
+ PYTHON_VERSION : ${{ vars.PYTHON_VERSION }}
127
+ DEV_CONTAINER_REGISTRY : ${{ vars.DEV_CONTAINER_REGISTRY }}
128
+ PARENT_IMAGE_NAME : ${{ vars.PARENT_IMAGE_NAME }}
129
+ DOCKERFILE : ${{ vars.DOCKERFILE }}
130
+ HEAD_REF : ${{ needs.configure-branch-name.outputs.gh_head_ref }}
131
+ strategy :
132
+ matrix :
133
+ include : ${{ fromJson(needs.pi-matrix.outputs.include) }}
134
+ steps :
135
+ - name : Checkout Repository
136
+ uses : actions/checkout@v4
137
+ with :
138
+ submodules : ' true'
139
+
140
+ - name : Set up Python
141
+ if : matrix.parent_image_type != 'next'
142
+ uses : actions/setup-python@v5
143
+ with :
144
+ python-version : ${{ env.PYTHON_VERSION }}
145
+
146
+ - name : Install Dependencies
147
+ if : matrix.parent_image_type != 'next'
148
+ run : python -m pip install pip-tools
149
+
150
+ - name : Clone cicd-deployment-scripts
151
+ run : git clone https://oauth2:${{ secrets.GH_TOKEN }}@github.com/code-kern-ai/cicd-deployment-scripts.git
152
+
153
+ - name : Clone ${{ matrix.app }}
154
+ run : |
155
+ git clone --recurse-submodules https://oauth2:${{ secrets.GH_TOKEN }}@github.com/${{ github.repository_owner }}/${{ matrix.app }}.git
156
+ cd ${{ github.workspace }}/${{ matrix.app }}
157
+
158
+ git config user.email "[email protected] "
159
+ git config user.name "GitHub Actions"
160
+
161
+ git checkout -b ${{ env.HEAD_REF }} || git checkout ${{ env.HEAD_REF }}
162
+
163
+ - name : Compile Requirements (Python)
164
+ if : matrix.parent_image_type != 'next'
165
+ run : |
166
+ cd ${{ github.workspace }}/${{ matrix.app }}/submodules/parent-images
167
+ git checkout ${{ env.HEAD_REF }}
168
+ cd ${{ github.workspace }}/${{ matrix.app }}
169
+ pip-compile --quiet \
170
+ --output-file requirements/${{ matrix.parent_image_type }}-requirements.txt \
171
+ submodules/parent-images/requirements/${{ matrix.parent_image_type }}-requirements.in
172
+
173
+ - name : Compile Requirements (Next)
174
+ if : matrix.parent_image_type == 'next'
175
+ run : |
176
+ cd ${{ github.workspace }}
177
+ jq --slurp '.[0] * .[1]' \
178
+ package.json \
179
+ ${{ matrix.app }}/package.json \
180
+ > package.json.tmp
181
+ mv package.json.tmp ${{ matrix.app }}/package.json
182
+
183
+ - name : Perform Edit/Git Operations (Python)
184
+ if : matrix.parent_image_type != 'next'
185
+ run : |
186
+ cd ${{ github.workspace }}/${{ matrix.app }}
187
+
188
+ bash ${{ github.workspace }}/cicd-deployment-scripts/pi/edit_dockerfile.sh \
189
+ -i "${{ env.PARENT_IMAGE_NAME }}" \
190
+ -t "${{ matrix.parent_image_type }}" \
191
+ -l "${{ env.HEAD_REF }}" \
192
+ -r "${{ env.DEV_CONTAINER_REGISTRY }}" \
193
+ -d "${{ env.DOCKERFILE }}"
194
+
195
+ git add requirements/${{ matrix.parent_image_type }}-requirements.txt
196
+ git commit -m "ci: update ${{ matrix.parent_image_type }}-requirements.txt" || true
197
+ git push origin ${{ env.HEAD_REF }}
198
+ echo "::notice::${{ matrix.app }} - updated ${{ matrix.parent_image_type }}-requirements.txt"
199
+
200
+ export exitcode=0
201
+ pip-compile --quiet \
202
+ --output-file requirements.txt \
203
+ requirements/requirements.in || export exitcode=$?
204
+
205
+ if [ $exitcode -ne 0 ]; then
206
+ echo "::error::pip-compile failed with exit code $exitcode"
207
+ exit $exitcode
208
+ else
209
+ git add requirements.txt
210
+ git commit -m "ci: update requirements.txt" || true
211
+ git push origin ${{ env.HEAD_REF }}
212
+ echo "::notice::${{ matrix.app }} - updated requirements.txt"
213
+ fi
214
+
215
+ gh pr create --draft \
216
+ --title "${{ github.event.pull_request.title }}" \
217
+ --body "${{ github.event.pull_request.body }}" \
218
+ --base dev \
219
+ --head ${{ env.HEAD_REF }} \
220
+ --repo ${{ github.repository_owner }}/${{ matrix.app }} || true
221
+
222
+ - name : Perform Edit/Git Operations (Next)
223
+ if : matrix.parent_image_type == 'next'
224
+ run : |
225
+ cd ${{ github.workspace }}/${{ matrix.app }}
226
+
227
+ bash ${{ github.workspace }}/cicd-deployment-scripts/pi/edit_dockerfile.sh \
228
+ -i "${{ env.PARENT_IMAGE_NAME }}" \
229
+ -t "${{ matrix.parent_image_type }}" \
230
+ -l "${{ env.HEAD_REF }}" \
231
+ -r "${{ env.DEV_CONTAINER_REGISTRY }}" \
232
+ -d "${{ env.DOCKERFILE }}"
233
+
234
+ git add package.json
235
+ git commit -m "ci: update ${{ matrix.parent_image_type }} package.json" || true
236
+ git push origin ${{ env.HEAD_REF }}
237
+ echo "::notice::${{ matrix.app }} - updated ${{ matrix.parent_image_type }} package.json"
238
+
239
+ gh pr create --draft \
240
+ --title "${{ github.event.pull_request.title }}" \
241
+ --body "${{ github.event.pull_request.body }}" \
242
+ --base dev \
243
+ --head ${{ env.HEAD_REF }} \
244
+ --repo ${{ github.repository_owner }}/${{ matrix.app }} || true
245
+
0 commit comments