Skip to content

Commit 5220dda

Browse files
authored
CI: Build docker images for all services and archs (#556)
After refactoring the server package, the CI for building and releasing did not longer work. Additionally the registry and discovery services are not published. These changes fix the build in the release CI for the repository service and add the missing ones. Builds are now executed using QEMU for amd64, armv7 and arm64 to create a multi-platform image. Fixes #555
1 parent bce50bc commit 5220dda

1 file changed

Lines changed: 110 additions & 6 deletions

File tree

.github/workflows/release.yml

Lines changed: 110 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ on:
44
release:
55
types: [published]
66

7+
env:
8+
TARGET_PLATFORM: "linux/amd64,linux/arm/v7,linux/arm64"
9+
710
jobs:
811
sdk-publish:
912
# This job publishes the package to PyPI
@@ -59,7 +62,54 @@ jobs:
5962
with:
6063
password: ${{ secrets.PYPI_ORG_TOKEN }}
6164

62-
server-publish:
65+
server-repository-publish:
66+
# This job publishes the server docker image to DockerHub
67+
runs-on: ubuntu-latest
68+
defaults:
69+
run:
70+
working-directory: ./server
71+
steps:
72+
- name: Checkout Repository
73+
uses: actions/checkout@v4
74+
75+
- name: Extract Docker image metadata
76+
id: meta
77+
uses: docker/metadata-action@v5
78+
with:
79+
images: eclipsebasyx/basyx-python-repository
80+
# This fetches the latest git tag and adds an additional "latest" to it, so e.g. `2.1.0,latest`
81+
tags: |
82+
type=semver,pattern={{version}}
83+
type=raw,value=latest
84+
labels: |
85+
org.opencontainers.image.title=BaSyx Python Repository Service
86+
org.opencontainers.image.description=Eclipse BaSyx Python SDK - Repository HTTP Server
87+
org.opencontainers.image.source=https://github.com/eclipse-basyx/basyx-python-sdk/tree/main/server
88+
org.opencontainers.image.licenses=MIT
89+
90+
- name: Log in to Docker Hub
91+
uses: docker/login-action@v4
92+
with:
93+
username: ${{ secrets.DOCKER_HUB_USER }}
94+
password: ${{ secrets.DOCKER_HUB_TOKEN }}
95+
96+
- name: Setup QEMU
97+
uses: docker/setup-qemu-action@v4
98+
99+
- name: Set up Docker Buildx
100+
uses: docker/setup-buildx-action@v4
101+
102+
- name: Build and Push Repository Docker Image
103+
uses: docker/build-push-action@v6
104+
with:
105+
context: .
106+
file: ./server/docker/repository/Dockerfile
107+
platforms: ${{ env.TARGET_PLATFORM }}
108+
push: true
109+
tags: ${{ steps.meta.outputs.tags }}
110+
labels: ${{ steps.meta.outputs.labels }}
111+
112+
server-discovery-publish:
63113
# This job publishes the server docker image to DockerHub
64114
runs-on: ubuntu-latest
65115
defaults:
@@ -73,14 +123,14 @@ jobs:
73123
id: meta
74124
uses: docker/metadata-action@v5
75125
with:
76-
images: eclipsebasyx/basyx-python-server
126+
images: eclipsebasyx/basyx-python-discovery
77127
# This fetches the latest git tag and adds an additional "latest" to it, so e.g. `2.1.0,latest`
78128
tags: |
79129
type=semver,pattern={{version}}
80130
type=raw,value=latest
81131
labels: |
82-
org.opencontainers.image.title=BaSyx Python Server
83-
org.opencontainers.image.description=Eclipse BaSyx Python SDK - HTTP Server
132+
org.opencontainers.image.title=BaSyx Python Discovery Service
133+
org.opencontainers.image.description=Eclipse BaSyx Python SDK - Discovery HTTP Server
84134
org.opencontainers.image.source=https://github.com/eclipse-basyx/basyx-python-sdk/tree/main/server
85135
org.opencontainers.image.licenses=MIT
86136
@@ -90,11 +140,65 @@ jobs:
90140
username: ${{ secrets.DOCKER_HUB_USER }}
91141
password: ${{ secrets.DOCKER_HUB_TOKEN }}
92142

93-
- name: Build and Push Docker Image
143+
- name: Setup QEMU
144+
uses: docker/setup-qemu-action@v4
145+
146+
- name: Set up Docker Buildx
147+
uses: docker/setup-buildx-action@v4
148+
149+
- name: Build and Push Repository Docker Image
150+
uses: docker/build-push-action@v6
151+
with:
152+
context: .
153+
file: ./server/docker/discovery/Dockerfile
154+
platforms: ${{ env.TARGET_PLATFORM }}
155+
push: true
156+
tags: ${{ steps.meta.outputs.tags }}
157+
labels: ${{ steps.meta.outputs.labels }}
158+
159+
server-registry-publish:
160+
# This job publishes the server docker image to DockerHub
161+
runs-on: ubuntu-latest
162+
defaults:
163+
run:
164+
working-directory: ./server
165+
steps:
166+
- name: Checkout Repository
167+
uses: actions/checkout@v4
168+
169+
- name: Extract Docker image metadata
170+
id: meta
171+
uses: docker/metadata-action@v5
172+
with:
173+
images: eclipsebasyx/basyx-python-registry
174+
# This fetches the latest git tag and adds an additional "latest" to it, so e.g. `2.1.0,latest`
175+
tags: |
176+
type=semver,pattern={{version}}
177+
type=raw,value=latest
178+
labels: |
179+
org.opencontainers.image.title=BaSyx Python Registry Service
180+
org.opencontainers.image.description=Eclipse BaSyx Python SDK - Registry HTTP Server
181+
org.opencontainers.image.source=https://github.com/eclipse-basyx/basyx-python-sdk/tree/main/server
182+
org.opencontainers.image.licenses=MIT
183+
184+
- name: Log in to Docker Hub
185+
uses: docker/login-action@v4
186+
with:
187+
username: ${{ secrets.DOCKER_HUB_USER }}
188+
password: ${{ secrets.DOCKER_HUB_TOKEN }}
189+
190+
- name: Setup QEMU
191+
uses: docker/setup-qemu-action@v4
192+
193+
- name: Set up Docker Buildx
194+
uses: docker/setup-buildx-action@v4
195+
196+
- name: Build and Push Repository Docker Image
94197
uses: docker/build-push-action@v6
95198
with:
96199
context: .
97-
file: ./server/Dockerfile # Todo: Update paths
200+
file: ./server/docker/registry/Dockerfile
201+
platforms: ${{ env.TARGET_PLATFORM }}
98202
push: true
99203
tags: ${{ steps.meta.outputs.tags }}
100204
labels: ${{ steps.meta.outputs.labels }}

0 commit comments

Comments
 (0)