Skip to content

Commit 1ae5692

Browse files
fixing azure file upload
1 parent 0bb0146 commit 1ae5692

2 files changed

Lines changed: 57 additions & 148 deletions

File tree

.github/workflows/build-codeql.yaml

Lines changed: 47 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -65,17 +65,16 @@ jobs:
6565
- name: Build all Windows queries
6666
shell: cmd
6767
run: .\codeql-cli\codeql.cmd query compile --check-only .\src
68-
68+
6969
test-query-health:
7070
runs-on: windows-latest
7171
needs: build
7272
permissions:
7373
contents: read
7474
packages: write
7575
env:
76-
CONNECTION_STRING: ${{ secrets.CONNECTION_STRING }}
76+
ACCOUNT_NAME: ${{ secrets.ACCOUNT_NAME }}
7777
SHARE_NAME: ${{ secrets.SHARE_NAME }}
78-
CONTAINER_NAME: ${{ secrets.CONTAINER_NAME }}
7978
steps:
8079
- name: Enable long git paths
8180
shell: cmd
@@ -108,14 +107,30 @@ jobs:
108107
pip install -r .\src\drivers\test\requirements.txt
109108
- name: Add msbuild to PATH
110109
uses: microsoft/setup-msbuild@v2
110+
111+
- name: Download previous results
112+
run: |
113+
az storage file download \
114+
--account-name "$env:ACCOUNT_NAME" \
115+
--share-name "$env:SHARE_NAME" \
116+
--path detailedfunctiontestresults.xlsx \
117+
--file azure-detailedfunctiontestresults.xlsx \
118+
--auth-mode login
119+
111120
- name: Run test script
112121
shell: pwsh
113-
if: ${{ env.CONNECTION_STRING != '' }}
114-
run: python src\drivers\test\build_create_analyze_test.py --codeql_path .\codeql-cli\codeql.exe --no_build --compare_results --connection_string "$env:CONNECTION_STRING" --share_name "$env:SHARE_NAME" --container_name "$env:CONTAINER_NAME" -v
115-
- name: Run test script without compare
116-
shell: pwsh
117-
if: ${{ env.CONNECTION_STRING == '' }}
118-
run: python src\drivers\test\build_create_analyze_test.py --codeql_path .\codeql-cli\codeql.exe --no_build -v
122+
run: python src\drivers\test\build_create_analyze_test.py --codeql_path .\codeql-cli\codeql.exe --no_build --compare_results -v
123+
124+
- name: Upload result diff
125+
if: ${{ hashFiles('diffdetailedfunctiontestresults.xlsx') != '' }} # Only upload if there are changes
126+
run: |
127+
az storage file upload \
128+
--account-name "$env:ACCOUNT_NAME" \
129+
--share-name "$env:SHARE_NAME" \
130+
--path diffdetailedfunctiontestresults.xlsx \
131+
--file diffdetailedfunctiontestresults.xlsx \
132+
--auth-mode login \
133+
exit 1
119134
120135

121136
test-codeql-latest-vs-current:
@@ -127,14 +142,9 @@ jobs:
127142
contents: read
128143
packages: write
129144
env:
130-
CONNECTION_STRING: ${{ secrets.CONNECTION_STRING }}
145+
ACCOUNT_NAME: ${{ secrets.ACCOUNT_NAME }}
131146
SHARE_NAME: ${{ secrets.SHARE_NAME }}
132-
CONTAINER_NAME: ${{ secrets.CONTAINER_NAME }}
133147
steps:
134-
- name: Check Env
135-
shell: pwsh
136-
if: ${{ env.CONNECTION_STRING == '' }}
137-
run: exit 1
138148
- name: Check Prev Job
139149
if: ${{ needs.test-query-health.result == 'failure' }}
140150
shell: pwsh
@@ -171,9 +181,30 @@ jobs:
171181
pip install -r .\src\drivers\test\requirements.txt
172182
- name: Add msbuild to PATH
173183
uses: microsoft/setup-msbuild@v2
184+
185+
- name: Download previous results
186+
run: |
187+
az storage file download \
188+
--account-name "$env:ACCOUNT_NAME" \
189+
--share-name "$env:SHARE_NAME" \
190+
--path detailedfunctiontestresults.xlsx \
191+
--file azure-detailedfunctiontestresults.xlsx \
192+
--auth-mode login
193+
174194
- name: Run test script
175195
shell: pwsh
176-
run: python src\drivers\test\build_create_analyze_test.py --codeql_path .\codeql-cli\codeql.exe --no_build --compare_results --connection_string "$env:CONNECTION_STRING" --share_name "$env:SHARE_NAME" -v
196+
run: python src\drivers\test\build_create_analyze_test.py --codeql_path .\codeql-cli\codeql.exe --no_build --compare_results -v
197+
198+
- name: Upload result diff
199+
if: ${{ hashFiles('diffdetailedfunctiontestresults.xlsx') != '' }} # Only upload if there are changes
200+
run: |
201+
az storage file upload \
202+
--account-name "$env:ACCOUNT_NAME" \
203+
--share-name "$env:SHARE_NAME" \
204+
--path diffdetailedfunctiontestresults.xlsx \
205+
--file diffdetailedfunctiontestresults.xlsx \
206+
--auth-mode login \
207+
exit 1
177208
178209
test-pack-version-update:
179210
runs-on: windows-latest

