Skip to content

Commit 3740105

Browse files
[CI] Deploy CI
1 parent 1a3cad5 commit 3740105

File tree

1 file changed

+338
-0
lines changed

1 file changed

+338
-0
lines changed

.github/workflows/dispatch_release.yaml

Lines changed: 338 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,12 +117,344 @@ jobs:
117117
- name: Set up Docker Buildx
118118
uses: docker/setup-buildx-action@v2
119119

120+
- name: Login to Docker Hub
121+
uses: docker/login-action@v2
122+
with:
123+
username: ${{ secrets.DOCKER_USERNAME }}
124+
password: ${{ secrets.DOCKER_PASSWORD }}
125+
126+
- name: Build and push to pyengine
127+
uses: docker/build-push-action@v4
128+
with:
129+
context: .
130+
platforms: ${{ env.ARCH }}
131+
push: true
132+
tags: pyengine/${{ env.SERVICE }}:${{ env.VERSION }}
133+
134+
- name: Login to Docker Hub
135+
uses: docker/login-action@v2
136+
with:
137+
username: ${{ secrets.CLOUDFORET_DEV_DOCKER_USERNAME }}
138+
password: ${{ secrets.CLOUDFORET_DEV_DOCKER_PASSWORD }}
139+
140+
- name: Build and push to cloudforet
141+
uses: docker/build-push-action@v4
142+
with:
143+
context: .
144+
platforms: ${{ env.ARCH }}
145+
push: true
146+
tags: cloudforet/${{ env.SERVICE }}:${{ env.VERSION }}
147+
148+
- name: Notice when job fails
149+
if: failure()
150+
uses: 8398a7/action-slack@v3.2.0
151+
with:
152+
status: ${{job.status}}
153+
fields: repo,workflow,job
154+
author_name: Github Action Slack
155+
156+
notification:
157+
needs: docker
158+
runs-on: ubuntu-latest
159+
steps:
160+
- name: Slack
161+
if: always()
162+
uses: 8398a7/action-slack@v3.2.0
163+
with:
164+
status: ${{job.status}}
165+
fields: repo,message,commit,author,action,ref,workflow,job
166+
author_name: Github Action Slack
167+
name: "[Dispatch] Release"
168+
169+
on:
170+
workflow_dispatch:
171+
inputs:
172+
version:
173+
description: 'enter version(x.y.z)'
174+
required: true
175+
default: '2.0.0'
176+
container_arch:
177+
type: choice
178+
description: 'choose container architecture'
179+
default: linux/amd64,linux/arm64
180+
options:
181+
- "linux/amd64"
182+
- "linux/amd64,linux/arm64"
183+
184+
185+
env:
186+
VERSION: ${{ github.event.inputs.version }}
187+
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
188+
ARCH: ${{ github.event.inputs.container_arch }}
189+
190+
jobs:
191+
owner_check:
192+
if: github.repository_owner == 'cloudforet-io'
193+
runs-on: ubuntu-latest
194+
steps:
195+
- run: echo ${{ github.repository_owner }}
196+
condition_check:
197+
if: github.repository_owner == 'cloudforet-io'
198+
runs-on: ubuntu-latest
199+
needs: owner_check
200+
steps:
201+
- name: check version format
202+
run: |
203+
if [[ !(${{ env.VERSION }} =~ ^[0-9]\.[0-9]?[0-9]\.[0-9]?[0-9]$) ]];
204+
then
205+
echo "You entered an incorrect version format."
206+
exit 1
207+
fi
208+
- name: debugging
209+
run: |
210+
echo "major=$(echo ${{env.VERSION}} | cut -c 2- | cut -d'.' -f1)"
211+
echo "minor=$(echo ${{env.VERSION}} | cut -c 2- | cut -d'.' -f2)"
212+
echo "patch=$(echo ${{env.VERSION}} | cut -c 2- | cut -d'.' -f3)"
213+
- name: notice when job fails
214+
if: failure()
215+
uses: 8398a7/action-slack@v3.2.0
216+
with:
217+
status: ${{job.status}}
218+
fields: repo,workflow,job
219+
author_name: Github Action Slack
220+
221+
update_master_branch_version_file:
222+
needs: condition_check
223+
runs-on: ubuntu-latest
224+
steps:
225+
- uses: actions/checkout@v2
226+
with:
227+
token: ${{ secrets.PAT_TOKEN }}
228+
- name: update version file # That is used where the master_push actions
229+
run: |
230+
echo ${{ env.VERSION }} > src/VERSION
231+
git config user.name github-actions
232+
git config user.email github-actions@github.com
233+
git add .
234+
git commit -m "[CI/CD] release version ${{ env.VERSION }}"
235+
- name: push changes
236+
uses: ad-m/github-push-action@master
237+
with:
238+
github_token: ${{ secrets.PAT_TOKEN }}
239+
branch: master
240+
- name: notice when job fails
241+
if: failure()
242+
uses: 8398a7/action-slack@v3.2.0
243+
with:
244+
status: ${{job.status}}
245+
fields: repo,workflow,job
246+
author_name: Github Action Slack
247+
248+
tagging:
249+
needs: update_master_branch_version_file
250+
runs-on: ubuntu-latest
251+
steps:
252+
- uses: actions/checkout@v2
253+
with:
254+
token: ${{ secrets.PAT_TOKEN }}
255+
- name: git tagging
256+
run: |
257+
git tag ${{ env.VERSION }}
258+
git push origin "${{ env.VERSION }}"
259+
- name: notice when job fails
260+
if: failure()
261+
uses: 8398a7/action-slack@v3.2.0
262+
with:
263+
status: ${{job.status}}
264+
fields: repo,workflow,job
265+
author_name: Github Action Slack
266+
267+
docker:
268+
needs: tagging
269+
runs-on: ubuntu-latest
270+
steps:
271+
- name: Checkout
272+
uses: actions/checkout@v3
273+
with:
274+
token: ${{ secrets.PAT_TOKEN }}
275+
276+
- name: get service name
277+
run: |
278+
echo "SERVICE=$(echo ${{ github.repository }} | cut -d '/' -f2)" >> $GITHUB_ENV
279+
280+
- name: Set up QEMU
281+
uses: docker/setup-qemu-action@v2
282+
283+
- name: Set up Docker Buildx
284+
uses: docker/setup-buildx-action@v2
285+
286+
- name: Login to Docker Hub
287+
uses: docker/login-action@v2
288+
with:
289+
username: ${{ secrets.DOCKER_USERNAME }}
290+
password: ${{ secrets.DOCKER_PASSWORD }}
291+
292+
- name: Build and push to pyengine
293+
uses: docker/build-push-action@v4
294+
with:
295+
context: .
296+
platforms: ${{ env.ARCH }}
297+
push: true
298+
tags: pyengine/${{ env.SERVICE }}:${{ env.VERSION }}
299+
120300
- name: Login to Docker Hub
121301
uses: docker/login-action@v2
122302
with:
123303
username: ${{ secrets.CLOUDFORET_DEV_DOCKER_USERNAME }}
124304
password: ${{ secrets.CLOUDFORET_DEV_DOCKER_PASSWORD }}
125305

