|
| 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