Skip to content

Validation with Standalone Kepler #186

Validation with Standalone Kepler

Validation with Standalone Kepler #186

name: Validation with Standalone Kepler
on:
workflow_dispatch:
schedule:
- cron: '0 16 * * *'
permissions:
pull-requests: write
contents: write
repository-projects: write
packages: write
jobs:
Create-runner:
name: "Create Runner"
uses: ./.github/workflows/create_equinix_runner.yml
secrets: inherit
Install:
name: "Install"
needs: Create-runner
runs-on: self-hosted
continue-on-error: true
outputs:
runner-name: ${{ runner.name }}
steps:
- name: Setup runner
run: |
echo "This is runner: ${{ runner.name }}"
echo "Running on ${{ runner.arch }} ${{ runner.os }}"
# config ssh
sudo ssh-keygen -t rsa -b 4096 -f /root/.ssh/ansible_rsa -N ''
sudo cat ~/.ssh/ansible_rsa.pub >> ~/.ssh/authorized_keys
sudo echo "StrictHostKeyChecking no" >> ~/.ssh/config
# install ansible
sudo dnf -y install ansible-core python3-pip
sudo dnf install -y rhel-system-roles
sudo ansible-galaxy collection install prometheus.prometheus
sudo ansible-galaxy collection install community.crypto
sudo ansible-galaxy collection install community.libvirt
sudo ansible-config init --disabled | sed "s/;host_key_checking=True/host_key_checking=False/g" | sed "s/;private_key_file=/private_key_file=~\/.ssh\/ansible_rsa/g" | sed 's|;roles_path={{ ANSIBLE_HOME ~ "/roles:/usr/share/ansible/roles:/etc/ansible/roles" }}|roles_path={{ ANSIBLE_HOME ~ "/roles:/usr/share/ansible/roles:/etc/ansible/roles;/root/.ansible/collections/ansible_collections/community/libvirt/roles" }}|' > /etc/ansible/ansible.cfg
- name: List available RAPL domains
run: |
for file in $(sudo find -L /sys/class/powercap/intel-rapl -name name 2>/dev/null); do cat $file; done | sort -n| uniq | tee -a /tmp/rapl-domain-availability.txt
# expected typical output if all domains are supported
# - core
# - dram
# - package-0
# - psys # relatively new power management domain, only available after Skylake
# - uncore
- name: Checkout code
uses: actions/checkout@v3
- name: Run playbook
run: |
cd ${GITHUB_WORKSPACE}/ansible
cp roles/kvm_vm/files/meta-data /tmp/meta-data
cp cloud-init-script.sh /tmp/cloud-init-script.sh
echo "Create VM"
ansible-playbook -i inventory.yml kvm_playbook.yml
echo "Install SSH tunnel"
ansible-playbook ssh_tunnel_playbook.yml
echo "Install Prometheus"
ansible-playbook -i inventory.yml metrics_playbook.yml
echo "Install Kepler"
ansible-playbook -i inventory.yml kepler_playbook.yml
echo "Create ssh tunnel"
ansible-playbook -i inventory.yml ssh_tunnel_playbook.yml
- uses: actions/checkout@v4
- name: Setup tmate session
uses: mxschmitt/action-tmate@v3
# echo "Run validation test"
# ansible-playbook -vvv kepler_validator.yml
# echo "Checkout the report"
# ls /tmp
# cat /tmp/report-*.md || true
# # create a directory to store the artifacts, the directory is the current date
# set -x
# export DATE_STR=$(date +%Y-%m-%d)
# cd ${GITHUB_WORKSPACE}
# mkdir -p docs/validation/${DATE_STR}
# export KEPLER_TAG=$(ls -d /tmp/validator-* |tail -1 | sed 's/.*validator-//g')
# # copy the report to the directory
# mv /tmp/validator-${KEPLER_TAG}/ docs/validation/${DATE_STR}/
# mv /tmp/rapl-domain-availability.txt docs/validation/${DATE_STR}/validator-${KEPLER_TAG}/
# echo "| " ${DATE_STR} " | " ${KEPLER_TAG} " | [Report](validation/${DATE_STR}/validator-${KEPLER_TAG}/report-${KEPLER_TAG}.md) | [Artifacts](validation/${DATE_STR}/validator-${KEPLER_TAG}/artifacts) |" \
# >> docs/kepler-model-validation.md
# git config user.email "dependabot[bot]@users.noreply.github.com"
# git config user.name "dependabot[bot]"
# git add docs/*
# git commit -m "Add validation report for ${DATE_STR}" -s
# git push
# env:
# GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
#
# - name: Update model validation chart
# run: |
# export DATE_STR=$(date +%Y-%m-%d)
# cd ${GITHUB_WORKSPACE}
# cd docs/analytics
# python -m pip install --upgrade pip
# pip install -r requirements.txt
# python ./kepler_analytics.py
# # update git
# git config user.email "dependabot[bot]@users.noreply.github.com"
# git config user.name "dependabot[bot]"
# cd ${GITHUB_WORKSPACE}
# git add docs/analytics/*
# git add docs/kepler-model-validation-chart.md
# git commit -m "Add validation chart for ${DATE_STR}" -s
# git push
# env:
# GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
Cleanup:
name: "Cleanup"
needs: [Install]
uses: ./.github/workflows/clean_equinix_runner.yml
secrets: inherit
with:
runner_name: ${{ needs.Install.outputs.runner-name }}