-
Notifications
You must be signed in to change notification settings - Fork 68
230 lines (187 loc) · 9.88 KB
/
docker-image-build.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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
name: All in One Test
on:
push:
branches:
- feature/docker-image
# define the workflow that will trigger this workflow to run
# workflow_run:
# workflows: [sharing data in a workflow]
# types:
# - completed
# allow the workflow to run manually with version as input
# workflow_dispatch:
# inputs:
# build_version:
# description: 'Crawler Version Number'
# required: false
# type: string
# manually set the version number of testing purpose
env:
manual_build_version: "7.77.778"
committer_types: "es solr db"
jobs:
# job to build the base crawler image
build-image:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: feature/docker-image
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
# download the crawler-info file from the maven build workflow
#- name: Download artifact
# id: download-artifact
# uses: dawidd6/action-download-artifact@v2
# with:
# workflow: mvn-build-upload.yml
# branch: dk-actions-v4
# name: crawler-info
# if_no_artifact_found: fail
# check which version value whould be used
# - name: check condition
# uses: haya14busa/action-cond@v1
# id: version_value_check
# with:
# cond: $manual_build_version == '9.99'
# #cond: ${{ inputs.build_version == '' }}
# if_true: $(cat pom.xml | grep -m1 "version" | sed 's/<.*>\(.*\)<.*>/\1/' | sed 's/^[ ]*//g')
# #if_false: ${{ inputs.build_version }}
# if_false: $manual_build_version
# check which value should be used as the version value
- name: Use conditional value
run: |
if [[ $manual_build_version == '' ]]; then
echo "tmp_version=$(cat pom.xml | grep -m1 "version" | sed 's/<.*>\(.*\)<.*>/\1/' | sed 's/^[ ]*//g')" >> $GITHUB_ENV
else
echo "tmp_version=$manual_build_version" >> $GITHUB_ENV
fi
#run: echo "version=${{ steps.version_value_check.outputs.value }}" >> $GITHUB_ENV
# echo "tmp_version=$(cat pom.xml | grep -m1 "version" | sed 's/<.*>\(.*\)<.*>/\1/' | sed 's/^[ ]*//g')" >> $GITHUB_ENV
# print the value of the env version variable for debugging use
- name: print the value of GITHUB_ENV:version
run: |
#echo "read-data-version:$(cat pom.xml | grep -m1 "version" | sed 's/<.*>\(.*\)<.*>/\1/' | sed 's/^[ ]*//g')"
#echo "input-version: ${{ inputs.build_version }}"
echo "input-version: $manual_build_version"
echo "GITHUB_ENV_TMP_Version: ${{ env.tmp_version }}"
# convert the string to lower case for SNAPSHOT build
- name: convert string to lowercase
id: string
uses: ASzc/change-string-case-action@v1
with:
string: ${{ env.tmp_version }}
# assign the lowercase value back to an variable for later use
- run: |
echo "version=${{ steps.string.outputs.lowercase }}" >> $GITHUB_ENV
#echo "version=${{ steps.string.outputs.lowercase }}" >> $GITHUB_ENV
echo "lowercase: ${{ steps.string.outputs.lowercase }}"
# debug use only
- run: |
echo "GITHUB_ENV_Version: ${{ env.version }}"
# build the crawler base docker image
- name: Build docker base image
run: |
pwd
ls -a
docker build . --file .github/workflows/docker-files/Dockerfile-base --tag ${{env.version}}-crawler-base
# update the FROM statement in Dockerfile with the right version number
- name: Update Dockerfile with version to build
run: sed -i 's/replace-this-with-real-version/${{env.version}}/g' .github/workflows/docker-files/Dockerfile-com
# extract version number from value and assign it to different variables for tagging use
- name: Extract version numbers
run: |
if [[ "${{env.version}}" == *"-snapshot"* ]]; then
echo "snapshot_image=${{env.version}}" >> $GITHUB_ENV
else
# Extract major version
echo "major=$(echo ${{env.version}} | cut -d '.' -f 1)" >> $GITHUB_ENV
# Extract major_minor version
echo "major_minor=$(echo ${{env.version}} | cut -d '.' -f 1-2)" >> $GITHUB_ENV
# Extract major_minor_revis version
#echo "major_minor_revis=$(echo ${{env.version}} | cut -d '-' -f 1)" >> $GITHUB_ENV
fi
- name: print extracted version numbers
run: |
# Print extracted version numbers
echo "Major: ${{ env.major }}"
echo "Major_Minor: ${{ env.major_minor }}"
#echo "Major_Minor_Revis: ${{ env.major_minor_revis }}"
echo "Snapshot_Image: ${{ env.snapshot_image }}"
- name: Build new es committer image
run: |
for type in "${committer_types[@]}"; do
com_type=$type
cp .github/workflows/docker-files/Dockerfile-com .github/workflows/docker-files/Dockerfile-com-$type
sed -i 's/replace-this-with-committer-files-in-dockerfile/$type-folder/g' .github/workflows/docker-files/Dockerfile-com-$type
more .github/workflows/docker-files/Dockerfile-com-$type
docker build . --file .github/workflows/docker-files/Dockerfile-com-$type --build-arg build_version=${{env.version}} --tag ${{env.version}}-crawler-$type
docker image ls -a
done
# ### Repeat this section of code to build image for new committers, make sure the sed cmd
# ### is finding the right lines to replace
# - name: Build new es committer image
# run: |
# cp .github/workflows/docker-files/Dockerfile-com .github/workflows/docker-files/Dockerfile-com-es
# sed -i 's/replace-this-with-committer-files-in-dockerfile/mkdir .\/es-folder/g' .github/workflows/docker-files/Dockerfile-com-es
# more .github/workflows/docker-files/Dockerfile-com-es
# docker build . --file .github/workflows/docker-files/Dockerfile-com-es --build-arg build_version=${{env.version}} --tag ${{env.version}}-crawler-es
# docker image ls -a
# ### Repeat section
# - name: Build new solr committer image
# run: |
# cp .github/workflows/docker-files/Dockerfile-com .github/workflows/docker-files/Dockerfile-com-solr
# sed -i 's/replace-this-with-committer-files-in-dockerfile/mkdir .\/solr-folder/g' .github/workflows/docker-files/Dockerfile-com-solr
# more .github/workflows/docker-files/Dockerfile-com-solr
# docker build . --file .github/workflows/docker-files/Dockerfile-com-solr --build-arg build_version=${{env.version}} --tag ${{env.version}}-crawler-solr
# docker image ls -a
# # login to Dockerhub
# - name: Login to Docker Hub
# uses: docker/login-action@v3
# with:
# username: ${{ secrets.DOCKER_HUB_USERNAME }}
# password: ${{ secrets.DOCKER_HUB_PASSWORD }}
# ### For additional committers, repeat the docker image tag and docker push cmd
# # Tag and push images onto Dockerhub repo
# - name: Tag and Push images to Dockerhub
# run: |
# #committer_type="es solr db"
# # check if it is a snapshot build, if not, upload different favor of images
# if [[ "${{env.version}}" != *"-snapshot"* ]]; then
# docker image tag ${{env.version}}-crawler-base norconex/crawler:latest
# docker image tag ${{env.version}}-crawler-base norconex/crawler:${{env.major}}
# docker image tag ${{env.version}}-crawler-base norconex/crawler:${{env.major_minor}}
# docker image tag ${{env.version}}-crawler-base norconex/crawler:${{env.version}}
# for type in $committer_types; do
# docker image tag ${{env.version}}-crawler-es norconex/crawler:${{env.major}}-$type
# docker image tag ${{env.version}}-crawler-es norconex/crawler:${{env.major_minor}}-$type
# docker image tag ${{env.version}}-crawler-es norconex/crawler:${{env.version}}-$type
# done
# docker image ls -a
# # docker image tag ${{env.version}}-crawler-solr norconex/crawler:${{env.major}}-solr
# # docker image tag ${{env.version}}-crawler-solr norconex/crawler:${{env.major_minor}}-solr
# # docker image tag ${{env.version}}-crawler-solr norconex/crawler:${{env.version}}-solr
# # # upload to dockerhub
# # docker push norconex/crawler:latest
# # docker push norconex/crawler:${{env.major}}
# # docker push norconex/crawler:${{env.major_minor}}
# # docker push norconex/crawler:${{env.version}}
# # docker push norconex/crawler:${{env.major}}-es
# # docker push norconex/crawler:${{env.major_minor}}-es
# # docker push norconex/crawler:${{env.version}}-es
# # docker push norconex/crawler:${{env.major}}-solr
# # docker push norconex/crawler:${{env.major_minor}}-solr
# # docker push norconex/crawler:${{env.version}}-solr
# echo "Base, and committers images uploaded!"
# else
# # tag the local images with repo inform for upload use
# docker image tag ${{env.version}}-crawler-base norconex/crawler:${{env.version}}
# docker image tag ${{env.version}}-crawler-es norconex/crawler:${{env.version}}-es
# docker image tag ${{env.version}}-crawler-solr norconex/crawler:${{env.version}}-solr
# # upload tagged images to dockerhub
# docker push norconex/crawler:${{env.version}}
# docker push norconex/crawler:${{env.version}}-es
# docker push norconex/crawler:${{env.version}}-solr
# echo "snapshot uploaded!"
# fi