-
Notifications
You must be signed in to change notification settings - Fork 0
79 lines (70 loc) · 2.64 KB
/
docker_pol1_red_0101.yaml
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
name: "RED: Docker Pol 1: 0101"
on:
workflow_dispatch:
push:
branches:
- "test"
tags:
- "all"
- "pol1"
- "pol1-r"
# System Input Signal: 01
env:
# 1
CI_TESTS_RUN: true
# 0
CI_TESTS_PASS: false
jobs:
setup_case_0101:
runs-on: ubuntu-latest
outputs:
SHOULD_RUN_CI_TESTS: ${{ steps.check_if_ci_tests_should_be_skipped.outputs.SHOULD_RUN_CI_TESTS }}
steps:
- name: check_if_ci_tests_should_be_skipped
id: check_if_ci_tests_should_be_skipped
run: echo "SHOULD_RUN_CI_TESTS=$CI_TESTS_RUN" >> $GITHUB_OUTPUT
mock_failed_ci_test_job:
runs-on: ubuntu-latest
needs: setup_case_0101
if: ${{ needs.setup_case_0101.outputs.SHOULD_RUN_CI_TESTS == 'true' }}
steps:
- run: exit ${{ env.CI_TESTS_PASS == 'true' && 0 || 1 }}
call_docker_job_after_ci_fail:
needs: mock_failed_ci_test_job
if: always()
uses: boromir674/automated-workflows/.github/workflows/docker.yml@test
with:
DOCKER_USER: ${{ vars.DOCKER_USER }}
acceptance_policy: 1
tests_pass: ${{ needs.mock_failed_ci_test_job.result == 'success' }}
tests_run: ${{ !contains(fromJSON('["skipped", "cancelled"]'), needs.mock_failed_ci_test_job.result) }}
image_slug: "cicd-test"
image_tag: "0101"
secrets:
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
verify_docker_image_pushed:
runs-on: ubuntu-latest
needs: call_docker_job_after_ci_fail
if: always()
steps:
- name: "Check Test Scenario Prerequisites Satisfied: Assert CI Tests Triggered, but Failed"
run: |
if [ ${CI_TESTS_RUN} != 'true' || ${CI_TESTS_PASS} != 'false' }} ]; then
echo "[ERROR] Test Scenario Incorrect: Prerequisites NOT satisfied"
echo "[DEBUG] Test assumes CI Test Job Triggered, and Failed."
echo "Prematurely, exiting Test Case with 1!"
exit 1
fi
- run: echo "IMAGE_REF=${{ needs.call_docker_job_after_ci_fail.outputs.image_ref }}" >> $GITHUB_ENV
- name: Assert PUSHED Image ${{ needs.call_docker_job_after_ci_fail.outputs.image_ref }}
run: |
command_exit_status=0
docker manifest inspect "$IMAGE_REF" || command_exit_status=1
if [ $command_exit_status -eq 0 ]; then
echo " --> PASS: Assert PUSH Docker Image "${IMAGE_REF}" to DockerHub"
test_case_status=0
else
echo " --> FAIL: Assert PUSH Docker Image "${IMAGE_REF}" to DockerHub"
test_case_status=1
fi
exit $test_case_status