src/drivers/test/build_create_analyze_test.py

Lines changed: 10 additions & 132 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,6 @@
1616
import openpyxl # Not directly used but this will make sure it is installed
1717
import argparse
1818

19-
from azure.storage.file import (
20-
ContentSettings,
21-
FileService,
22-
)
23-
from azure.storage.blob import (
24-
BlobServiceClient,
25-
BlobClient,
26-
ContainerClient
27-
)
28-
from azure.identity import DefaultAzureCredential
29-
from azure.data.tables import TableServiceClient
30-
3119
except ImportError as e:
3220
print("Import error: " + str(e) + "\nPlease install the required modules using pip install -r requirements.txt")
3321
exit(1)
@@ -141,67 +129,6 @@ def set_output_file(self, output_file):
141129
self.output_file = output_file
142130
def get_output_file(self):
143131
return self.output_file
144-
145-
def upload_blob_to_azure(file_name):
146-
"""
147-
Uploads a file to Azure Blob Storage.
148-
149-
Args:
150-
file_name (str): The name of the file to be uploaded.
151-
152-
Returns:
153-
None
154-
"""
155-
print("Uploading file to Azure: " + file_name)
156-
account_url = "https://"+ args.storage_account_name +".blob.core.windows.net"
157-
blob_service_client = BlobServiceClient(account_url, credential=args.storage_account_key)
158-
blob_client = blob_service_client.get_blob_client(container=args.container_name, blob=file_name)
159-
with open(file=file_name, mode="rb") as data:
160-
blob_client.upload_blob(data, overwrite=True)
161-
162-
def download_blob_from_azure(file_name):
163-
"""
164-
Downloads a blob from Azure Blob Storage.
165-
166-
Args:
167-
file_name (str): The name of the blob file to download.
168-
169-
Returns:
170-
None
171-
"""
172-
account_url = "https://"+ args.storage_account_name +".blob.core.windows.net"
173-
blob_service_client = BlobServiceClient(account_url, credential=args.storage_account_key)
174-
blob_client = blob_service_client.get_blob_client(container=args.container_name, blob=file_name)
175-
with open(file=file_name, mode="wb") as data:
176-
data.write(blob_client.download_blob().readall())
177-
178-
def upload_results_to_azure(file_to_upload, file_name, file_directory):
179-
"""
180-
Uploads the results to Azure.
181-
182-
Args:
183-
None
184-
185-
Returns:
186-
None
187-
"""
188-
print("Upload results to file share: " + file_to_upload)
189-
file_service = FileService(connection_string=args.connection_string)
190-
file_service.create_file_from_path(share_name=args.share_name, file_name=file_name, directory_name=file_directory, local_file_path=file_to_upload, content_settings=ContentSettings(content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'))
191-
192-
def download_file_from_azure(out_file_path, file_name, file_directory):
193-
"""
194-
Downloads a file from Azure.
195-
196-
Args:
197-
None
198-
199-
Returns:
200-
None
201-
"""
202-
file_service = FileService(connection_string=args.connection_string)
203-
file = file_service.get_file_to_path(share_name=args.share_name, file_name=file_name, directory_name=file_directory, file_path=out_file_path)
204-
return file.name
205132

206133
def get_git_root():
207134
"""
@@ -832,23 +759,8 @@ def compare_health_results(curr_results_path):
832759
Returns:
833760
None
834761
"""
835-
836-
if not args.connection_string or not args.share_name:
837-
raise Exception("Azure credentials not provided. Cannot compare results.")
838-
839-
try:
840-
prev_results = 'azure-'+curr_results_path
841-
print_conditionally("Downloading previous results from Azure: " + prev_results)
842-
_ = download_file_from_azure(out_file_path=prev_results,
843-
file_name=curr_results_path, file_directory="")
844-
845-
except Exception as e:
846-
if "ResourceNotFound" in str(e):
847-
print("No previous results found")
848-
exit(1)
849-
else:
850-
print("Error downloading previous results ")
851-
exit(1)
762+
763+
prev_results = 'azure-'+curr_results_path
852764

853765
prev_results_df = pd.read_excel(prev_results, index_col=0, sheet_name=0)
854766
prev_results_codeql_version_df = pd.read_excel(prev_results, index_col=0, sheet_name=1)
@@ -877,43 +789,16 @@ def compare_health_results(curr_results_path):
877789

878790
diff_results = curr_results_df.compare(prev_results_df, keep_shape=True, result_names=("Current", "Previous"))
879791

880-
with pd.ExcelWriter("diff" + curr_results_path) as writer:
881-
diff_results.to_excel(writer, sheet_name="Diff")
882-
local_codeql_version_df.to_excel(writer, sheet_name="Local CodeQL Version")
883-
local_codeql_packs_df.to_excel(writer, sheet_name="Local CodeQL Packs")
884-
local_system_info_df.to_excel(writer, sheet_name="Local System Info")
885-
prev_results_codeql_version_df.to_excel(writer, sheet_name="Last Stored CodeQL Version")
886-
prev_results_codeql_packs_df.to_excel(writer, sheet_name="Last Stored CodeQL Packs")
887-
prev_results_local_system_info_df.to_excel(writer, sheet_name="Last Stored System Info")
888-
print_conditionally("Saved diff results")
889-
890-
if not args.local_result_storage:
891-
# upload new results to Azure
892-
if args.overwrite_azure_results:
893-
print("!! Overwriting Azure results !!")
894-
print("Type 'yes' to confirm")
895-
confirm = input()
896-
if confirm != "yes":
897-
print("Exiting")
898-
exit(1)
899-
else:
900-
double_confirm = input("Are you sure?")
901-
if double_confirm != "yes":
902-
print("Exiting")
903-
exit(1)
904-
905-
if args.overwrite_azure_results:
906-
print_conditionally("Uploading results")
907-
upload_results_to_azure(file_to_upload=curr_results_path,
908-
file_name=curr_results_path, file_directory="")
909-
# upload diff to Azure
910-
print_conditionally("Uploading diff results")
911-
upload_results_to_azure(file_to_upload="diff" + curr_results_path,
912-
file_name="diff" + curr_results_path, file_directory="")
913-
914792
if not all(diff_results.isnull().all()) :
915793
print("Differences found in results!")
916-
exit(1)
794+
with pd.ExcelWriter("diff" + curr_results_path) as writer:
795+
diff_results.to_excel(writer, sheet_name="Diff")
796+
local_codeql_version_df.to_excel(writer, sheet_name="Local CodeQL Version")
797+
local_codeql_packs_df.to_excel(writer, sheet_name="Local CodeQL Packs")
798+
local_system_info_df.to_excel(writer, sheet_name="Local System Info")
799+
prev_results_codeql_version_df.to_excel(writer, sheet_name="Last Stored CodeQL Version")
800+
prev_results_codeql_packs_df.to_excel(writer, sheet_name="Last Stored CodeQL Packs")
801+
prev_results_local_system_info_df.to_excel(writer, sheet_name="Last Stored System Info")
917802
else:
918803
print("No differences found in results")
919804
# delete downloaded file
@@ -1011,14 +896,7 @@ def find_sln_file(path):
1011896
parser.add_argument('-i', '--individual_test', help='Run only the tests with <name> in the name', type=str, required=False)
1012897
parser.add_argument('-m', '--compare_results', help='Compare results to previous run', action='store_true', required=False)
1013898
parser.add_argument('--compare_results_no_build',help='Compare results to previous run',type=str,required=False,)
1014-
parser.add_argument('--container_name',help='Azure container name',type=str,required=False, )
1015-
parser.add_argument('--storage_account_name',help='Azure storage account name',type=str,required=False, )
1016-
parser.add_argument('--share_name', help='Azure share name',type=str,required=False,)
1017-
parser.add_argument('--storage_account_key',help='Azure storage account key',type=str,required=False, )
1018-
parser.add_argument('--connection_string', help='Azure connection string', type=str, required=False,)
1019-
parser.add_argument('--local_result_storage',help='Store results locally instead of in Azure',action='store_true',required=False,)
1020899
parser.add_argument('--codeql_path', help='Path to the codeql executable',type=str,required=False,)
1021-
parser.add_argument('--overwrite_azure_results', help='Overwrite Azure results',action='store_true',required=False,)
1022900
parser.add_argument('--build_database_only', help='Build database only',action='store_true',required=False,)
1023901
args = parser.parse_args()
1024902

0 commit comments

Comments
 (0)