CI: replace test execution handler with conditional (#504) #5
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Run Integration Tests | |
on: | |
workflow_dispatch: null | |
push: | |
branches: | |
- main | |
- dev | |
jobs: | |
run-tests: | |
runs-on: ubuntu-latest | |
env: | |
EXIT_STATUS: 0 | |
defaults: | |
run: | |
working-directory: .ansible/collections/ansible_collections/linode/cloud | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v3 | |
with: | |
path: .ansible/collections/ansible_collections/linode/cloud | |
fetch-depth: 0 | |
submodules: 'recursive' | |
- name: Update packages | |
run: sudo apt-get update -y | |
- name: Setup Python 3 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.x' | |
- name: Install dependencies | |
run: make deps | |
- name: Install ansible dependencies | |
run: ansible-galaxy collection install amazon.aws:==6.0.1 | |
- name: Install Collection | |
run: make install | |
- name: Replace Existing Keys | |
run: rm -rf ~/.ansible/test && mkdir -p ~/.ansible/test && ssh-keygen -m PEM -q -t rsa -N '' -f ~/.ansible/test/id_rsa | |
- name: Run Integration Tests | |
run: | | |
make testall | |
env: | |
LINODE_API_TOKEN: ${{ secrets.DX_LINODE_TOKEN }} | |
ANSIBLE_CALLBACKS_ENABLED: "junit" | |
- name: Upload Test Report as Artifact | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: xml-test-reports | |
if-no-files-found: ignore | |
path: '.ansible/collections/ansible_collections/linode/cloud/tests/output/junit' | |
retention-days: 1 | |
process-upload-report: | |
runs-on: ubuntu-latest | |
needs: [run-tests] | |
if: always() # Run even if previous job fails | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
submodules: 'recursive' | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.x' | |
- name: Install Python dependencies | |
run: pip3 install requests wheel boto3 | |
# Create directory if it doesn't exist | |
- name: Create output directory | |
run: mkdir -p tests/output/junit | |
- name: Download test report | |
uses: actions/download-artifact@v4 | |
with: | |
name: xml-test-reports # Specify the artifact name from the 'run-tests' job | |
path: tests/output/junit | |
continue-on-error: true # Continue even if artifact download fails | |
- name: Merge all test xmls in output directory | |
run: | | |
ls -R tests/output/junit | |
python tod_scripts/merge_ansible_results.py | |
- name: Add additional information to XML report | |
run: | | |
filename=$(ls | grep -E '^[0-9]{12}_ansible_merged\.xml$') | |
python tod_scripts/add_to_xml_test_report.py \ | |
--branch_name "${GITHUB_REF#refs/*/}" \ | |
--gha_run_id "$GITHUB_RUN_ID" \ | |
--gha_run_number "$GITHUB_RUN_NUMBER" \ | |
--xmlfile "${filename}" | |
- name: Upload test results to the bucket | |
run: | | |
filename=$(ls | grep -E '^[0-9]{12}_ansible_merged\.xml$') | |
python3 tod_scripts/test_report_upload_script.py "${filename}" | |
env: | |
LINODE_CLI_OBJ_ACCESS_KEY: ${{ secrets.LINODE_CLI_OBJ_ACCESS_KEY }} | |
LINODE_CLI_OBJ_SECRET_KEY: ${{ secrets.LINODE_CLI_OBJ_SECRET_KEY }} |