test: Add option to run integration tests against minimal test accoun… #272
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: Integration Tests | |
on: | |
workflow_dispatch: | |
inputs: | |
use_minimal_test_account: | |
description: 'Use minimal test account' | |
required: false | |
default: 'false' | |
sha: | |
description: 'The hash value of the commit.' | |
required: false | |
default: '' | |
push: | |
branches: | |
- main | |
- dev | |
jobs: | |
integration-tests: | |
name: Run integration tests | |
runs-on: ubuntu-latest | |
steps: | |
- name: Clone Repository with SHA | |
if: ${{ inputs.sha != '' }} | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
submodules: 'recursive' | |
ref: ${{ inputs.sha }} | |
- name: Clone Repository without SHA | |
if: ${{ inputs.sha == '' }} | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
submodules: 'recursive' | |
- name: Update system packages | |
run: sudo apt-get update -y | |
- name: Setup Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.x' | |
- name: Install Python dependencies and update cert | |
run: | | |
pip install wheel boto3 && \ | |
pip install certifi -U && \ | |
pip install .[obj,dev] | |
- name: Download kubectl and calicoctl for LKE clusters | |
run: | | |
curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl" | |
curl -LO "https://github.com/projectcalico/calico/releases/download/v3.25.0/calicoctl-linux-amd64" | |
chmod +x calicoctl-linux-amd64 kubectl | |
mv calicoctl-linux-amd64 /usr/local/bin/calicoctl | |
mv kubectl /usr/local/bin/kubectl | |
- name: Install Package | |
run: make install | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Set LINODE_CLI_TOKEN | |
run: | | |
echo "LINODE_CLI_TOKEN=${{ secrets[inputs.use_minimal_test_account == 'true' && 'MINIMAL_LINODE_TOKEN' || 'LINODE_TOKEN'] }}" >> $GITHUB_ENV | |
- name: Run the integration test suite | |
run: | | |
timestamp=$(date +'%Y%m%d%H%M') | |
report_filename="${timestamp}_cli_test_report.xml" | |
make testint TEST_ARGS="--junitxml=${report_filename}" | |
- name: Apply Calico Rules to LKE | |
if: always() | |
run: | | |
cd scripts && ./lke_calico_rules_e2e.sh | |
env: | |
LINODE_TOKEN: ${{ env.LINODE_CLI_TOKEN }} | |
- name: Upload test results | |
if: always() | |
run: | | |
filename=$(ls | grep -E '^[0-9]{12}_cli_test_report\.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}" | |
sync | |
python 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 }} |