Skip to content

Commit 3744db2

Browse files
togashidmmadalazar
authored andcommitted
Add BM ansible tests for internal repo
These tests have the following behavior: When code is pushed only SCA runs. E2e tests will run when PR is created. After that, everytime that a code is pushed both workflows will run. Also, both have a cron job to run once a day at 1:00 am.
1 parent 97959c2 commit 3744db2

File tree

2 files changed

+171
-0
lines changed

2 files changed

+171
-0
lines changed

.github/workflows/BM-end-to-end.yaml

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
name: BM Ansible Script E2E Test
2+
3+
on:
4+
# This workflow would run at 1 AM every day
5+
schedule:
6+
- cron: '0 1 * * *'
7+
pull_request:
8+
branches: [ '**' ]
9+
10+
env:
11+
CI_CNO_ANSIBLE_FOLDER: /usr/src/ci_cno_ansible_telemetry_scheduler
12+
CI_CNO_TAS_FOLDER: /usr/src/telemetry-scheduler
13+
14+
jobs:
15+
# based on https://pwgen88.medium.com/getting-branch-name-in-github-actions-based-on-workflow-trigger-1d10b8515d37
16+
current_branch:
17+
runs-on: self-hosted-ansible
18+
outputs:
19+
extract_branch: ${{ steps.extract_branch.outputs.branch }}
20+
steps:
21+
- name: current branch
22+
id: extract_branch
23+
run: |
24+
if [[ "${GITHUB_EVENT_NAME}" == "push" ]]; then
25+
echo "::set-output name=BRANCH::$(echo ${GITHUB_REF#refs/heads/})"
26+
elif [[ "${GITHUB_EVENT_NAME}" == "pull_request" ]]; then
27+
echo "::set-output name=BRANCH::$(echo ${GITHUB_HEAD_REF})"
28+
elif [[ "${GITHUB_EVENT_NAME}" == "schedule" ]]; then
29+
echo "::set-output name=BRANCH::$(echo ${GITHUB_REF#refs/heads/})"
30+
else
31+
echo "::set-output name=BRANCH::INVALID_EVENT_BRANCH_UNKNOWN"
32+
fi
33+
pull-ci:
34+
name: Pull ansible based CI script
35+
runs-on: self-hosted-ansible
36+
env:
37+
CI_CNO_INTERIM_PATH: ./cno-ci
38+
steps:
39+
- name: Clean-up Ansible script folder
40+
run: rm -rvf ${{ env.CI_CNO_ANSIBLE_FOLDER }} && mkdir ${{ env.CI_CNO_ANSIBLE_FOLDER }}
41+
- name: Checkout ansible script repo
42+
uses: actions/checkout@v2
43+
with:
44+
repository: intel-sandbox/containers.orchestrators.kubernetes.cno-ci
45+
ref: dev/tas-e2e # repo branch for the tests scripts
46+
token: ${{ secrets.PASSWORD_PAT_CNO_CI }}
47+
path: ${{ env.CI_CNO_INTERIM_PATH }}
48+
# This step is needed as the runner will remove the content of its working directory before pulling files from another repo
49+
- name: Copy Ansible scripts folder to ${{ env.CI_CNO_ANSIBLE_FOLDER }} and clean-up intermediary dir
50+
run: mv ${{ env.CI_CNO_INTERIM_PATH }}/* ${{ env.CI_CNO_ANSIBLE_FOLDER }} && rm -rf ${{ env.CI_CNO_INTERIM_PATH }}
51+
pull-tas:
52+
name: Pull TAS code
53+
needs: [current_branch, pull-ci]
54+
runs-on: self-hosted-ansible
55+
steps:
56+
- name: Clean up TAS script folder
57+
run: rm -rvf ${{ env.CI_CNO_TAS_FOLDER }} && mkdir ${{ env.CI_CNO_TAS_FOLDER }}
58+
- name: Check branch name
59+
run: echo ${{ needs.current_branch.outputs.extract_branch }}
60+
- name: Checkout PAS repo
61+
uses: actions/checkout@v2
62+
with:
63+
ref: ${{ needs.current_branch.outputs.extract_branch }} # repo branch to pickup the code to run on the tests
64+
- name: Copy PAS repo to ${{ env.CI_CNO_TAS_FOLDER }}
65+
run: cp -r ./* ${{ env.CI_CNO_TAS_FOLDER }}
66+
runscripts:
67+
name: Run ansible scripts for E2E
68+
needs: [ pull-ci, pull-tas ]
69+
runs-on: self-hosted-ansible
70+
defaults:
71+
run:
72+
working-directory: ${{ env.CI_CNO_ANSIBLE_FOLDER }}
73+
env:
74+
CI_CNO_PLAYBOOK_COMMON_FOLDER: /usr/src/ci_cno_ansible_telemetry_scheduler/playbooks/common
75+
CI_CNO_PLAYBOOK_TAS_FOLDER: /usr/src/ci_cno_ansible_telemetry_scheduler/playbooks/tas
76+
ANSIBLE_TELEMETRY_FOLDER_DESTINATION_PARAM: "destination_dir=/usr/src/telemetry-scheduler"
77+
ANSIBLE_TAS_FOLDER_DESTINATION_PARAM: "destination_dir=/usr/src/telemetry-scheduler/telemetry-aware-scheduling/"
78+
steps:
79+
- name: BM Build & test TAS
80+
run: ansible-playbook -i ${{ env.CI_CNO_ANSIBLE_FOLDER }}/inventory_cni.ini ${{ env.CI_CNO_PLAYBOOK_TAS_FOLDER }}/build.yml -e ${{ env.ANSIBLE_TAS_FOLDER_DESTINATION_PARAM }}
81+
- name: BM Smoke Test
82+
run: ansible-playbook -i ${{ env.CI_CNO_ANSIBLE_FOLDER }}/inventory_cni.ini ${{ env.CI_CNO_PLAYBOOK_TAS_FOLDER }}/smokeTest.yml -e ${{ env.ANSIBLE_TAS_FOLDER_DESTINATION_PARAM }}
83+
- name: BM Clean-up
84+
run: ansible-playbook -i ${{ env.CI_CNO_ANSIBLE_FOLDER }}/inventory_cni.ini ${{ env.CI_CNO_PLAYBOOK_COMMON_FOLDER }}/commonCleanup.yml -e ${{ env.ANSIBLE_TELEMETRY_FOLDER_DESTINATION_PARAM }}
85+
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
name: BM Ansible Script SCA Test
2+
3+
on:
4+
# This workflow would run at 1 AM every day
5+
schedule:
6+
- cron: '0 1 * * *'
7+
push:
8+
branches: [ '**' ]
9+
10+
env:
11+
CI_CNO_ANSIBLE_FOLDER: /usr/src/ci_cno_ansible_telemetry_scheduler
12+
CI_CNO_TAS_FOLDER: /usr/src/telemetry-scheduler-sca
13+
14+
jobs:
15+
# based on https://pwgen88.medium.com/getting-branch-name-in-github-actions-based-on-workflow-trigger-1d10b8515d37
16+
current_branch:
17+
runs-on: self-hosted-ansible
18+
outputs:
19+
extract_branch: ${{ steps.extract_branch.outputs.branch }}
20+
steps:
21+
- name: current branch
22+
id: extract_branch
23+
run: |
24+
if [[ "${GITHUB_EVENT_NAME}" == "push" ]]; then
25+
echo "::set-output name=BRANCH::$(echo ${GITHUB_REF#refs/heads/})"
26+
elif [[ "${GITHUB_EVENT_NAME}" == "pull_request" ]]; then
27+
echo "::set-output name=BRANCH::$(echo ${GITHUB_HEAD_REF})"
28+
elif [[ "${GITHUB_EVENT_NAME}" == "schedule" ]]; then
29+
echo "::set-output name=BRANCH::$(echo ${GITHUB_REF#refs/heads/})"
30+
else
31+
echo "::set-output name=BRANCH::INVALID_EVENT_BRANCH_UNKNOWN"
32+
fi
33+
pull-ci:
34+
name: Pull ansible based CI script
35+
runs-on: self-hosted-ansible
36+
env:
37+
CI_CNO_INTERIM_PATH: ./cno-ci
38+
steps:
39+
- name: Clean-up Ansible script folder
40+
run: rm -rvf ${{ env.CI_CNO_ANSIBLE_FOLDER }} && mkdir ${{ env.CI_CNO_ANSIBLE_FOLDER }}
41+
- name: Checkout ansible script repo
42+
uses: actions/checkout@v2
43+
with:
44+
repository: intel-sandbox/containers.orchestrators.kubernetes.cno-ci
45+
ref: dev/tas-e2e # repo branch for the tests scripts
46+
token: ${{ secrets.PASSWORD_PAT_CNO_CI }}
47+
path: ${{ env.CI_CNO_INTERIM_PATH }}
48+
# This step is needed as the runner will remove the content of its working directory before pulling files from another repo
49+
- name: Copy Ansible scripts folder to ${{ env.CI_CNO_ANSIBLE_FOLDER }} and clean-up intermediary dir
50+
run: mv ${{ env.CI_CNO_INTERIM_PATH }}/* ${{ env.CI_CNO_ANSIBLE_FOLDER }} && rm -rf ${{ env.CI_CNO_INTERIM_PATH }}
51+
pull-tas:
52+
name: Pull TAS code
53+
needs: [current_branch, pull-ci]
54+
runs-on: self-hosted-ansible
55+
steps:
56+
- name: Clean up TAS script folder
57+
run: rm -rvf ${{ env.CI_CNO_TAS_FOLDER }} && mkdir ${{ env.CI_CNO_TAS_FOLDER }}
58+
- name: Check branch name
59+
run: echo ${{ needs.current_branch.outputs.extract_branch }}
60+
- name: Checkout PAS repo
61+
uses: actions/checkout@v2
62+
with:
63+
ref: ${{ needs.current_branch.outputs.extract_branch }} # repo branch to pickup the code to run on the tests
64+
- name: Copy PAS repo to ${{ env.CI_CNO_TAS_FOLDER }}
65+
run: cp -r ./* ${{ env.CI_CNO_TAS_FOLDER }}
66+
runscripts:
67+
name: Run ansible scripts for SCA, Build & Test, mtls test
68+
needs: [ pull-ci, pull-tas ]
69+
runs-on: self-hosted-ansible
70+
defaults:
71+
run:
72+
working-directory: ${{ env.CI_CNO_ANSIBLE_FOLDER }}
73+
env:
74+
CI_CNO_PLAYBOOK_COMMON_FOLDER: /usr/src/ci_cno_ansible_telemetry_scheduler/playbooks/common
75+
CI_CNO_PLAYBOOK_TAS_FOLDER: /usr/src/ci_cno_ansible_telemetry_scheduler/playbooks/tas
76+
ANSIBLE_TELEMETRY_FOLDER_DESTINATION_PARAM: "destination_dir=/usr/src/telemetry-scheduler-sca"
77+
ANSIBLE_TAS_FOLDER_DESTINATION_PARAM: "destination_dir=/usr/src/telemetry-scheduler-sca/telemetry-aware-scheduling/"
78+
steps:
79+
- name: BM Build & test TAS
80+
run: ansible-playbook -i ${{ env.CI_CNO_ANSIBLE_FOLDER }}/inventory_cni.ini ${{ env.CI_CNO_PLAYBOOK_TAS_FOLDER }}/build.yml -e ${{ env.ANSIBLE_TAS_FOLDER_DESTINATION_PARAM }}
81+
- name: BM Static Analysis
82+
run: ansible-playbook -i ${{ env.CI_CNO_ANSIBLE_FOLDER }}/inventory_cni.ini ${{ env.CI_CNO_PLAYBOOK_COMMON_FOLDER }}/commonTest.yml -e ${{ env.ANSIBLE_TELEMETRY_FOLDER_DESTINATION_PARAM }}
83+
- name: BM mtlsTest
84+
run: ansible-playbook -i ${{ env.CI_CNO_ANSIBLE_FOLDER }}/inventory_cni.ini /${{ env.CI_CNO_PLAYBOOK_TAS_FOLDER }}/mtlsTest.yml -e ${{ env.ANSIBLE_TAS_FOLDER_DESTINATION_PARAM }}
85+
- name: BM Clean-up
86+
run: ansible-playbook -i ${{ env.CI_CNO_ANSIBLE_FOLDER }}/inventory_cni.ini ${{ env.CI_CNO_PLAYBOOK_COMMON_FOLDER }}/commonCleanup.yml -e ${{ env.ANSIBLE_TELEMETRY_FOLDER_DESTINATION_PARAM }}

0 commit comments

Comments
 (0)