forked from RotherOSS/otobo
-
Notifications
You must be signed in to change notification settings - Fork 0
143 lines (131 loc) · 5.1 KB
/
docker_image_update_all.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
%YAML 1.1
---
name: 'DockerImageUpdateAll'
# Adapted from https://github.com/marketplace/actions/docker-image-update-checker#minimal
on:
workflow_dispatch:
jobs:
CheckDockerImageUpdate:
runs-on: 'ubuntu-latest'
strategy:
# create different images
# note that there is no release build for the otobodockerupdatetest-web-kerberos target
matrix:
target: [ 'otobo-web', 'otobo-nginx-webproxy', 'otobo-nginx-kerberos-webproxy' ]
docker_tag: [ 'rel-11_0_5', 'rel-11_0_6', 'rel-11_0_7', 'latest-11_0' ]
include:
-
# this currently has to be updated every release
docker_tag: 'latest-11_0'
patch: 'rel-11_0_7'
-
target: 'otobo-web'
dockerfile: 'otobo.web.dockerfile'
context: '.'
repository: 'rotheross/otobo'
base_image: 'perl:5.38-bookworm'
-
target: 'otobo-nginx-webproxy'
dockerfile: 'otobo.nginx.dockerfile'
context: 'scripts/nginx'
repository: 'rotheross/otobo-nginx-webproxy'
base_image: 'nginx:mainline'
-
target: 'otobo-nginx-kerberos-webproxy'
dockerfile: 'otobo.nginx.dockerfile'
context: 'scripts/nginx'
repository: 'rotheross/otobo-nginx-kerberos-webproxy'
base_image: 'nginx:mainline'
steps:
- name: Setting up the environment file (rel)
if: ${{ startsWith(matrix.docker_tag, 'rel') }}
run: |
patch=${{ matrix.docker_tag }}
docker_tag=${{ matrix.docker_tag }}
build_date=$(date -u +'%Y-%m-%dT%H:%M:%SZ')
(
echo "otobo_branch=${patch}"
echo "otobo_docker_tag=${docker_tag}"
echo "otobo_ref=${{ matrix.repository }}:${docker_tag}"
echo "otobo_base_image=${{ matrix.base_image }}"
echo "otobo_build_date=${build_date}"
) >> $GITHUB_ENV
- name: Setting up the environment file (latest)
if: ${{ startsWith(matrix.docker_tag, 'latest') }}
run: |
patch=${{ matrix.patch }}
docker_tag=${{ matrix.docker_tag }}
build_date=$(date -u +'%Y-%m-%dT%H:%M:%SZ')
(
echo "otobo_branch=${patch}"
echo "otobo_docker_tag=${docker_tag}"
echo "otobo_ref=${{ matrix.repository }}:${docker_tag}"
echo "otobo_base_image=${{ matrix.base_image }}"
echo "otobo_build_date=${build_date}"
) >> $GITHUB_ENV
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
-
name: 'check out the relevant OTOBO branch'
uses: actions/checkout@v4
with:
ref: ${{ env.otobo_branch }}
-
# needed for build arg GIT_COMMIT
# can't use github.sha here as we need the commit of the checked out branch
name: 'get the commit SHA of the current checkout'
run: echo "otobo_commit=$(git log -1 '--format=format:%H')" >> $GITHUB_ENV
-
# build the image, not pushing yet, no pushing as DockerHub access is not set up yet
# Caching with Github Actions Cache, limited to 10 GB
# context: . indicates that the current checkout is used
name: Build
uses: docker/build-push-action@v6
with:
load: true
context: ${{ matrix.context }}
file: ${{ matrix.dockerfile }}
pull: true
build-args: |
BUILD_DATE=${{ env.otobo_build_date }}
DOCKER_TAG=${{ env.otobo_docker_tag }}
GIT_REPO=${{ github.repositoryUrl }}
GIT_BRANCH=${{ env.otobo_branch }}
GIT_COMMIT=${{ env.otobo_commit }}
target: ${{ matrix.target }}
tags: ${{ env.otobo_ref }}
cache-from: type=gha
cache-to: type=gha,mode=max
-
# otobo_first_time hasn't run yet, so /opt/otobodockerupdatetest is still empty
name: Info
run: |
docker run --rm -w /opt/otobo_install/otobo_next --entrypoint /bin/bash $otobo_ref -c "more git-repo.txt git-branch.txt git-commit.txt RELEASE | cat"
-
# login to Docker Hub only after the build
name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
# finally upload to DockerHub
# the built image is already available in the job
name: Push to DockerHub
uses: docker/build-push-action@v6
with:
push: true
context: ${{ matrix.context }}
file: ${{ matrix.dockerfile }}
pull: true
build-args: |
BUILD_DATE=${{ env.otobo_build_date }}
DOCKER_TAG=${{ env.otobo_docker_tag }}
GIT_REPO=${{ github.repositoryUrl }}
GIT_BRANCH=${{ env.otobo_branch }}
GIT_COMMIT=${{ env.otobo_commit }}
target: ${{ matrix.target }}
tags: ${{ env.otobo_ref }}
cache-from: type=gha
cache-to: type=gha,mode=max