Skip to content

Commit cfe54e2

Browse files
feat(build): use github actions to build docker images (#5380)
* add workflow to push images using GHA * add option to choose environment * fix makefile target for tests * disable build of images via jenkins x * run workflow from master only on master * minor tweak
1 parent a0c2ac4 commit cfe54e2

File tree

3 files changed

+193
-85
lines changed

3 files changed

+193
-85
lines changed

.github/workflows/images.yml

Lines changed: 192 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,204 @@
1-
name: V2 Build docker images
1+
name: Build & Push Docker Images
22

33
on:
4+
push:
5+
branches: [ master ]
6+
47
workflow_dispatch:
58
inputs:
69
docker-tag:
710
description: 'Docker tag for push (e.g. 2.0.0)'
811
default: 'latest'
912
required: false
1013

14+
env:
15+
GOLANG_VERSION: 1.20.9
16+
1117
jobs:
12-
placeholder:
13-
name: placeholder
18+
operator:
19+
runs-on: ubuntu-latest
20+
steps:
21+
- uses: actions/checkout@v4
22+
- uses: actions/setup-go@v3
23+
with:
24+
go-version: ${{ env.GOLANG_VERSION }}
25+
26+
- name: Set up Docker Buildx
27+
uses: docker/setup-buildx-action@v3
28+
29+
- name: Login to DockerHub
30+
uses: docker/login-action@v3
31+
with:
32+
username: ${{ secrets.DOCKER_USERNAME }}
33+
password: ${{ secrets.DOCKER_PASSWORD }}
34+
registry: ${{ secrets.DOCKER_REGISTRY }}
35+
36+
- name: Set default docker tag for builds from master
37+
id: docker-tag
38+
run: |
39+
USER_INPUT="${{ github.event.inputs.docker-tag }}"
40+
echo "value=${USER_INPUT:-latest}" >> $GITHUB_OUTPUT
41+
42+
43+
- name: Build and push
44+
working-directory: ./operator/
45+
env:
46+
DOCKER_REGISTRY: ${{ secrets.DOCKER_REGISTRY }}
47+
VERSION: ${{ steps.docker-tag.outputs.value }}
48+
run: |
49+
make docker-build docker-push
50+
51+
executor:
1452
runs-on: ubuntu-latest
15-
if: github.repository == 'seldonio/seldon-core' # Do not run this on forks.
1653
steps:
17-
- name: Echo Message
18-
run: echo "This is to make workflow available for V2 releases"
54+
- uses: actions/checkout@v4
55+
- name: Set up Docker Buildx
56+
uses: docker/setup-buildx-action@v3
57+
58+
- name: Login to DockerHub
59+
uses: docker/login-action@v3
60+
with:
61+
username: ${{ secrets.DOCKER_USERNAME }}
62+
password: ${{ secrets.DOCKER_PASSWORD }}
63+
registry: ${{ secrets.DOCKER_REGISTRY }}
64+
65+
- name: Set default docker tag for builds from master
66+
id: docker-tag
67+
run: |
68+
USER_INPUT="${{ github.event.inputs.docker-tag }}"
69+
echo "value=${USER_INPUT:-latest}" >> $GITHUB_OUTPUT
70+
71+
- name: Build and push
72+
working-directory: ./executor/
73+
env:
74+
DOCKER_REGISTRY: ${{ secrets.DOCKER_REGISTRY }}
75+
VERSION: ${{ steps.docker-tag.outputs.value }}
76+
run: |
77+
make docker-build docker-push
78+
79+
rclone-storage-initializer:
80+
runs-on: ubuntu-latest
81+
steps:
82+
- name: Checkout Git Commit
83+
uses: actions/checkout@v4
84+
85+
- name: Login to DockerHub
86+
uses: docker/login-action@v3
87+
with:
88+
username: ${{ secrets.DOCKER_USERNAME }}
89+
password: ${{ secrets.DOCKER_PASSWORD }}
90+
registry: ${{ secrets.DOCKER_REGISTRY }}
91+
92+
- name: Set default docker tag for builds from master
93+
id: docker-tag
94+
run: |
95+
USER_INPUT="${{ github.event.inputs.docker-tag }}"
96+
echo "value=${USER_INPUT:-latest}" >> $GITHUB_OUTPUT
97+
98+
- name: Build and push (Rclone Storage Initializer)
99+
working-directory: ./components/rclone-storage-initializer
100+
env:
101+
DOCKER_REGISTRY: ${{ secrets.DOCKER_REGISTRY }}
102+
VERSION: ${{ steps.docker-tag.outputs.value }}
103+
run: |
104+
make docker-build docker-push
105+
106+
s2i-wrapper:
107+
runs-on: ubuntu-latest
108+
steps:
109+
- name: Checkout Git Commit
110+
uses: actions/checkout@v4
111+
112+
- name: Set up Docker Buildx
113+
uses: docker/setup-buildx-action@v3
114+
115+
- name: Login to DockerHub
116+
uses: docker/login-action@v3
117+
with:
118+
username: ${{ secrets.DOCKER_USERNAME }}
119+
password: ${{ secrets.DOCKER_PASSWORD }}
120+
registry: ${{ secrets.DOCKER_REGISTRY }}
121+
122+
- name: Set default docker tag for builds from master
123+
id: docker-tag
124+
run: |
125+
USER_INPUT="${{ github.event.inputs.docker-tag }}"
126+
echo "value=${USER_INPUT:-latest}" >> $GITHUB_OUTPUT
127+
128+
- name: Build and push (Conda Base Image)
129+
working-directory: ./wrappers/s2i/python
130+
env:
131+
DOCKER_REGISTRY: ${{ secrets.DOCKER_REGISTRY }}
132+
VERSION: ${{ steps.docker-tag.outputs.value }}
133+
run: |
134+
make docker-build-conda-base docker-push-conda-base
135+
136+
- name: Build and push (Base Wrapper)
137+
working-directory: ./wrappers/s2i/python
138+
env:
139+
DOCKER_REGISTRY: ${{ secrets.DOCKER_REGISTRY }}
140+
VERSION: ${{ steps.docker-tag.outputs.value }}
141+
run: |
142+
make docker-build docker-push PYTHON_VERSION=3.8.10
143+
make docker-tag-base-python docker-push-base-python PYTHON_VERSION=3.8.10
144+
docker save -o /tmp/base-wrapper.tar ${DOCKER_REGISTRY}/seldon-core-s2i-python38:${VERSION}
145+
146+
- name: Upload artifact
147+
uses: actions/upload-artifact@v3
148+
with:
149+
name: base-wrapper
150+
path: /tmp/base-wrapper.tar
151+
152+
prepackaged-components:
153+
runs-on: ubuntu-latest
154+
needs: s2i-wrapper
155+
strategy:
156+
matrix:
157+
server:
158+
- servers/sklearnserver
159+
- servers/xgboostserver
160+
- servers/mlflowserver
161+
- servers/tfserving_proxy
162+
- components/alibi-explain-server
163+
- components/alibi-detect-server
164+
steps:
165+
- name: Checkout Git Commit
166+
uses: actions/checkout@v4
167+
168+
- name: Login to DockerHub
169+
uses: docker/login-action@v3
170+
with:
171+
username: ${{ secrets.DOCKER_USERNAME }}
172+
password: ${{ secrets.DOCKER_PASSWORD }}
173+
registry: ${{ secrets.DOCKER_REGISTRY }}
174+
175+
- name: Set default docker tag for builds from master
176+
id: docker-tag
177+
run: |
178+
USER_INPUT="${{ github.event.inputs.docker-tag }}"
179+
echo "value=${USER_INPUT:-latest}" >> $GITHUB_OUTPUT
180+
181+
- name: Install CLI tools from OpenShift Mirror
182+
uses: redhat-actions/openshift-tools-installer@v1
183+
with:
184+
github_pat: ${{ github.token }}
185+
source: "github"
186+
s2i: "latest"
187+
188+
- name: Download artifact
189+
uses: actions/download-artifact@v3
190+
with:
191+
name: base-wrapper
192+
path: /tmp
193+
194+
- name: Load image
195+
run: |
196+
docker load --input /tmp/base-wrapper.tar
197+
198+
- name: Build and push (Prepackaged Server Image)
199+
working-directory: ./${{ matrix.server }}/
200+
env:
201+
DOCKER_REGISTRY: ${{ secrets.DOCKER_REGISTRY }}
202+
VERSION: ${{ steps.docker-tag.outputs.value }}
203+
run: |
204+
make docker-build docker-push

.lighthouse/jenkins-x/release.yaml

Lines changed: 0 additions & 78 deletions
This file was deleted.

testing/scripts/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ kind_build_misc:
5454
kind_build_images: build_protos kind_build_operator kind_build_executor kind_build_prepackaged kind_build_alibi_explain kind_build_alibi_detect kind_build_rclone_storage_initializer
5555

5656
.PHONY: kind_build_test_images
57-
kind_build_test_images: make kind_build_test_models kind_build_misc
57+
kind_build_test_images: kind_build_test_models kind_build_misc
5858

5959
.PHONY: helm_setup
6060
helm_setup:

0 commit comments

Comments
 (0)