From 16ed98c88a26e2208764b019c16a4b2bef12f358 Mon Sep 17 00:00:00 2001 From: ykim-1 Date: Tue, 2 Jan 2024 15:06:48 -0800 Subject: [PATCH 1/5] remove old scripts and add submodule for upload scripts --- .github/workflows/test.yml | 14 +++-- .gitmodules | 3 + scripts/add_to_xml_test_report.py | 68 --------------------- scripts/test_report_upload_script.py | 90 ---------------------------- test_scripts | 1 + 5 files changed, 14 insertions(+), 162 deletions(-) create mode 100644 .gitmodules delete mode 100644 scripts/add_to_xml_test_report.py delete mode 100644 scripts/test_report_upload_script.py create mode 160000 test_scripts diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 90b88176d..2ddba0495 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -13,8 +13,14 @@ jobs: env: EXIT_STATUS: 0 steps: - - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 + - name: Clone Repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + submodules: 'recursive' + + - name: Set up Go + uses: actions/setup-go@v5 with: go-version: 'stable' - run: go version @@ -64,7 +70,7 @@ jobs: if: github.ref == 'refs/heads/main' && github.event_name == 'push' run: | filename=$(ls | grep -E '^[0-9]{12}_linodego_test_report\.xml$') - python scripts/add_to_xml_test_report.py \ + python test_scripts/add_to_xml_test_report.py \ --branch_name "${GITHUB_REF#refs/*/}" \ --gha_run_id "$GITHUB_RUN_ID" \ --gha_run_number "$GITHUB_RUN_NUMBER" \ @@ -77,7 +83,7 @@ jobs: LINODE_CLI_OBJ_SECRET_KEY: ${{ secrets.LINODE_CLI_OBJ_SECRET_KEY }} run: | report_filename=$(ls | grep -E '^[0-9]{12}_linodego_test_report\.xml$') - python3 scripts/test_report_upload_script.py "${report_filename}" + python3 test_scripts/test_report_upload_script.py "${report_filename}" - name: Test Execution Status Handler run: | diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..de4d3c4f8 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "test_scripts"] + path = test_scripts + url = https://github.com/linode/TOD-test-report-uploader.git diff --git a/scripts/add_to_xml_test_report.py b/scripts/add_to_xml_test_report.py deleted file mode 100644 index 60b105993..000000000 --- a/scripts/add_to_xml_test_report.py +++ /dev/null @@ -1,68 +0,0 @@ -import argparse -import xml.etree.ElementTree as ET -import requests - -latest_release_url = "https://api.github.com/repos/linode/linodego/releases/latest" - - -def get_release_version(): - url = latest_release_url - - try: - response = requests.get(url) - response.raise_for_status() # Check for HTTP errors - - release_info = response.json() - version = release_info["tag_name"] - - # Remove 'v' prefix if it exists - if version.startswith("v"): - version = version[1:] - - return str(version) - - except requests.exceptions.RequestException as e: - print("Error:", e) - except KeyError: - print("Error: Unable to fetch release information from GitHub API.") - - -# Parse command-line arguments -parser = argparse.ArgumentParser(description='Modify XML with workflow information') -parser.add_argument('--branch_name', required=True) -parser.add_argument('--gha_run_id', required=True) -parser.add_argument('--gha_run_number', required=True) -parser.add_argument('--release_tag', required=False) -parser.add_argument('--xmlfile', required=True) # Added argument for XML file path - -args = parser.parse_args() - -# Open and parse the XML file -xml_file_path = args.xmlfile -tree = ET.parse(xml_file_path) -root = tree.getroot() - -# Create new elements for the information -branch_name_element = ET.Element('branch_name') -branch_name_element.text = args.branch_name - -gha_run_id_element = ET.Element('gha_run_id') -gha_run_id_element.text = args.gha_run_id - -gha_run_number_element = ET.Element('gha_run_number') -gha_run_number_element.text = args.gha_run_number - -gha_release_tag_element = ET.Element('release_tag') -gha_release_tag_element.text = get_release_version() - -# Add the new elements to the root of the XML -root.append(branch_name_element) -root.append(gha_run_id_element) -root.append(gha_run_number_element) -root.append(gha_release_tag_element) - -# Save the modified XML -modified_xml_file_path = xml_file_path # Overwrite it -tree.write(modified_xml_file_path) - -print(f'Modified XML saved to {modified_xml_file_path}') diff --git a/scripts/test_report_upload_script.py b/scripts/test_report_upload_script.py deleted file mode 100644 index 4365561e1..000000000 --- a/scripts/test_report_upload_script.py +++ /dev/null @@ -1,90 +0,0 @@ -import boto3 -import sys -import os -import xml.etree.ElementTree as ET -from botocore.exceptions import NoCredentialsError - -ACCESS_KEY = os.environ.get('LINODE_CLI_OBJ_ACCESS_KEY') -SECRET_KEY = os.environ.get('LINODE_CLI_OBJ_SECRET_KEY') -BUCKET_NAME = 'dx-test-results' - -linode_obj_config = { - "aws_access_key_id": ACCESS_KEY, - "aws_secret_access_key": SECRET_KEY, - "endpoint_url": "https://us-southeast-1.linodeobjects.com", - "region_name": "us-southeast-1", -} - -def change_xml_report_to_tod_acceptable_version(file_name): - # Load the original XML file - tree = ET.parse(file_name) - root = tree.getroot() - - testsuites_element = root - - # total - total_tests = int(testsuites_element.get('tests')) if testsuites_element.get('tests') is not None else 0 - total_failures = int(testsuites_element.get('failures')) if testsuites_element.get('failures') is not None else 0 - total_errors = int(testsuites_element.get('errors')) if testsuites_element.get('errors') is not None else 0 - total_skipped = int(testsuites_element.get('skipped')) if testsuites_element.get('skipped') is not None else 0 - - # Create a new element with aggregated values - new_testsuites = ET.Element("testsuites") - new_testsuites.set("tests", str(total_tests)) - new_testsuites.set("failures", str(total_failures)) - new_testsuites.set("errors", str(total_errors)) - new_testsuites.set("skipped", str(total_skipped)) - - # Create a new element under - new_testsuite = ET.SubElement(new_testsuites, "testsuite", attrib=testsuites_element.attrib) - - for testcase in root.findall('.//testcase'): - new_testcase = ET.SubElement(new_testsuite, "testcase", attrib=testcase.attrib) - for child in testcase: - new_testcase.append(child) - - branch_name = ET.SubElement(new_testsuite, branch_name) - branch_name.text = root.find('branch_name').text - gha_run_id = ET.SubElement(new_testsuite, gha_run_id) - gha_run_id.text = root.find('gha_run_id').text - gha_run_number = ET.SubElement(new_testsuite, gha_run_number) - gha_run_number.text = root.find('gha_run_number').text - release_tag = ET.SubElement(new_testsuite, release_tag) - release_tag.text = root.find('release_tag').text - - # Save the new XML to a file - try: - new_tree = ET.ElementTree(new_testsuites) - - new_tree.write(file_name, encoding="UTF-8", xml_declaration=True) - - print("XML content successfully over-written to " + file_name) - - except Exception as e: - print("Error writing XML content:", str(e)) - -def upload_to_linode_object_storage(file_name): - try: - s3 = boto3.client('s3', **linode_obj_config) - - s3.upload_file(Filename=file_name, Bucket=BUCKET_NAME, Key=file_name) - - print(f'Successfully uploaded {file_name} to Linode Object Storage.') - - except NoCredentialsError: - print('Credentials not available. Ensure you have set your AWS credentials.') - - -if __name__ == '__main__': - if len(sys.argv) != 2: - print('Usage: python upload_to_linode.py ') - sys.exit(1) - - file_name = sys.argv[1] - - if not file_name: - print('Error: The provided file name is empty or invalid.') - sys.exit(1) - - change_xml_report_to_tod_acceptable_version(file_name) - upload_to_linode_object_storage(file_name) \ No newline at end of file diff --git a/test_scripts b/test_scripts new file mode 160000 index 000000000..83cc8ee20 --- /dev/null +++ b/test_scripts @@ -0,0 +1 @@ +Subproject commit 83cc8ee2081701686ce3e7cb9b970c168889f3c5 From b351b3fef8b4366a1d65aa32155bcc0ffa10a9f9 Mon Sep 17 00:00:00 2001 From: ykim-1 Date: Mon, 4 Mar 2024 10:03:29 -0800 Subject: [PATCH 2/5] separate lint from test.yml --- .github/workflows/pull_request.yml | 23 +++++++++++++++++++++++ .github/workflows/test.yml | 12 ------------ 2 files changed, 23 insertions(+), 12 deletions(-) create mode 100644 .github/workflows/pull_request.yml diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml new file mode 100644 index 000000000..4d052c079 --- /dev/null +++ b/.github/workflows/pull_request.yml @@ -0,0 +1,23 @@ +name: Pull Request +on: pull_request +jobs: + tests: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 + with: + go-version: 'stable' + - run: go version + + - name: Run tidy + run: make tidy + + - name: Run fmt + run: go fmt ./... + + - name: Run linter + run: make lint + + - name: Fail if changes + run: git diff-index --exit-code HEAD diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 092dbe7bc..7e547a0bc 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -25,18 +25,6 @@ jobs: go-version: 'stable' - run: go version - - name: Run tidy - run: make tidy - - - name: Run fmt - run: go fmt ./... - - - name: Fail if changes - run: git diff-index --exit-code HEAD - - - name: Run linter - run: make lint - - name: Update system packages run: sudo apt-get update -y From acaf7ac4f781affe1ea9109499a29699a4aadc33 Mon Sep 17 00:00:00 2001 From: ykim-1 Date: Mon, 4 Mar 2024 10:13:59 -0800 Subject: [PATCH 3/5] fix test.yml --- .github/workflows/test.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7e547a0bc..e973fec05 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -25,6 +25,15 @@ jobs: go-version: 'stable' - run: go version + - name: Run tidy + run: make tidy + + - name: Run fmt + run: go fmt ./... + + - name: Fail if changes + run: git diff-index --exit-code HEAD + - name: Update system packages run: sudo apt-get update -y From ad1c207173446ca50101a9c3fb9535483f752312 Mon Sep 17 00:00:00 2001 From: ykim-1 Date: Mon, 4 Mar 2024 10:24:00 -0800 Subject: [PATCH 4/5] update gitmodules --- .github/workflows/test.yml | 9 --------- tod_scripts | 2 +- 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e973fec05..7e547a0bc 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -25,15 +25,6 @@ jobs: go-version: 'stable' - run: go version - - name: Run tidy - run: make tidy - - - name: Run fmt - run: go fmt ./... - - - name: Fail if changes - run: git diff-index --exit-code HEAD - - name: Update system packages run: sudo apt-get update -y diff --git a/tod_scripts b/tod_scripts index eec4b9955..0bb98b047 160000 --- a/tod_scripts +++ b/tod_scripts @@ -1 +1 @@ -Subproject commit eec4b99557cef6f40e8b5b7de00357dc49fb041c +Subproject commit 0bb98b0477a92583efe27507d49ac8babac10476 From 059b391de343f6eddad91af1ad16c62f1646b23a Mon Sep 17 00:00:00 2001 From: ykim-1 Date: Mon, 4 Mar 2024 10:24:39 -0800 Subject: [PATCH 5/5] remove old git submodule --- test_scripts | 1 - 1 file changed, 1 deletion(-) delete mode 160000 test_scripts diff --git a/test_scripts b/test_scripts deleted file mode 160000 index 83cc8ee20..000000000 --- a/test_scripts +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 83cc8ee2081701686ce3e7cb9b970c168889f3c5