1
+ name : Build OpenEMS Docker Image
2
+
3
+ on :
4
+ push :
5
+ branches :
6
+ - develop
7
+ - main
8
+ tags :
9
+ - " *.*.*"
10
+
11
+ jobs :
12
+ docker :
13
+ runs-on : ubuntu-latest
14
+ strategy :
15
+ fail-fast : true
16
+ matrix :
17
+ image : [edge, backend, ui-edge, ui-backend]
18
+ include :
19
+ - image : edge
20
+ dockerfile : tools/docker/edge/Dockerfile
21
+ args : " "
22
+ - image : ui-edge
23
+ dockerfile : tools/docker/ui/Dockerfile
24
+ args : " VERSION=openems,openems-edge-docker"
25
+ - image : backend
26
+ dockerfile : tools/docker/backend/Dockerfile
27
+ args : " "
28
+ - image : ui-backend
29
+ dockerfile : tools/docker/ui/Dockerfile
30
+ args : " VERSION=openems,openems-backend-docker"
31
+ permissions :
32
+ packages : write
33
+ contents : read
34
+
35
+ steps :
36
+ - name : Checkout
37
+ uses : actions/checkout@v4
38
+
39
+ - name : Set up QEMU
40
+ uses : docker/setup-qemu-action@v3
41
+
42
+ - name : Set up Docker Buildx
43
+ uses : docker/setup-buildx-action@v3
44
+
45
+ - name : Get cleaned branch name
46
+ id : clean_name
47
+ run : |
48
+ REF_NAME=$(echo "${{ github.ref }}" | sed -e 's/refs\/heads\///' -e 's/refs\/tags\///' -e 's/release\/v//')
49
+ echo "branch=${REF_NAME}-test" >> "$GITHUB_OUTPUT"
50
+
51
+ - name : Login to Docker Hub
52
+ uses : docker/login-action@v3
53
+ with :
54
+ username : ${{ secrets.DOCKERHUB_USERNAME }}
55
+ password : ${{ secrets.DOCKERHUB_TOKEN }}
56
+
57
+ - name : Login to GitHub Container Registry
58
+ uses : docker/login-action@v3
59
+ with :
60
+ registry : ghcr.io
61
+ username : ${{ github.REPOSITORY_OWNER }}
62
+ password : ${{ secrets.GITHUB_TOKEN }}
63
+
64
+ - name : Extract metadata (tags, labels) for Docker
65
+ id : meta
66
+ uses : docker/metadata-action@v5
67
+ with :
68
+ images : |
69
+ openems/${{ matrix.image }}
70
+ ghcr.io/openems/${{ matrix.image }}
71
+ labels : |
72
+ org.opencontainers.image.authors=OpenEMS
73
+ org.opencontainers.image.title=OpenEMS ${{ matrix.image }}
74
+ org.opencontainers.image.vendor=OpenEMS <openems.io>
75
+ tags : |
76
+ type=semver,pattern={{version}}
77
+ type=raw,value=latest,enable=${{ github.ref == 'refs/heads/master' }}
78
+ type=raw,value=develop,enable=${{ github.ref == 'refs/heads/develop' }}
79
+
80
+ - name : Build and push Docker images
81
+ uses : docker/build-push-action@v5
82
+ with :
83
+ file : ${{ matrix.dockerfile }}
84
+ platforms : linux/amd64, linux/arm64
85
+ push : true
86
+ tags : ${{ steps.meta.outputs.tags }}
87
+ labels : ${{ steps.meta.outputs.labels }}
88
+ build-args : ${{ matrix.args }}
0 commit comments