1
+ name : Build & Publish JWA Docker image
2
+ on :
3
+ push :
4
+ branches :
5
+ - main
6
+ - v*-branch
7
+ - notebooks-v1
8
+ paths :
9
+ - components/crud-web-apps/jupyter/**
10
+ - components/crud-web-apps/common/**
11
+ - releasing/version/VERSION
12
+
13
+ env :
14
+ IMG : ghcr.io/kubeflow/notebooks/jupyter-web-app
15
+ PLATFORMS : linux/amd64,linux/ppc64le,linux/arm64
16
+
17
+ jobs :
18
+ push_to_registry :
19
+ name : Build & Push image to GHCR Hub
20
+ runs-on : ubuntu-22.04
21
+ steps :
22
+ - name : Checkout
23
+ uses : actions/checkout@v4
24
+
25
+ - uses : dorny/paths-filter@v3
26
+ id : filter
27
+ with :
28
+ base : ${{ github.ref }}
29
+ filters : |
30
+ version:
31
+ - 'releasing/version/VERSION'
32
+
33
+ - name : Login to GHCR
34
+ uses : docker/login-action@v3
35
+ with :
36
+ registry : ghcr.io
37
+ username : ${{ github.actor }}
38
+ password : ${{ secrets.GITHUB_TOKEN }}
39
+
40
+ - name : Setup QEMU
41
+ uses : docker/setup-qemu-action@v3
42
+ with :
43
+ platforms : amd64,ppc64le,arm64
44
+
45
+ - name : Setup Docker Buildx
46
+ uses : docker/setup-buildx-action@v3
47
+
48
+ - name : Build and push multi-arch docker image
49
+ uses : docker/build-push-action@v5
50
+ with :
51
+ context : components/crud-web-apps/
52
+ file : components/crud-web-apps/jupyter/Dockerfile
53
+ platforms : ${{ env.PLATFORMS }}
54
+ push : true
55
+ tags : |
56
+ ${{ env.IMG }}:${{ github.sha }}
57
+ cache-from : type=gha
58
+ cache-to : type=gha,mode=max
59
+
60
+ - name : Build and push latest multi-arch docker image
61
+ if : github.ref == 'refs/heads/main'
62
+ uses : docker/build-push-action@v5
63
+ with :
64
+ context : components/crud-web-apps/
65
+ file : components/crud-web-apps/jupyter/Dockerfile
66
+ platforms : ${{ env.PLATFORMS }}
67
+ push : true
68
+ tags : |
69
+ ${{ env.IMG }}:latest
70
+ cache-from : type=gha
71
+ cache-to : type=gha,mode=max
72
+
73
+ - name : Get version tag
74
+ id : version-tag
75
+ if : steps.filter.outputs.version == 'true'
76
+ run : echo "version=$(cat releasing/version/VERSION)" >> $GITHUB_OUTPUT
77
+
78
+ - name : Build and push multi-arch docker image on Version change
79
+ id : version-build
80
+ if : steps.filter.outputs.version == 'true'
81
+ uses : docker/build-push-action@v5
82
+ with :
83
+ context : components/crud-web-apps/
84
+ file : components/crud-web-apps/jupyter/Dockerfile
85
+ platforms : ${{ env.PLATFORMS }}
86
+ push : true
87
+ tags : |
88
+ ${{ env.IMG }}:${{ steps.version-tag.outputs.version }}
89
+ cache-from : type=gha
90
+ cache-to : type=gha,mode=max
0 commit comments