Skip to content

Commit b9c5931

Browse files
committed
codeql: Use app token for API requests
Make authenticated requests to prevent relying on the GitHub anyonymous API limit from potentially causing requests to fail. Signed-off-by: Michael Kubacki <[email protected]>
1 parent 29ded5b commit b9c5931

File tree

2 files changed

+36
-16
lines changed

2 files changed

+36
-16
lines changed

.sync/workflows/leaf/codeql-platform.yml

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ on:
3434
- main
3535
- release/*
3636
- dev/*
37-
pull_request:
37+
pull_request_target:
3838
branches:
3939
- main
4040
- release/*
@@ -165,38 +165,44 @@ jobs:
165165
- name: Get Cargo Tool Details
166166
id: get_cargo_tool_details
167167
shell: python
168+
env:
169+
AUTH_TOKEN: ${{ steps.app-token.outputs.token }}
168170
run: |
169171
import os
170172
import requests
171173
import sys
172174
import time
173175
174-
def get_response_with_retries(url, retries=5, wait_time=10):
176+
def get_response_with_retries(url, headers, retries=5, wait_time=10):
175177
for attempt in range(retries):
176-
response = requests.get(url)
178+
response = requests.get(url, headers=headers)
177179
if response.status_code == 200:
178180
return response
179-
print(f"::warning title=GitHub API Access Error!::Attempt {attempt + 1} failed. Retrying in {wait_time} seconds...")
181+
print(f"::warning title=GitHub API Access Error!::Attempt {attempt + 1} failed ({response.status_code}). Retrying in {wait_time} seconds...")
180182
time.sleep(wait_time)
181183
return response
182184
183185
GITHUB_REPO = "sagiegurari/cargo-make"
184186
api_url = f"https://api.github.com/repos/{GITHUB_REPO}/releases/tags/{{ sync_version.cargo_make }}"
187+
headers = {
188+
"Authorization": f"Bearer {os.environ['AUTH_TOKEN']}",
189+
"Accept": "application/vnd.github.v3+json"
190+
}
185191
186-
response = get_response_with_retries(api_url)
192+
response = get_response_with_retries(api_url, headers)
187193
if response.status_code == 200:
188194
build_release_id = response.json()["id"]
189195
else:
190-
print("::error title=GitHub Release Error!::Failed to get cargo-make release ID!")
196+
print(f"::error title=GitHub Release Error!::Failed to get cargo-make release ID! ({response.status_code})")
191197
sys.exit(1)
192198
193199
api_url = f"https://api.github.com/repos/{GITHUB_REPO}/releases/{build_release_id}"
194200
195-
response = get_response_with_retries(api_url)
201+
response = get_response_with_retries(api_url, headers)
196202
if response.status_code == 200:
197203
latest_cargo_make_version = response.json()["tag_name"]
198204
else:
199-
print("::error title=GitHub Release Error!::Failed to get cargo-make!")
205+
print(f"::error title=GitHub Release Error!::Failed to get cargo-make! ({response.status_code})")
200206
sys.exit(1)
201207
202208
cache_key = f'cargo-make-{latest_cargo_make_version}'

.sync/workflows/leaf/codeql.yml

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ on:
3333
- main
3434
- release/*
3535
- dev/*
36-
pull_request:
36+
pull_request_target:
3737
branches:
3838
- main
3939
- release/*
@@ -167,41 +167,55 @@ jobs:
167167
168168
{% endraw %}
169169

170+
- name: Generate Token
171+
id: app-token
172+
uses: actions/create-github-app-token@v2
173+
with:
174+
app-id: ${{ vars.MU_ACCESS_APP_ID }}
175+
private-key: ${{ secrets.MU_ACCESS_APP_PRIVATE_KEY }}
176+
owner: ${{ github.repository_owner }}
177+
170178
- name: Get Cargo Tool Details
171179
id: get_cargo_tool_details
172180
shell: python
181+
env:
182+
AUTH_TOKEN: ${{ steps.app-token.outputs.token }}
173183
run: |
174184
import os
175185
import requests
176186
import sys
177187
import time
178188
179-
def get_response_with_retries(url, retries=5, wait_time=10):
189+
def get_response_with_retries(url, headers, retries=5, wait_time=10):
180190
for attempt in range(retries):
181-
response = requests.get(url)
191+
response = requests.get(url, headers=headers)
182192
if response.status_code == 200:
183193
return response
184-
print(f"::warning title=GitHub API Access Error!::Attempt {attempt + 1} failed. Retrying in {wait_time} seconds...")
194+
print(f"::warning title=GitHub API Access Error!::Attempt {attempt + 1} failed ({response.status_code}). Retrying in {wait_time} seconds...")
185195
time.sleep(wait_time)
186196
return response
187197
188198
GITHUB_REPO = "sagiegurari/cargo-make"
189199
api_url = f"https://api.github.com/repos/{GITHUB_REPO}/releases/tags/{{ sync_version.cargo_make }}"
200+
headers = {
201+
"Authorization": f"Bearer {os.environ['AUTH_TOKEN']}",
202+
"Accept": "application/vnd.github.v3+json"
203+
}
190204
191-
response = get_response_with_retries(api_url)
205+
response = get_response_with_retries(api_url, headers)
192206
if response.status_code == 200:
193207
build_release_id = response.json()["id"]
194208
else:
195-
print("::error title=GitHub Release Error!::Failed to get cargo-make release ID!")
209+
print(f"::error title=GitHub Release Error!::Failed to get cargo-make release ID! ({response.status_code})")
196210
sys.exit(1)
197211
198212
api_url = f"https://api.github.com/repos/{GITHUB_REPO}/releases/{build_release_id}"
199213
200-
response = get_response_with_retries(api_url)
214+
response = get_response_with_retries(api_url, headers)
201215
if response.status_code == 200:
202216
latest_cargo_make_version = response.json()["tag_name"]
203217
else:
204-
print("::error title=GitHub Release Error!::Failed to get cargo-make!")
218+
print(f"::error title=GitHub Release Error!::Failed to get cargo-make! ({response.status_code})")
205219
sys.exit(1)
206220
207221
cache_key = f'cargo-make-{latest_cargo_make_version}'

0 commit comments

Comments
 (0)