306+
- name: Build and push to cloudforet
307+
uses: docker/build-push-action@v4
308+
with:
309+
context: .
310+
platforms: ${{ env.ARCH }}
311+
push: true
312+
tags: cloudforet/${{ env.SERVICE }}:${{ env.VERSION }}
313+
314+
- name: Notice when job fails
315+
if: failure()
316+
uses: 8398a7/action-slack@v3.2.0
317+
with:
318+
status: ${{job.status}}
319+
fields: repo,workflow,job
320+
author_name: Github Action Slack
321+
322+
notification:
323+
needs: docker
324+
runs-on: ubuntu-latest
325+
steps:
326+
- name: Slack
327+
if: always()
328+
uses: 8398a7/action-slack@v3.2.0
329+
with:
330+
status: ${{job.status}}
331+
fields: repo,message,commit,author,action,ref,workflow,job
332+
author_name: Github Action Slack
333+
name: "[Dispatch] Release"
334+
335+
on:
336+
workflow_dispatch:
337+
inputs:
338+
version:
339+
description: 'enter version(x.y.z)'
340+
required: true
341+
default: '2.0.0'
342+
container_arch:
343+
type: choice
344+
description: 'choose container architecture'
345+
default: linux/amd64,linux/arm64
346+
options:
347+
- "linux/amd64"
348+
- "linux/amd64,linux/arm64"
349+
350+
351+
env:
352+
VERSION: ${{ github.event.inputs.version }}
353+
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
354+
ARCH: ${{ github.event.inputs.container_arch }}
355+
356+
jobs:
357+
owner_check:
358+
if: github.repository_owner == 'cloudforet-io'
359+
runs-on: ubuntu-latest
360+
steps:
361+
- run: echo ${{ github.repository_owner }}
362+
condition_check:
363+
if: github.repository_owner == 'cloudforet-io'
364+
runs-on: ubuntu-latest
365+
needs: owner_check
366+
steps:
367+
- name: check version format
368+
run: |
369+
if [[ !(${{ env.VERSION }} =~ ^[0-9]\.[0-9]?[0-9]\.[0-9]?[0-9]$) ]];
370+
then
371+
echo "You entered an incorrect version format."
372+
exit 1
373+
fi
374+
- name: debugging
375+
run: |
376+
echo "major=$(echo ${{env.VERSION}} | cut -c 2- | cut -d'.' -f1)"
377+
echo "minor=$(echo ${{env.VERSION}} | cut -c 2- | cut -d'.' -f2)"
378+
echo "patch=$(echo ${{env.VERSION}} | cut -c 2- | cut -d'.' -f3)"
379+
- name: notice when job fails
380+
if: failure()
381+
uses: 8398a7/action-slack@v3.2.0
382+
with:
383+
status: ${{job.status}}
384+
fields: repo,workflow,job
385+
author_name: Github Action Slack
386+
387+
update_master_branch_version_file:
388+
needs: condition_check
389+
runs-on: ubuntu-latest
390+
steps:
391+
- uses: actions/checkout@v2
392+
with:
393+
token: ${{ secrets.PAT_TOKEN }}
394+
- name: update version file # That is used where the master_push actions
395+
run: |
396+
echo ${{ env.VERSION }} > src/VERSION
397+
git config user.name github-actions
398+
git config user.email github-actions@github.com
399+
git add .
400+
git commit -m "[CI/CD] release version ${{ env.VERSION }}"
401+
- name: push changes
402+
uses: ad-m/github-push-action@master
403+
with:
404+
github_token: ${{ secrets.PAT_TOKEN }}
405+
branch: master
406+
- name: notice when job fails
407+
if: failure()
408+
uses: 8398a7/action-slack@v3.2.0
409+
with:
410+
status: ${{job.status}}
411+
fields: repo,workflow,job
412+
author_name: Github Action Slack
413+
414+
tagging:
415+
needs: update_master_branch_version_file
416+
runs-on: ubuntu-latest
417+
steps:
418+
- uses: actions/checkout@v2
419+
with:
420+
token: ${{ secrets.PAT_TOKEN }}
421+
- name: git tagging
422+
run: |
423+
git tag ${{ env.VERSION }}
424+
git push origin "${{ env.VERSION }}"
425+
- name: notice when job fails
426+
if: failure()
427+
uses: 8398a7/action-slack@v3.2.0
428+
with:
429+
status: ${{job.status}}
430+
fields: repo,workflow,job
431+
author_name: Github Action Slack
432+
433+
docker:
434+
needs: tagging
435+
runs-on: ubuntu-latest
436+
steps:
437+
- name: Checkout
438+
uses: actions/checkout@v3
439+
with:
440+
token: ${{ secrets.PAT_TOKEN }}
441+
442+
- name: get service name
443+
run: |
444+
echo "SERVICE=$(echo ${{ github.repository }} | cut -d '/' -f2)" >> $GITHUB_ENV
445+
446+
- name: Set up QEMU
447+
uses: docker/setup-qemu-action@v2
448+
449+
- name: Set up Docker Buildx
450+
uses: docker/setup-buildx-action@v2
451+
452+
- name: Login to Docker Hub
453+
uses: docker/login-action@v2
454+
with:
455+
username: ${{ secrets.DOCKER_USERNAME }}
456+
password: ${{ secrets.DOCKER_PASSWORD }}
457+
126458
- name: Build and push to pyengine
127459
uses: docker/build-push-action@v4
128460
with:
@@ -131,6 +463,12 @@ jobs:
131463
push: true
132464
tags: pyengine/${{ env.SERVICE }}:${{ env.VERSION }}
133465

466+
- name: Login to Docker Hub
467+
uses: docker/login-action@v2
468+
with:
469+
username: ${{ secrets.CLOUDFORET_DEV_DOCKER_USERNAME }}
470+
password: ${{ secrets.CLOUDFORET_DEV_DOCKER_PASSWORD }}
471+
134472
- name: Build and push to cloudforet
135473
uses: docker/build-push-action@v4
136474
with:

0 commit comments

Comments
 (0)